Over 10,000 Vespas moved around the Colosseum and past the Roman Forum on Saturday, marking the 80th anniversary of the iconic scooter as enthusiasts gathered from continental Europe, northern England, San Francisco, Australia’s Gold Coast, the Philippines and more. The Piaggio company switched gears from making military vehicles to the iconic scooter at the end of World War ll. Vespas were partially designed as a vehicle that could be used by women and priests, so they could zipped around in long skirts. The anniversary events include a Vespa parade through the streets of Rome on Saturday. (AP Video: Andrea Rosa) Thousands of Vespas buzzed through Rome on Saturday, celebrating the scooter’s 80th anniversary. Enthusiasts from Europe, the US, Australia and the Philippines gathered to honor the iconic brand. Vespas became famous after featuring in films like “Roman Holiday.” 4 of 8 | Vespa enthusiasts parade in front of the Colosseum during celebrations for the 80th anniversary of the Vespa scooter, in Rome, Saturday, June 27, 2026. (AP Photo/Alessandra Tarantino) 5 of 8 | Vespa enthusiasts parade in front of the Colosseum during celebrations for the 80th anniversary of the Vespa scooter, in Rome, Saturday, June 27, 2026. (AP Photo/Alessandra Tarantino) 6 of 8 | U.S. high jumper John Thomas, of Cambridge, Mass., waves from a Vespa scooter with an unidentified official Olympic driver inside the Olympic Village, in Rome, Aug. 27, 1960. (AP Photo/Mike Stern, File) 7 of 8 | Natalie Dunand, a Vespa enthusiast from France, carries her dog Roxane as she arrives at the Vespa Village during celebrations for the 80th anniversary of the Vespa scooter in Rome, Thursday, June 25, 2026. (AP Photo/Alessandra Tarantino) 8 of 8 | Vespa enthusiasts parade during celebrations for the 80th anniversary of the Vespa scooter, in Rome, Saturday, June 27, 2026. (AP Photo/Alessandra Tarantino) Over 10,000 Vespas moved around the Colosseum and past the Roman Forum on Saturday, marking the 80th anniversary of the iconic scooter as enthusiasts gathered from continental Europe, northern England, San Francisco, Australia’s Gold Coast, the Philippines and more. Add AP News as your preferred source to see more of our stories on Google. Share Share Facebook Copy Link copied Print Email X LinkedIn Bluesky Flipboard Pinterest Reddit Read More Read More 2 of 8 The Piaggio company switched gears from making military vehicles to the iconic scooter at the end of World War ll. Vespas were partially designed as a vehicle that could be used by women and priests, so they could zipped around in long skirts. The anniversary events include a Vespa parade through the streets of Rome on Saturday. (AP Video: Andrea Rosa) Add AP News as your preferred source to see more of our stories on Google. Share Share Facebook Copy Link copied Print Email X LinkedIn Bluesky Flipboard Pinterest Reddit Read More Read More 3 of 8 Thousands of Vespas buzzed through Rome on Saturday, celebrating the scooter’s 80th anniversary. Enthusiasts from Europe, the US, Australia and the Philippines gathered to honor the iconic brand. Vespas became famous after featuring in films like “Roman Holiday.” Add AP News as your preferred source to see more of our stories on Google. Share Share Facebook Copy Link copied Print Email X LinkedIn Bluesky Flipboard Pinterest Reddit Read More 4 of 8 | Vespa enthusiasts parade in front of the Colosseum during celebrations for the 80th anniversary of the Vespa scooter, in Rome, Saturday, June 27, 2026. (AP Photo/Alessandra Tarantino) Vespa enthusiasts parade in front of the Colosseum during celebrations for the 80th anniversary of the Vespa scooter, in Rome, Saturday, June 27, 2026. (AP Photo/Alessandra Tarantino) Add AP News as your preferred source to see more of our stories on Google. Share Share Facebook Copy Link copied Print Email X LinkedIn Bluesky Flipboard Pinterest Reddit Read More 5 of 8 | Vespa enthusiasts parade in front of the Colosseum during celebrations for the 80th anniversary of the Vespa scooter, in Rome, Saturday, June 27, 2026. (AP Photo/Alessandra Tarantino) Vespa enthusiasts parade in front of the Colosseum during celebrations for the 80th anniversary of the Vespa scooter, in Rome, Saturday, June 27, 2026. (AP Photo/Alessandra Tarantino) Add AP News as your preferred source to see more of our stories on Google. Share Share Facebook Copy Link copied Print Email X LinkedIn Bluesky Flipboard Pinterest Reddit Read More 6 of 8 | U.S. high jumper John Thomas, of Cambridge, Mass., waves from a Vespa scooter with an unidentified official Olympic driver inside the Olympic Village, in Rome, Aug. 27, 1960. (AP Photo/Mike Stern, File) U.S. high jumper John Thomas, of Cambridge, Mass., waves from a Vespa scooter with an unidentified official Olympic driver inside the Olympic Village, in Rome, Aug. 27, 1960. (AP Photo/Mike Stern, File) Add AP News as your preferred source to see more of our stories on Google. Share Share Facebook Copy Link copied Print Email X LinkedIn Bluesky Flipboard Pinterest Reddit Read More 7 of 8 | Natalie Dunand, a Vespa enthusiast from France, carries her dog Roxane as she arrives at the Vespa Village during celebrations for the 80th anniversary of the Vespa scooter in Rome, Thursday, June 25, 2026. (AP Photo/Alessandra Tarantino) Natalie Dunand, a Vespa enthusiast from France, carries her dog Roxane as she arrives at the Vespa Village during celebrations for the 80th anniversary of the Vespa scooter in Rome, Thursday, June 25, 2026. (AP Photo/Alessandra Tarantino) Add AP News as your preferred source to see more of our stories on Google. Share Share Facebook Copy Link copied Print Email X LinkedIn Bluesky Flipboard Pinterest Reddit Read More 8 of 8 | Vespa enthusiasts parade during celebrations for the 80th anniversary of the Vespa scooter, in Rome, Saturday, June 27, 2026. (AP Photo/Alessandra Tarantino) Vespa enthusiasts parade during celebrations for the 80th anniversary of the Vespa scooter, in Rome, Saturday, June 27, 2026. (AP Photo/Alessandra Tarantino) Add AP News as your preferred source to see more of our stories on Google. Share Share Facebook Copy Link copied Print Email X LinkedIn Bluesky Flipboard Pinterest Reddit Read More By DAVID BILLER and TRISHA THOMAS Updated : , , Leer en español Add AP News on Google Add AP News as your preferred source to see more of our stories on Google. Share (function () { const counter = document.getElementById("scrollToComments"); const HEADER_OFFSET = 120; function findCommentsModule() { return document.querySelector('.vf3-comments, #vf-conversations, '); } function maybeShowCounter() { if (findCommentsModule()) { counter.style.display = "inline-flex"; } else { counter.style.display = "none"; } } // Show only when Viafoura is present maybeShowCounter(); // Watch DOM for late loads const observer = new MutationObserver(maybeShowCounter); observer.observe(document.documentElement, { childList: true, subtree: true }); // Scroll action counter.addEventListener("click", function () { const el = findCommentsModule(); if (!el) return; const top = el.getBoundingClientRect().top + window.scrollY - HEADER_OFFSET; window.scrollTo({ top, behavior: "smooth" }); }); })(); .thin-line-button { display: inline-flex; align-items: center; justify-content: center; border: 1px solid #ccc; height: 30px; padding: 0 10px; cursor: pointer; border-radius: 5px; background: none; text-align: center; font-size: 1.4rem; font-weight: 700; white-space: nowrap; flex-shrink: 0; color: inherit; transition: none; /* Remove animation effect */ } .thin-line-button { color: #000; background: white; } /* Remove hover effect */ .thin-line-button:hover { border: 1px solid #ccc; } .comment-icon { width: 20px; height: 20px; min-width: 20px; min-height: 20px; flex: 0 0 20px; object-fit: contain; display: inline-block; } .Page-actions-commentCounter .embed-caption { display: none; } .vf-comments-count.vf-is-logged-in { margin-left: 4px; } ROME (AP) — More than 10,000 Vespas putt-putt-putted around the Colosseum and past the Roman Forum on Saturday, marking the 80th anniversary of the iconic scooter. Enthusiasts came from all over; the AP spoke to people from across continental Europe, northern England, San Francisco, Australia’s Gold Coast, the Philippines and more. Vespa-borne visitors converged on the Eternal City’s cobblestone streets to celebrate a brand they likewise view as timeless. If for only a day, Ferrari and Ducati were forgotten as the little Vespa left them in its dust. “The passion for Vespa is for the Italian style, freedom, the ’60s,” said Natalie Dunand, a retiree from France who was celebrating her own 61st birthday, too. “I love it.” Vespa enthusiasts parade in front of the Colosseum during celebrations for the 80th anniversary of the Vespa scooter, in Rome, Saturday, June 27, 2026. (AP Photo/Alessandra Tarantino) Vespa enthusiasts parade in front of the Colosseum during celebrations for the 80th anniversary of the Vespa scooter, in Rome, Saturday, June 27, 2026. (AP Photo/Alessandra Tarantino) Add AP News as your preferred source to see more of our stories on Google. Share Share Facebook Copy Link copied Print Email X LinkedIn Bluesky Flipboard Pinterest Reddit Read More freestar.queue.push(function () { window.fsAdCount = window.fsAdCount + 1 || 0; let customChannel = '/dynamic_' + fsAdCount; let adList = document.querySelectorAll(".fs-feed-ad") let thisAd = adList; let randId = Math.random().toString(36).slice(2); thisAd.id = randId; let thisPlacement = fsAdCount == 0 ? "apnews_story_feed" : "apnews_story_feed_dynamic"; freestar.newAdSlots({ placementName: thisPlacement, slotId: randId }, customChannel); }); The two-wheeled vehicle to provoke a smileMade world-famous by the film “Roman Holiday” in 1953, when Gregory Peck gave Audrey Hepburn a romantic lift through Rome’s center, Vespas have since featured in others, including “The Talented Mr. Ripley” and more recently the animated “Luca.” With curved lines evoking a bygone era, plus an ability to produce smiles among onlookers, Vespa — which means “wasp” in Italian — is to two-wheeled transport what the Volkswagen Beetle is to cars. Photos show Vespa enthusiasts buzzing through Rome celebrating the little scooter’s 80th anniversary 1 MIN READ Luxury consumers seen nudging sector back to growth despite global tensions 1 MIN READ Gennaro Gattuso named as Lazio coach after Italy debacle 1 MIN READ Its invention was a bit of chance as Italy rebuilt from the rubble after World War II. Piaggio, a major aircraft manufacturer that saw its Pontedera factory destroyed by bombings, had to change gears. Downshifting considerably, Piaggio started churning out scooters. U.S. high jumper John Thomas, of Cambridge, Mass., waves from a Vespa scooter with an unidentified official Olympic driver inside the Olympic Village, in Rome, Aug. 27, 1960. (AP Photo/Mike Stern, File) U.S. high jumper John Thomas, of Cambridge, Mass., waves from a Vespa scooter with an unidentified official Olympic driver inside the Olympic Village, in Rome, Aug. 27, 1960. (AP Photo/Mike Stern, File) Add AP News as your preferred source to see more of our stories on Google. Share Share Facebook Copy Link copied Print Email X LinkedIn Bluesky Flipboard Pinterest Reddit Read More Women were among initial target clients, according to Davide Zanolini, Piaggio’s executive vice president of marketing, since they could ride them while wearing long skirts and without showing their legs. That’s reflected in the Vespa’s design. “The shape, the elegance. This very charming attitude of Vespa is much more of a lady than a man,” Zanolini told The Associated Press in an interview. That little two-wheeler helped kickstart Italy’s economy, and soon enough they were everywhere. Vespa enthusiasts parade in front of the Colosseum during celebrations for the 80th anniversary of the Vespa scooter, in Rome, Saturday, June 27, 2026. (AP Photo/Alessandra Tarantino) Vespa enthusiasts parade in front of the Colosseum during celebrations for the 80th anniversary of the Vespa scooter, in Rome, Saturday, June 27, 2026. (AP Photo/Alessandra Tarantino) Add AP News as your preferred source to see more of our stories on Google. Share Share Facebook Copy Link copied Print Email X LinkedIn Bluesky Flipboard Pinterest Reddit Read More An AP article from 1950 said that Vespas had become so prevalent that their “staccato exhaust racket” had downtown Rome sounding like the Indy 500. “There probably isn’t a noisier scooter in all the world,” it said. “Scooters darting loudly around Rome are said to impress motor-minded Americans as strongly as St. Peter’s or the Colosseum. The scooter quickly teaches visitors to look four ways at once at street crossings.” Such scenes have again become commonplace since Vespa aficionados started arriving on Thursday, flooding streets all over the city and with traveling groups making their presence known in matching T-shirts. The parking lot outside Rome’s Stadium of the Marbles on Thursday had rows upon rows of Vespas of all makes from the past eight decades. It was like a motorcycle rally — except adorable. Some Vespas featured flowers and stuffed animals. The Piaggio company switched gears from making military vehicles to the iconic scooter at the end of World War ll. Vespas were partially designed as a vehicle that could be used by women and priests, so they could zipped around in long skirts. The anniversary events include a Vespa parade through the streets of Rome on Saturday. (AP Video: Andrea Rosa) Dunand’s Westie terrier rode behind her, its fur cut short to cope with the heat. A man from Tokyo, with his 8-year-old daughter behind him, swapped his hometown club’s banner with an Italian. Others traded stickers. And the Vespa logo tattooed on a German man’s meaty left calf appeared next to three words in flowery cursive: “La Dolce Vita” — The Sweet Life. Aficionados spoke about how the brand taps into nostalgia for a certain time, even among those who weren’t alive then. Many also noted that they traded bigger motorcycles for nimbler and more manageable Vespas because they’re lighter and automatic, with the accelerator on the hand grip. “You get on, twist, go. Doddle. Easy,” said Andrew Walton, a 59-year-old truck driver who bought his first Vespa almost 20 years ago and never looked back. He had just spent eight days riding from Newcastle, first with a ferry to Rotterdam then following the Rhine River through Germany to Austria’s “Romantic Road”, and finally down along Italy’s coast. Once Rome’s mayor cut the ribbon at the Stadium of the Marbles, visitors streamed in singing, chanting, waving flags. Many made a beeline for the gift shop, where they could snap up anything from Vespa jackets and hats to Vespa blankets, Vespa water bottles and Vespa umbrellas. But most early comers had their eyes on the limited-edition helmet, with “80 Years of an Icon” emblazoned on its side. A photo retrospective showed Vespas in classic scenes — couples picnicking in a flowering field, seaside escapes with bikinis and a beachball, road trips under the Mediterranean sun — plus others one might not imagine, like explorer Soren Nielsen reaching the Arctic Circle on a Vespa in 1963. There were also pristine Vespas from Piaggio’s collection displayed like posing models to admire, and soaking up attention usually directed toward the nearby marbles with idealized physiques. The company has sold about 20 million Vespas worldwide since 1946, and today sells in 110 countries, Zanolini said. In the U.S., they’re popular in Florida and California and gaining traction in some other places like Austin. But it’s still a niche product in America, he said. Burke Sandman, whose family owns a 108-year-old car dealership in Indiana, told the AP in Rome that he bought his first Vespa about two decades ago — captivated by its sidecar. He quickly realized there were no resellers around and got in touch with Vespa to get in the game. He has since moved about 1,000 of them across the U.S., snagging 15 for himself. “No one ever says anything bad about a Vespa. You know, it’s crazy,” Sandman said inside the Vespa Village. “Everyone that trades other brands for a Vespa, they never go back. It’s just something about it. And everyone likes Italian stuff. I get a lot of people that come back from Europe, and they’ve got the bug.” Vespa enthusiasts parade during celebrations for the 80th anniversary of the Vespa scooter, in Rome, Saturday, June 27, 2026. (AP Photo/Alessandra Tarantino) Vespa enthusiasts parade during celebrations for the 80th anniversary of the Vespa scooter, in Rome, Saturday, June 27, 2026. (AP Photo/Alessandra Tarantino) Add AP News as your preferred source to see more of our stories on Google. Share Share Facebook Copy Link copied Print Email X LinkedIn Bluesky Flipboard Pinterest Reddit Read More ___ AP corporate archivist Sarit Hand contributed DAVID BILLER Biller has been AP’s Southern Europe news director since 2025, based in Rome. He was previously Brazil news director in Rio de Janeiro, where he lived for 12 years, and before that was reporting in Mexico and Chile. twitter mailto TRISHA THOMAS Thomas covers events throughout Southern Europe, Italy, and the Vatican for The Associated Press based in Rome. twitter instagram mailto window.vfQ = window.vfQ || ; // Tags that always block comments on ANY story, regardless of section. Example const COMMENT_BLOCK_TAGS = ; // Section name we care about (as it appears in ). // We'll normalize to lowercase, so "World News" -> "world news". const WORLD_NEWS_SECTION = 'world news'; // Tags that block comments ONLY when the story is in the World News section. const WORLD_NEWS_EXCLUSION_TAGS = ; window.vfQ = window.vfQ || ; // Zephr mod handling + prepublish + login failure handling setTimeout(() => { const all = document.querySelectorAll('.Zephr.Zephr-mod'); // If there's more than one of this element, delete the one with ID if (all.length > 1) { const withId = document.getElementById('viafoura-zephr-mod'); if (withId) withId.remove(); return } // prepublish → Zephr auth / walls handling window.vfQ.push(() => { if (!window.vf || typeof window.vf.$prepublish !== 'function') return; window.vf.$prepublish((channel, event, ...args) => { if (channel === 'authentication' && event === 'required') { window.vf.$publish && window.vf.$publish('tray', 'close'); window.Zephr?.openModal?.(); // window.location.href = `/login?target=${window.location.pathname}` return false; } else if (channel === 'walls' && event === 'post-attempt') { if (window.zephrQueue && typeof window.zephrQueue.enqueue === 'function') { window.zephrQueue.enqueue(async (zephr) => { if ( !zephr?.accessDetails?.authenticated || !window.Zephr?.openModal ) { return; } window.Zephr.openModal(); }); } return { channel, event, args }; } else { return { channel, event, args }; } }); }); // login failure → show ban message + tooltip window.vfQ.push(() => { if (!window.vf || typeof window.vf.$subscribe !== 'function') return; window.vf.$subscribe('login', 'failure', (errorContext) => { if (!errorContext) return; const isBanned = errorContext.error_key === 'login_banned'; if (!isBanned) return; let reasonText = 'Your account has been permanently banned from posting.'; if (errorContext.isPermanent === 0) { const date = new Date(errorContext.endDate); const formatted = date.toLocaleString('en-US', { month: 'short', day: 'numeric', year: 'numeric', hour: 'numeric', minute: '2-digit', hour12: true, }); reasonText = 'Your account has been banned from posting until ' + formatted; } waitForEditorWrapper((wrapper) => { if (wrapper && !document.querySelector('.vf-ban-container')) { const container = document.createElement('div'); container.className = 'vf-ban-container'; // Message const message = document.createElement('div'); message.className = 'vf-ban-message'; message.innerHTML = '❗' + '' + reasonText + ''; // Tooltip trigger if (errorContext.reason) { const tooltip = document.createElement('span'); tooltip.className = 'vf-ban-tooltip'; tooltip.textContent = ' — WHY WAS I BANNED?'; const tooltipContent = document.createElement('div'); tooltipContent.className = 'vf-ban-tooltip-content'; tooltipContent.textContent = errorContext.reason; tooltip.appendChild(tooltipContent); message.appendChild(tooltip); } container.appendChild(message); wrapper.parentNode.insertBefore(container, wrapper.nextSibling); } }); }); }); }, 50); function waitForEditorWrapper(callback, maxTries = 50, interval = 100) { let tries = 0; const iv = setInterval(() => { const wrapper = document.querySelector('.vf-new-content__content-editor-wrapper'); if (wrapper) { clearInterval(iv); callback(wrapper); } else if (++tries >= maxTries) { clearInterval(iv); } }, interval); } function pageHasBlockedTag(tagsToBlock = COMMENT_BLOCK_TAGS) { const metas = Array.from( document.querySelectorAll(', 'meta' ].join(',')) ); const pageTags = metas .map(m => (m.getAttribute('content') || '')) .flatMap(c => c.split(',')) .map(s => s.trim().toLowerCase()) .filter(Boolean); const blockSet = new Set( (tagsToBlock || ).map(t => String(t).trim().toLowerCase()).filter(Boolean) ); return pageTags.some(t => blockSet.has(t)); } function getPageSection() { // Look for // or just in case. const meta = document.querySelector( 'meta, meta' ); if (!meta) return ''; return (meta.getAttribute('content') || '').trim().toLowerCase(); } function replaceBellIconInNav(container) { if (!container) return; const bellButtons = container.querySelectorAll( '.comment-nav-right .vf-tray-trigger.comment-nav-right__icon, .vf-tray-trigger' ); bellButtons.forEach((btn) => { if (btn.dataset.iconSwapped === '1') return; const bellSvg = btn.querySelector('.vf-icon_bell_icon'); if (bellSvg) bellSvg.remove(); const img = document.createElement('img'); img.src = 'https://assets.apnews.com/75/e2/83fe757647f790e4a0bf06370f10/comment-2.png'; img.alt = 'Comments'; img.style.height = '24px'; img.style.width = '24px'; img.style.verticalAlign = 'middle'; img.setAttribute('data-ap-bell', '1'); // precise selector for dark-mode tweak btn.appendChild(img); btn.dataset.iconSwapped = '1'; }); } function injectNoticeInContainer(container) { if (!container) return false; if (container.querySelector('.vf-guidelines-notice')) return true; const header = container.querySelector('.vf-comment-header'); if (!header) return false; const notice = document.createElement('div'); notice.className = 'vf-guidelines-notice'; notice.innerHTML = 'All comments are subject to our ' + 'Community Guidelines.' + 'Please note that comments are not moderated immediately — every post is reviewed before appearing publicly to ensure it meets our community guidelines. This means there may be a delay before your comment is visible.'; header.parentNode.insertBefore(notice, header.nextSibling); return true; } function hideFloatingBellButton() { document.querySelectorAll('.vf-tray-trigger--floating').forEach((btn) => { btn.style.display = 'none'; }); } function moveTrendingAboveCommentsFooter() { const trendingHost = document.getElementById('ap-trending-host'); if (!trendingHost || trendingHost.dataset.moved === '1') return; const footer = document.querySelector('#vf-conversations > div > section > div > footer'); if (footer && footer.parentNode) { footer.parentNode.insertBefore(trendingHost, footer); trendingHost.dataset.moved = '1'; } } function onCommentingLoaded() { const container = document.getElementById('ap-comments'); if (!container) return; injectNoticeInContainer(container); replaceBellIconInNav(container); moveTrendingAboveCommentsFooter(); } function wireViafoura() { if (window.vf && typeof window.vf.$subscribe === 'function') { window.vf.$subscribe('commenting', 'loaded', onCommentingLoaded); } } /* ----------------- DARK THEME HANDLING ----------------- */ function isDarkColor(rgb) { if (!rgb) return false; const m = rgb.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/i); if (!m) return false; const r = +m, g = +m, b = +m; const lum = (0.2126*r + 0.7152*g + 0.0722*b) / 255; return lum < 0.5; } function shouldUseDarkTheme() { if (document.querySelector('')) return true; const carrier = document.querySelector('') || document.body || document.documentElement; const bg = carrier ? getComputedStyle(carrier).backgroundColor : ''; return isDarkColor(bg); } function getEffectiveDarkBg() { const carrier = document.querySelector('') || document.body || document.documentElement; const bg = carrier ? getComputedStyle(carrier).backgroundColor : ''; return bg && bg !== 'rgba(0, 0, 0, 0)' && bg !== 'transparent' ? bg : '#0b0b0b'; } // NEW: normalize dropdown/menu background in dark mode (solid dark, non-transparent) function fixDarkModeDropdowns() { if (!shouldUseDarkTheme()) return; const bg = getEffectiveDarkBg(); const text = 'rgba(255,255,255,0.85)'; const dropdowns = document.querySelectorAll( ',,.vf-dropdown__menu,.vf-select__menu' ); dropdowns.forEach((el) => { const cs = getComputedStyle(el); const bgColor = cs.backgroundColor; // Only fix ones that are effectively transparent / not already dark if ( bgColor === 'rgba(0, 0, 0, 0)' || bgColor === 'transparent' ) { el.style.setProperty('--default-color', bg); el.style.setProperty('--background-color', bg); el.style.setProperty('--light-text-on-default-color', text); el.style.setProperty('--dark-text-on-default-color', '#ffffff'); el.style.setProperty('--light-text-on-background-color', text); el.style.setProperty('--dark-text-on-background-color', '#ffffff'); el.style.backgroundColor = bg; el.style.color = text; } }); } function applyDarkThemeIfNeeded() { const container = document.getElementById('ap-comments'); if (!container) return; const useDark = shouldUseDarkTheme(); const bg = useDark ? getEffectiveDarkBg() : null; container.classList.toggle('ap-comments--dark', useDark); if (useDark) { container.style.setProperty('--apc-bg', bg); container.style.setProperty('--apc-text', '#e8e8e8'); container.style.setProperty('--apc-link', '#9ecbff'); container.setAttribute('data-theme', 'dark'); container.style.setProperty('background', 'var(--apc-bg)', 'important'); // Normalize Viafoura / AP-style variables INSIDE the comments container container.style.setProperty('--default-color', bg); container.style.setProperty('--background-color', bg); container.style.setProperty('--light-text-on-default-color', 'rgba(255, 255, 255, 0.8)'); container.style.setProperty('--dark-text-on-default-color', '#ffffff'); container.style.setProperty('--light-text-on-background-color', 'rgba(255, 255, 255, 0.8)'); container.style.setProperty('--dark-text-on-background-color', '#ffffff'); } else { container.removeAttribute('data-theme'); container.style.removeProperty('background'); .forEach(v => container.style.removeProperty(v)); } const elConv = document.getElementById('vf-conv'); const elTrend = document.getElementById('vf-trending'); const realConv = document.querySelector('#vf-conversations'); const realTrend = document.querySelector('#vf-trending-articles'); .forEach(el => { if (!el) return; if (useDark) { el.setAttribute('data-vf-theme', 'dark'); el.setAttribute('vf-theme', 'dark'); el.setAttribute('theme', 'dark'); el.style.removeProperty('background'); el.style.color = 'var(--apc-text)'; } else { .forEach(a => el.removeAttribute(a)); el.style.removeProperty('background'); el.style.removeProperty('color'); } }); .forEach((root) => { if (!root) return; if (useDark) { root.classList.add('ap-vf-dark'); root.setAttribute('data-theme', 'dark'); } else { root.classList.remove('ap-vf-dark'); root.removeAttribute('data-theme'); } }); // fix dropdowns / sort menus any time theme is recalculated if (useDark) { fixDarkModeDropdowns(); } } const vfObserver = new MutationObserver(() => { applyDarkThemeIfNeeded(); }); (function bootComments() { const container = document.getElementById('ap-comments'); if (!container) return; // Initial theme & dropdown fix applyDarkThemeIfNeeded(); // --------- NEW: Global block tags (e.g. no_comment) ---------- // If the page has ANY of the COMMENT_BLOCK_TAGS, hide comments on all stories. if (pageHasBlockedTag(COMMENT_BLOCK_TAGS)) { container.innerHTML = ''; container.classList.remove('viafoura'); container.id = 'comments-hidden'; hideFloatingBellButton(); return; } // --------- NEW: Section-specific logic (World News) ---------- const section = getPageSection(); // Only apply this rule if the story is in World News. if (section === WORLD_NEWS_SECTION) { // If a World News story has any tag in WORLD_NEWS_EXCLUSION_TAGS (e.g. Israel), // hide the embed. Other sections with those tags are still allowed. if (pageHasBlockedTag(WORLD_NEWS_EXCLUSION_TAGS)) { container.innerHTML = ''; container.classList.remove('viafoura'); container.id = 'comments-hidden'; hideFloatingBellButton(); return; } } // --------- Existing Viafoura boot logic ---------- if (!window.vf && !document.querySelector('script')) { const s = document.createElement('script'); s.async = true; s.src = '//cdn.viafoura.net/entry/index.js'; document.head.appendChild(s); } if (document.readyState === 'complete' || document.readyState === 'interactive') { wireViafoura(); } else { document.addEventListener('DOMContentLoaded', wireViafoura); } (function startCappedRetry() { let tries = 0; const maxTries = 120; const iv = setInterval(() => { injectNoticeInContainer(container); replaceBellIconInNav(container); hideFloatingBellButton(); moveTrendingAboveCommentsFooter(); applyDarkThemeIfNeeded(); if (++tries >= maxTries) clearInterval(iv); }, 100); })(); try { vfObserver.observe(container, { childList: true, subtree: true }); } catch (e) {} })(); .vf-guidelines-notice { font-family: var(--primary-font, 'AP', sans-serif); font-size: 1.0em; color: #666; margin: 0 0 10px 0; padding-left: 4px; opacity: 0.85; line-height: 1.4; } .vf-guidelines-notice a { text-decoration: underline; font-weight: 500; } #vf-trending-articles > div > div > h2 { font-size: 14px !important; line-height: 1.2; text-transform: uppercase; } #vf-trending-articles p.vf-trending-article__comment-count { font-size: 16px !important; line-height: 1.1; } #comments-hidden { display: none; } /* ---------- Dark theme for AP comments ---------- */ #ap-comments.ap-comments--dark { --apc-bg: #0b0b0b; --apc-text: #e8e8e8; --apc-muted: #a7a7a7; --apc-border: #2a2a2a; --apc-link: #9ecbff; background: var(--apc-bg) !important; color: var(--apc-text); color-scheme: dark; } /* DO NOT touch every descendant’s colors anymore – that was killing badges/icons */ #ap-comments.ap-comments--dark a { color: var(--apc-link); } #ap-comments.ap-comments--dark a:hover, #ap-comments.ap-comments--dark a:focus { text-decoration: underline; } #ap-comments.ap-comments--dark hr, #ap-comments.ap-comments--dark .vf-divider, #ap-comments.ap-comments--dark .vf-comment + .vf-comment, #ap-comments.ap-comments--dark .vf-card { border-color: var(--apc-border) !important; } #ap-comments.ap-comments--dark .vf-guidelines-notice { color: var(--apc-muted); } #ap-comments.ap-comments--dark #vf-trending-articles > div > div > h2, #ap-comments.ap-comments--dark p.vf-trending-article__comment-count { color: var(--apc-text) !important; } #ap-comments.ap-comments--dark #vf-conversations.ap-vf-dark, #ap-comments.ap-comments--dark #vf-trending-articles.ap-vf-dark { background: transparent !important; color: var(--apc-text) !important; color-scheme: dark; } #ap-comments.ap-comments--dark #vf-conversations, #ap-comments.ap-comments--dark #vf-trending-articles { background-color: var(--apc-bg) !important; } /* Removed “*:not(input)” background/color override so badges keep their own colors */ #ap-comments.ap-comments--dark #vf-conversations section, #ap-comments.ap-comments--dark #vf-conversations article, #ap-comments.ap-comments--dark #vf-conversations header, #ap-comments.ap-comments--dark #vf-conversations footer, #ap-comments.ap-comments--dark #vf-conversations .vf-card, #ap-comments.ap-comments--dark #vf-trending-articles section, #ap-comments.ap-comments--dark #vf-trending-articles article, #ap-comments.ap-comments--dark #vf-trending-articles header, #ap-comments.ap-comments--dark #vf-trending-articles footer, #ap-comments.ap-comments--dark #vf-trending-articles .vf-card { background-color: transparent !important; border-color: var(--apc-border) !important; } #ap-comments.ap-comments--dark .vf-content-editor-form, #ap-comments.ap-comments--dark .vf-editor-area { background-color: rgba(255,255,255,0.08) !important; border: 1px solid rgba(255,255,255,0.24) !important; border-radius: 6px !important; } #ap-comments.ap-comments--dark .vf-content-editor-input { color: var(--apc-text) !important; caret-color: var(--apc-text) !important; } #ap-comments.ap-comments--dark .vf-content-editor-input::placeholder { color: #cfcfcf !important; opacity: 1 !important; } #ap-comments.ap-comments--dark .vf-content-editor-input:focus, #ap-comments.ap-comments--dark .vf-editor-area:focus-within { outline: none !important; border-color: rgba(255,255,255,0.36) !important; box-shadow: 0 0 0 2px rgba(255,255,255,0.12) !important; } #ap-comments.ap-comments--dark .vf-dropdown-button, #ap-comments.ap-comments--dark .vf-dropdown-button__text { background-color: transparent !important; color: var(--apc-text) !important; border-color: var(--apc-border) !important; } #ap-comments.ap-comments--dark .vf-dropdown-button:hover, #ap-comments.ap-comments--dark .vf-dropdown-button:focus { background-color: rgba(255,255,255,0.06) !important; } /* Only tweak the swapped bell icon in dark mode; leave other badges alone */ #ap-comments.ap-comments--dark .vf-tray-trigger img { filter: invert(1) hue-rotate(180deg) brightness(1.1); opacity: 1; mix-blend-mode: normal; } /* Ban message styles */ .vf-ban-container { margin: 10px 0 15px; padding: 10px 12px; border-radius: 4px; background-color: #fff3cd; border: 1px solid #ffeeba; } .vf-ban-message { font-family: var(--primary-font, 'AP', sans-serif); font-size: 0.95em; color: #856404; display: flex; align-items: center; flex-wrap: wrap; } .vf-ban-icon { margin-right: 8px; } .vf-ban-tooltip { margin-left: 4px; font-weight: 600; text-decoration: underline; cursor: pointer; position: relative; } .vf-ban-tooltip-content { display: none; position: absolute; z-index: 9999; top: 120%; left: 0; width: 260px; padding: 8px 10px; background: #fff; border: 1px solid #ccc; border-radius: 4px; font-weight: 400; text-decoration: none; color: #333; box-shadow: 0 2px 4px rgba(0,0,0,0.1); } .vf-ban-tooltip:hover .vf-ban-tooltip-content { display: block; }