91³Ô¹ÏÍø

Watch CBS News

Pirates unveil 2026 City Connect uniforms, paying homage to city's iconic bridges

The Pirates and Nike unveiled the team's 2026 City Connect uniforms on Thursday morning, and they will make their on-field debut on Friday, April 17, at PNC Park when the Pirates take on the Tampa Bay Rays. 

city-connect-3.jpg
A look at the Pirates' City Connect uniforms with the gold hat.  Harrison Barden / Pittsburgh Pirates

A release from the Pirates described the new uniforms as embracing "the city's unmistakable black and gold identity, celebrating a unified visual language shared across Pittsburgh's sports culture." 

The jerseys are an all-black base with gold lettering. The font of the lettering mirrors the design of Pittsburgh's sister bridges. There will also be two different hats that go with the uniforms: a gold hat with a black brim, and a secondary black hat with a gold brim. Both hats display the Jolly Roger logo with swords in the background. 

city-connect-16.jpg
Konnor Griffin in the Pirates' City Connect uniform Harrison Barden / Pittsburgh Pirates

"We believe this collaboration with Nike captures the same intensity our fans bring to PNC Park," said Pirates President Travis Williams. "This version of our City Connect jersey is rooted in the colors that connect our city, our people, and our team. They represent the same grit as our hardworking, proud, and determined community. These are confident colors, but not arrogant ones. They reflect a city that expects to compete and expects to win. The design is simple and powerful, while the accents and details are subtle in a way that feels uniquely Pirates and distinctly Pittsburgh."

The MLB, in collaboration with Nike, created the City Connect series in 2021 to celebrate the bond between team and city, and they made their debut in the 2023 season. 

Fans who want to purchase the new City Connect merchandise can do so inside the Pirates Fanatics Clubhouse Store at PNC Park, in the Nike App, and .

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=296763317a51cab90faa73f1bb146d5c'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });