<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:dcterms="http://purl.org/dc/terms/"
     xmlns:media="http://search.yahoo.com/mrss/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:cf="https://www.futureplc.com/rss/content-flags"
>
    <channel>
                    <atom:link href="https://www.pcgamer.com/feeds/tag/fps/" rel="self" type="application/rss+xml" />
                            <title><![CDATA[ Latest from PC Gamer in Fps ]]></title>
                <link>https://www.pcgamer.com/games/fps</link>
        <description><![CDATA[ All the latest fps content from the PC Gamer team ]]></description>
                                    <lastBuildDate>Wed, 04 Nov 2026 17:28:16 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ New Blood CEO would rather shut down the boomer shooter studio than sell out: 'In 20 years, we're done. I'm gonna say goodbye, shut it down' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>New Blood Interactive has been around for more than a decade—it's celebrating its 12 year anniversary, in fact—and is still going strong. Dusk, Gloomwood, Amid Evil, Fallen Aces, Ultrakill—it's got an enviable catalogue that continues to grow. But CEO Dave Oshry is still imagining how it might end. </p><p>By keeping the studio relatively small, letting everyone work remotely, and not<a href="https://www.pcgamer.com/games/fps/if-new-blood-had-made-dusk-2-thered-be-no-iron-lung-and-now-david-szymanski-has-got-a-movie-that-made-usd50-million-so-maybe-theres-wisdom-in-not-churning-out-sequels/" target="_blank"> putting all its eggs in a franchise basket</a> and spitting out endless sequels, it's been able to keep doing its thing. And that's the only way Oshry wants it to work. </p><p>"If we couldn't be successful doing it this way, I wouldn't want to do it at all," he tells us. "Rather than scrambling to find publisher money or investor money, I'd rather just shut it down and be like, 'We tried, we did our best, we made some cool games, that was it.' And I still want to do that. People are like, 'What's the end look like?' And I'm like, 'In 20 years, we're done. I'm gonna say goodbye, shut it down. Thanks for playing our games. That was fun. I'm gonna go fishing now.'"</p><p>Should New Blood start to struggle, Oshry has no interest in selling it to keep it alive. "I'm never gonna sell it. I'm never gonna give it to anybody else. It'll be our time." He'll be content, he says, if people remember its games fondly. "I hope people remember us like their favourite game studios from the '90s or 2000s. Except I don't want us to have the shitty ending like a lot of those studios had, where they got acquired or they went out of business. I want us to have a happy ending. I want us to go out on our terms."</p><p>It's a promise that hits a lot harder these days, with so many studios getting gobbled up and then being tossed aside. As October came to a close, <a href="https://www.pcgamer.com/gaming-industry/rip-bioware-ea-has-shut-down-the-legendary-rpg-developer/" target="_blank">EA killed off BioWare</a> after years of mismanagement. 30 years down the drain. Like countless studios that have been acquired by the likes of EA, Microsoft and Embracer, there was no happy ending. </p><p>Oshry describes the games industry as "a machine that requires product and labour, and that's not us". Instead, he prefers to think of New Blood as a band.</p><p>"Our games are our albums. We tour, we sell merchandise, and everybody plays their part. We're like an orchestra now, actually, more than a band. Because we got a lot of people, and a lot of musically inclined people. We're like the Trans-Siberian Orchestra at this point.</p><p>"Eventually the band's gonna get old, and we're gonna get tired, and we're gonna do our retirement tour, and we're gonna call it a day before we get sad. Before we're on stage and people are like, 'Ah, they're getting a little long in the tooth. They can't hit those high notes anymore.' So before that happens, I want to shut it down and enjoy my life."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><div class="product"><a data-dimension112="86b9375e-d872-11f1-978c-c30cd26a1d2d" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="86b9375e-d872-11f1-978c-c30cd26a1d2d" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/new-blood-ceo-would-rather-shut-down-the-boomer-shooter-studio-than-sell-out-in-20-years-were-done-im-gonna-say-goodbye-shut-it-down/</link>
                                                                            <description>
                            <![CDATA[ "I want us to have a happy ending. I want us to go out on our terms." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">jUuGsmZFSvWXSgMRHPFH96</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/LWJqcFFvfrZySZj5CgRwGL-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 04 Nov 2026 17:28:16 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Fraser Brown ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/wKNKbq8mrKbjjBvak9oDSh-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                        <dc:contributor><![CDATA[ Jeremy Peel ]]></dc:contributor>
                                                                    <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/LWJqcFFvfrZySZj5CgRwGL-1920-80.jpg">
                                                            <media:credit><![CDATA[New Blood]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Fallen Aces goon getting held up making surprised face]]></media:description>                                                            <media:text><![CDATA[Fallen Aces goon getting held up making surprised face]]></media:text>
                                <media:title type="plain"><![CDATA[Fallen Aces goon getting held up making surprised face]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/LWJqcFFvfrZySZj5CgRwGL-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>New Blood Interactive has been around for more than a decade—it's celebrating its 12 year anniversary, in fact—and is still going strong. Dusk, Gloomwood, Amid Evil, Fallen Aces, Ultrakill—it's got an enviable catalogue that continues to grow. But CEO Dave Oshry is still imagining how it might end. </p><p>By keeping the studio relatively small, letting everyone work remotely, and not<a href="https://www.pcgamer.com/games/fps/if-new-blood-had-made-dusk-2-thered-be-no-iron-lung-and-now-david-szymanski-has-got-a-movie-that-made-usd50-million-so-maybe-theres-wisdom-in-not-churning-out-sequels/" target="_blank"> putting all its eggs in a franchise basket</a> and spitting out endless sequels, it's been able to keep doing its thing. And that's the only way Oshry wants it to work. </p><p>"If we couldn't be successful doing it this way, I wouldn't want to do it at all," he tells us. "Rather than scrambling to find publisher money or investor money, I'd rather just shut it down and be like, 'We tried, we did our best, we made some cool games, that was it.' And I still want to do that. People are like, 'What's the end look like?' And I'm like, 'In 20 years, we're done. I'm gonna say goodbye, shut it down. Thanks for playing our games. That was fun. I'm gonna go fishing now.'"</p><p>Should New Blood start to struggle, Oshry has no interest in selling it to keep it alive. "I'm never gonna sell it. I'm never gonna give it to anybody else. It'll be our time." He'll be content, he says, if people remember its games fondly. "I hope people remember us like their favourite game studios from the '90s or 2000s. Except I don't want us to have the shitty ending like a lot of those studios had, where they got acquired or they went out of business. I want us to have a happy ending. I want us to go out on our terms."</p><p>It's a promise that hits a lot harder these days, with so many studios getting gobbled up and then being tossed aside. As October came to a close, <a href="https://www.pcgamer.com/gaming-industry/rip-bioware-ea-has-shut-down-the-legendary-rpg-developer/" target="_blank">EA killed off BioWare</a> after years of mismanagement. 30 years down the drain. Like countless studios that have been acquired by the likes of EA, Microsoft and Embracer, there was no happy ending. </p><p>Oshry describes the games industry as "a machine that requires product and labour, and that's not us". Instead, he prefers to think of New Blood as a band.</p><p>"Our games are our albums. We tour, we sell merchandise, and everybody plays their part. We're like an orchestra now, actually, more than a band. Because we got a lot of people, and a lot of musically inclined people. We're like the Trans-Siberian Orchestra at this point.</p><p>"Eventually the band's gonna get old, and we're gonna get tired, and we're gonna do our retirement tour, and we're gonna call it a day before we get sad. Before we're on stage and people are like, 'Ah, they're getting a little long in the tooth. They can't hit those high notes anymore.' So before that happens, I want to shut it down and enjoy my life."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><div class="product"><a data-dimension112="86b9375e-d872-11f1-978c-c30cd26a1d2d" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="86b9375e-d872-11f1-978c-c30cd26a1d2d" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Crowning the greatest FPS mode of all time through 1v1 combat—SEMIFINALS! ]]></title>
                                                                                                <dc:content><![CDATA[ <div  class="fancy-box"><div class="fancy_box-title">FOV 90</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cTeZTtGXV6uYdPks5D77R7" name="pcg_logo_fov90" caption="" alt="FOV 90 column" src="https://cdn.mos.cms.futurecdn.net/cTeZTtGXV6uYdPks5D77R7-1920-80.png" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude" /></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text">Welcome to FOV 90, an FPS column from staff writer Morgan Park. Every other week, I cover topics relevant to first-person shooter enjoyers, spanning everything from multiplayer and singleplayer to the old and the new.</p></div></div><p>Welcome back to a special election day edition of FOV 90, the only FPS column that insists American readers <strong>vote twice today</strong>—first on important videogame matters right here, then on crucial *gestures at everything else* matters at your <a href="https://www.vote.org/polling-place-locator/" target="_blank">designated polling place</a>.</p><p>Today we return from a totally planned hiatus, during which the PC Gamer community settled both the <a href="https://www.pcgamer.com/games/rts/after-a-month-of-voting-pc-gamer-readers-have-picked-the-best-rts-unit-of-all-time/" target="_blank">best RTS unit</a> and <a href="https://www.pcgamer.com/games/horror/the-votes-are-in-and-pc-gamer-readers-have-picked-the-scariest-game-on-pc/" target="_blank">best horror games</a>, to dispute an issue of far greater significance: The greatest FPS mode of all time. Round 2's matchups reflected an enthusiasm for classic team-based formats with a respectable turnout as well for modern arrivals like Battle Royale. I asked you to make some tough calls and you showed up.</p><p>Over <strong>2,500 votes</strong> were cast across <a href="https://www.pcgamer.com/games/fps/crowning-the-best-fps-mode-of-all-time-through-1v1-combat-round-2/" target="_blank">Round 2</a> matchups, and the results are in.</p><p>🥁drum roooooooooolllllllllllllll🥁</p><h2 class="article-body__section" id="section-round-2-results"><span>Round 2 Results</span></h2><ul><li><strong>Team Deathmatch (82%) wins</strong> over Battle Royale (18%)</li><li><strong>Conquest (63%)</strong> <strong>wins</strong> over Bomb Defusal (37%)</li><li><strong>Payload (77%) wins</strong> over Infection (23%)</li><li><strong>Capture the Flag (71%) wins</strong> over Attack &amp; Defend (29%)</li></ul><p>A decisive victory in each contest. Every mode I voted for came out on top, which I honestly didn't expect. Sure, TDM over Battle Royale makes sense, but an <em>82% majority</em> tells me that the most popular shooter format of today has not usurped the classics among PC Gamer readers (same). But even so, this is where I expected Conquest (a chaotic fight over territory) to accept a humble defeat to Bomb Defusal (the gold standard of competitive PvP). I'm glad I was wrong!</p><p>Not as much comment sparring went down this time, but I would like to highlight one reader comment that got me thinking:</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1006px;"><p class="vanilla-image-block" style="padding-top:34.49%;"><img id="c4eH8yRfMZtvSjajw54HCR" name="fps comment 1" alt="Commenter "JacksMolasses" shares a take on the popularity of battle royales, suggesting that "us old timers" are sick of battle royales because they require communication rather than lone wolves." src="https://cdn.mos.cms.futurecdn.net/c4eH8yRfMZtvSjajw54HCR-1920-80.jpg" mos="" align="middle" fullscreen="" width="1006" height="347" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And here's how PC Gamer's staff reacted to the results:</p><p>But alas, it's time to bury our dead and move on. Round 3 is on!</p><h2 class="article-body__section" id="section-the-bracket"><span>The Bracket</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1880px;"><p class="vanilla-image-block" style="padding-top:63.03%;"><img id="j8QCEgf2nzWSxSFtVAkKcm" name="bracket round 3" alt="FPS mode bracket round 3: Team Deathmatch versus Conquest and Payload versus Capture the Flag." src="https://cdn.mos.cms.futurecdn.net/j8QCEgf2nzWSxSFtVAkKcm-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1880" height="1185" attribution="" endorsement="" class="inline expandable" /><a href='https://cdn.mos.cms.futurecdn.net/j8QCEgf2nzWSxSFtVAkKcm-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Here are the lineups for Round 1. </span><span class="credit" itemprop="copyrightHolder">(Image credit: BracketHQ)</span></figcaption></figure><h2 id="round-3-vote">Round 3 - Vote!</h2><p>Read up on the matchups below and vote for your favorite. <strong>Round 3 voting closes on Sunday, November 8 at 11:59 PM PDT</strong>. The more votes we get, the more interesting the results, so tell your friends! Next week we'll be back to share the results and begin the FINALS.</p><h3 class="article-body__section" id="section-team-deathmatch-vs-conquest"><span>Team Deathmatch vs Conquest</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wx73nAqCRUfgpFYtAoVwqE" name="tdm vs conquest" alt="fov 90 fps mode tournament" src="https://cdn.mos.cms.futurecdn.net/wx73nAqCRUfgpFYtAoVwqE-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft, EA)</span></figcaption></figure><p><em>AKA: Team Slayer (Halo) // Warfare (Hell Let Loose)</em></p><p><strong>Intimate team-based action, or large-scale territory control?</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm91aX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm91aX.js" async=""></script><h3 class="article-body__section" id="section-payload-or-capture-the-flag"><span>Payload or Capture The Flag?</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="XHzhgBub5GBtDwu6wucmjE" name="payload vs ctf" alt="fov 90 fps mode tournament" src="https://cdn.mos.cms.futurecdn.net/XHzhgBub5GBtDwu6wucmjE-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Valve, Microsoft)</span></figcaption></figure><p><em>AKA: It's always Payload and CTF, because they're perfect names</em></p><p><strong>Two modes about escorting an object where the other team doesn't want it to go, but only one moves on.</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eA4v0X"></div>                            </div>                            <script src="https://kwizly.com/embed/eA4v0X.js" async=""></script> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/crowning-the-greatest-fps-mode-of-all-time-through-1v1-combat-semifinals/</link>
                                                                            <description>
                            <![CDATA[ Battle royale is dead. Bomb be gone. It only gets harder from here... ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">cuYGb2swBs69oDbaixhsQK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/YaMpuvXrbCsUQ5NSwnxLG4-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 03 Nov 2026 19:41:04 +0000</pubDate>                                                                                                                                <updated>Tue, 03 Nov 2026 21:36:43 +0000</updated>
                                                                                                                                            <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Morgan Park ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/VVB5GCgA3xLhkX8FVAWw5D-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/YaMpuvXrbCsUQ5NSwnxLG4-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[FOV 90 mode tournament]]></media:description>                                                            <media:text><![CDATA[FOV 90 mode tournament]]></media:text>
                                <media:title type="plain"><![CDATA[FOV 90 mode tournament]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/YaMpuvXrbCsUQ5NSwnxLG4-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">FOV 90</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cTeZTtGXV6uYdPks5D77R7" name="pcg_logo_fov90" caption="" alt="FOV 90 column" src="https://cdn.mos.cms.futurecdn.net/cTeZTtGXV6uYdPks5D77R7-1920-80.png" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude" /></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text">Welcome to FOV 90, an FPS column from staff writer Morgan Park. Every other week, I cover topics relevant to first-person shooter enjoyers, spanning everything from multiplayer and singleplayer to the old and the new.</p></div></div><p>Welcome back to a special election day edition of FOV 90, the only FPS column that insists American readers <strong>vote twice today</strong>—first on important videogame matters right here, then on crucial *gestures at everything else* matters at your <a href="https://www.vote.org/polling-place-locator/" target="_blank">designated polling place</a>.</p><p>Today we return from a totally planned hiatus, during which the PC Gamer community settled both the <a href="https://www.pcgamer.com/games/rts/after-a-month-of-voting-pc-gamer-readers-have-picked-the-best-rts-unit-of-all-time/" target="_blank">best RTS unit</a> and <a href="https://www.pcgamer.com/games/horror/the-votes-are-in-and-pc-gamer-readers-have-picked-the-scariest-game-on-pc/" target="_blank">best horror games</a>, to dispute an issue of far greater significance: The greatest FPS mode of all time. Round 2's matchups reflected an enthusiasm for classic team-based formats with a respectable turnout as well for modern arrivals like Battle Royale. I asked you to make some tough calls and you showed up.</p><p>Over <strong>2,500 votes</strong> were cast across <a href="https://www.pcgamer.com/games/fps/crowning-the-best-fps-mode-of-all-time-through-1v1-combat-round-2/" target="_blank">Round 2</a> matchups, and the results are in.</p><p>🥁drum roooooooooolllllllllllllll🥁</p><h2 class="article-body__section" id="section-round-2-results"><span>Round 2 Results</span></h2><ul><li><strong>Team Deathmatch (82%) wins</strong> over Battle Royale (18%)</li><li><strong>Conquest (63%)</strong> <strong>wins</strong> over Bomb Defusal (37%)</li><li><strong>Payload (77%) wins</strong> over Infection (23%)</li><li><strong>Capture the Flag (71%) wins</strong> over Attack &amp; Defend (29%)</li></ul><p>A decisive victory in each contest. Every mode I voted for came out on top, which I honestly didn't expect. Sure, TDM over Battle Royale makes sense, but an <em>82% majority</em> tells me that the most popular shooter format of today has not usurped the classics among PC Gamer readers (same). But even so, this is where I expected Conquest (a chaotic fight over territory) to accept a humble defeat to Bomb Defusal (the gold standard of competitive PvP). I'm glad I was wrong!</p><p>Not as much comment sparring went down this time, but I would like to highlight one reader comment that got me thinking:</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1006px;"><p class="vanilla-image-block" style="padding-top:34.49%;"><img id="c4eH8yRfMZtvSjajw54HCR" name="fps comment 1" alt="Commenter "JacksMolasses" shares a take on the popularity of battle royales, suggesting that "us old timers" are sick of battle royales because they require communication rather than lone wolves." src="https://cdn.mos.cms.futurecdn.net/c4eH8yRfMZtvSjajw54HCR-1920-80.jpg" mos="" align="middle" fullscreen="" width="1006" height="347" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And here's how PC Gamer's staff reacted to the results:</p><p>But alas, it's time to bury our dead and move on. Round 3 is on!</p><h2 class="article-body__section" id="section-the-bracket"><span>The Bracket</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1880px;"><p class="vanilla-image-block" style="padding-top:63.03%;"><img id="j8QCEgf2nzWSxSFtVAkKcm" name="bracket round 3" alt="FPS mode bracket round 3: Team Deathmatch versus Conquest and Payload versus Capture the Flag." src="https://cdn.mos.cms.futurecdn.net/j8QCEgf2nzWSxSFtVAkKcm-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1880" height="1185" attribution="" endorsement="" class="inline expandable" /><a href='https://cdn.mos.cms.futurecdn.net/j8QCEgf2nzWSxSFtVAkKcm-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Here are the lineups for Round 1. </span><span class="credit" itemprop="copyrightHolder">(Image credit: BracketHQ)</span></figcaption></figure><h2 id="round-3-vote">Round 3 - Vote!</h2><p>Read up on the matchups below and vote for your favorite. <strong>Round 3 voting closes on Sunday, November 8 at 11:59 PM PDT</strong>. The more votes we get, the more interesting the results, so tell your friends! Next week we'll be back to share the results and begin the FINALS.</p><h3 class="article-body__section" id="section-team-deathmatch-vs-conquest"><span>Team Deathmatch vs Conquest</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wx73nAqCRUfgpFYtAoVwqE" name="tdm vs conquest" alt="fov 90 fps mode tournament" src="https://cdn.mos.cms.futurecdn.net/wx73nAqCRUfgpFYtAoVwqE-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft, EA)</span></figcaption></figure><p><em>AKA: Team Slayer (Halo) // Warfare (Hell Let Loose)</em></p><p><strong>Intimate team-based action, or large-scale territory control?</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm91aX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm91aX.js" async=""></script><h3 class="article-body__section" id="section-payload-or-capture-the-flag"><span>Payload or Capture The Flag?</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="XHzhgBub5GBtDwu6wucmjE" name="payload vs ctf" alt="fov 90 fps mode tournament" src="https://cdn.mos.cms.futurecdn.net/XHzhgBub5GBtDwu6wucmjE-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Valve, Microsoft)</span></figcaption></figure><p><em>AKA: It's always Payload and CTF, because they're perfect names</em></p><p><strong>Two modes about escorting an object where the other team doesn't want it to go, but only one moves on.</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eA4v0X"></div>                            </div>                            <script src="https://kwizly.com/embed/eA4v0X.js" async=""></script>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The Overwatch devs hear your complaints about skin distribution but concede that some cosmetics need to 'support the actual bottom-line business' ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.pcgamer.com/uk/overwatch/">Overwatch's</a> skin distribution is, in one word, lopsided. With a roster of 54 heroes and counting it can be hard to ensure that every character gets their fair share of cosmetics as is, but when you add popularity into the mix it gets even harder. </p><p>As a free-to-play game, Overwatch makes the bulk of its money through cosmetics like bundles or standalone skins. Skins also take a good amount of time to prototype and create, so to ensure its efforts aren't wasted the team needs to pick heroes based on how many players will actually buy the end product. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PK6Ed5Fbr7k7XTT8HZez4j" name="OVR_S2_LegendarySkins_CourtofRoses_001" alt="Overwatch Season 2: The Court of Roses store skins." src="https://cdn.mos.cms.futurecdn.net/PK6Ed5Fbr7k7XTT8HZez4j-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blizzard)</span></figcaption></figure><p>"Every new piece of content that we introduce to the game, whether it's a hero or even a map, you know, means that the pool of everything that we've got, it is spread out a little bit," game director Aaron Keller says in a group interview (via <a href="https://kotaku.com/overwatch-skins-kiriko-mercy-juno-mythics-overrated-2000752373" target="_blank">Kotaku</a>). This leaves room for two kinds of heroes to get regular skins. There's popular heroes like Ana, Genji, and Soldier 76 which are played by a large proportion of players and then there's the fan favourites who aren't just popular but have a dedicated playerbase who will consistently buy skins like Mercy, Kiriko, Juno, and Widowmaker. </p><p>However, Team 4 has, in recent years, made a clear effort to bulk up cosmetics for new heroes. "Constantly expanding our capacity" to create skins for characters like Anran, Freyja, and Vendetta who have all been included in recent skin collabs. And while the devs have been able to create more skins than those that just "support the actual bottom-line business", money still needs to be made.  </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="nUQ2boVxSGjdfkdowYxSE8" name="OVR_S3_LegendarySkins_NyanCafe_UltraGroup_001" alt="A promotional screenshot of Overwatch season 3 skins." src="https://cdn.mos.cms.futurecdn.net/nUQ2boVxSGjdfkdowYxSE8-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blizzard Entertainment)</span></figcaption></figure><p>It's kind of like a pay-it-forward system. By making cosmetics that will sell well, Team 4 are able to dedicate time and energy to heroes that won't yield as much of a monetary gain. "The place that you can see that most transparently is the Mythic skins that we release," Keller adds. "Each season we release two Mythic skins, and typically one of those is going to be for a hero that we think is actually going to really drive a lot of that support for the business. And then another one is going to be for a hero that typically hasn't gotten either a Mythic or a lot of other skins in the recent past." </p><p>I recognise that I'm probably in a fortunate position where my main, Ana, has always had a healthy amount of new and very cool cosmetics. But the point still stands that this is a business, so Team 4 needs to make responsible financial decisions for reasons that are at times out of their control. </p><p>"We recognize it's important to players," Keller says. "We want to be doing as much of it as we can, but we still always want to be doing it in a way that's also responsible, and [lets us] know that we can continue supporting this game going forward."</p><div class="product"><a data-dimension112="f62fb866-d781-11f1-870b-39472fd19e0f" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="f62fb866-d781-11f1-870b-39472fd19e0f" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/the-overwatch-devs-hear-your-complaints-about-skin-distribution-but-concede-that-some-cosmetics-need-to-support-the-actual-bottom-line-business/</link>
                                                                            <description>
                            <![CDATA[ It's rough out here for Zarya fans. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Ye2RLJ4k89hNhpYmSrqoom</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/gjcwSH2mVVH9McVnjBNjQX-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 03 Nov 2026 13:44:01 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Elie Gould ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/5HPuSiRgqza2PQESSqE7gG-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Elie is a news writer with an unhealthy love of horror games—even though their greatest fear is being chased. When they&#039;re not screaming or hiding, there&#039;s a good chance you&#039;ll find them testing their metal in metroidvanias or just admiring their Pokemon TCG collection. Elie has previously worked at TechRadar Gaming as a staff writer and studied at JOMEC in International Journalism and Documentaries – spending their free time filming short docs about Smash Bros. or any indie game that crossed their path.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/gjcwSH2mVVH9McVnjBNjQX-1920-80.jpg">
                                                            <media:credit><![CDATA[Blizzard Entertainment]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Overwatch hero Juno in her spacesuit and holding her mediblaster gun on a dark background]]></media:description>                                                            <media:text><![CDATA[Overwatch hero Juno in her spacesuit and holding her mediblaster gun on a dark background]]></media:text>
                                <media:title type="plain"><![CDATA[Overwatch hero Juno in her spacesuit and holding her mediblaster gun on a dark background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/gjcwSH2mVVH9McVnjBNjQX-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.pcgamer.com/uk/overwatch/">Overwatch's</a> skin distribution is, in one word, lopsided. With a roster of 54 heroes and counting it can be hard to ensure that every character gets their fair share of cosmetics as is, but when you add popularity into the mix it gets even harder. </p><p>As a free-to-play game, Overwatch makes the bulk of its money through cosmetics like bundles or standalone skins. Skins also take a good amount of time to prototype and create, so to ensure its efforts aren't wasted the team needs to pick heroes based on how many players will actually buy the end product. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PK6Ed5Fbr7k7XTT8HZez4j" name="OVR_S2_LegendarySkins_CourtofRoses_001" alt="Overwatch Season 2: The Court of Roses store skins." src="https://cdn.mos.cms.futurecdn.net/PK6Ed5Fbr7k7XTT8HZez4j-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blizzard)</span></figcaption></figure><p>"Every new piece of content that we introduce to the game, whether it's a hero or even a map, you know, means that the pool of everything that we've got, it is spread out a little bit," game director Aaron Keller says in a group interview (via <a href="https://kotaku.com/overwatch-skins-kiriko-mercy-juno-mythics-overrated-2000752373" target="_blank">Kotaku</a>). This leaves room for two kinds of heroes to get regular skins. There's popular heroes like Ana, Genji, and Soldier 76 which are played by a large proportion of players and then there's the fan favourites who aren't just popular but have a dedicated playerbase who will consistently buy skins like Mercy, Kiriko, Juno, and Widowmaker. </p><p>However, Team 4 has, in recent years, made a clear effort to bulk up cosmetics for new heroes. "Constantly expanding our capacity" to create skins for characters like Anran, Freyja, and Vendetta who have all been included in recent skin collabs. And while the devs have been able to create more skins than those that just "support the actual bottom-line business", money still needs to be made.  </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="nUQ2boVxSGjdfkdowYxSE8" name="OVR_S3_LegendarySkins_NyanCafe_UltraGroup_001" alt="A promotional screenshot of Overwatch season 3 skins." src="https://cdn.mos.cms.futurecdn.net/nUQ2boVxSGjdfkdowYxSE8-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blizzard Entertainment)</span></figcaption></figure><p>It's kind of like a pay-it-forward system. By making cosmetics that will sell well, Team 4 are able to dedicate time and energy to heroes that won't yield as much of a monetary gain. "The place that you can see that most transparently is the Mythic skins that we release," Keller adds. "Each season we release two Mythic skins, and typically one of those is going to be for a hero that we think is actually going to really drive a lot of that support for the business. And then another one is going to be for a hero that typically hasn't gotten either a Mythic or a lot of other skins in the recent past." </p><p>I recognise that I'm probably in a fortunate position where my main, Ana, has always had a healthy amount of new and very cool cosmetics. But the point still stands that this is a business, so Team 4 needs to make responsible financial decisions for reasons that are at times out of their control. </p><p>"We recognize it's important to players," Keller says. "We want to be doing as much of it as we can, but we still always want to be doing it in a way that's also responsible, and [lets us] know that we can continue supporting this game going forward."</p><div class="product"><a data-dimension112="f62fb866-d781-11f1-870b-39472fd19e0f" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="f62fb866-d781-11f1-870b-39472fd19e0f" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Thief Remastered's new expansion is being made by the legendary Black Parade mod team, and it's out next month ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="high" data-lazy-src="https://www.youtube-nocookie.com/embed/T58V1rtLugU" allowfullscreen=""></iframe></div></div><p>Nightdive has unveiled the <a href="https://youtu.be/T58V1rtLugU?si=cUAjESkfl-FxKxqC" target="_blank">first trailer for Thief: The Tarnished Mirror</a>, a new official expansion to Thief coming with its imminent remaster. Most exciting of all: The Tarnished Mirror is being made by the team behind The Black Parade, a 2023 mod that was one of the most exciting things to happen to the series in 20 years.</p><p>The Tarnished Mirror consists of four new missions, and is meant "as a bridge between Thief: The Dark Project and Thief 2: The Metal Age," according to an accompanying press release. Similar to The Black Parade, these new levels will leverage improvements in technology to offer more sprawling, ambitious maps than '90s PCs could handle.</p><p>The scenes from the trailer are all very Thief, but similar to The Black Parade, there's immediately more verticality than in the 1997 original game. There are also glimpses at interiors that leverage familiar Thief assets to create weirder, more surprising spaces than I'm used to from the mainline games.</p><p>The press release also indicates that The Tarnished Mirror will embrace Thief's contested legacy of horror in a similar way to The Black Parade, and that's music to my ears. I've always been a Thief undead mission defender, and The Black Parade upped the ante⁠—it's one of the scariest games I've ever played.</p><p>All told, this news about the expansion has more than made up for my disappointment at there being <a href="https://www.pcgamer.com/games/fps/nightdive-is-reviving-the-iconic-trapezoid-big-box-for-thief-remastereds-special-edition-but-only-on-console/" target="_blank">no PC version of the remaster's big box</a> special edition. I may not get my tchotchke fix here, but the Thief Remaster is shaping up to be something very special.</p><div class="product"><a data-dimension112="37aa4bfe-d6e6-11f1-ba07-138d54425c4a" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="37aa4bfe-d6e6-11f1-ba07-138d54425c4a" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/thief-remastereds-new-expansion-is-being-made-by-the-legendary-black-parade-mod-team-and-its-out-next-month/</link>
                                                                            <description>
                            <![CDATA[ It's a big day for PC gaming old heads. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">qdvc8rYX4qH7qtD2grgwK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/UmXn7GB6fZw97kbHjw9zNW-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 02 Nov 2026 17:53:01 +0000</pubDate>                                                                                                                                <updated>Mon, 02 Nov 2026 19:36:41 +0000</updated>
                                                                                                                                            <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                <author><![CDATA[ ted.litchfield@futurenet.com (Ted Litchfield) ]]></author>                    <dc:creator><![CDATA[ Ted Litchfield ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/8DyQVBz7FCynDY9QiJyH9D-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;&lt;br&gt;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/UmXn7GB6fZw97kbHjw9zNW-1920-80.jpg">
                                                            <media:credit><![CDATA[Nightdive Studios]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Key art of Garrett from Thief: The Dark Project Remastered.]]></media:description>                                                            <media:text><![CDATA[Key art of Garrett from Thief: The Dark Project Remastered.]]></media:text>
                                <media:title type="plain"><![CDATA[Key art of Garrett from Thief: The Dark Project Remastered.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/UmXn7GB6fZw97kbHjw9zNW-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="high" data-lazy-src="https://www.youtube-nocookie.com/embed/T58V1rtLugU" allowfullscreen=""></iframe></div></div><p>Nightdive has unveiled the <a href="https://youtu.be/T58V1rtLugU?si=cUAjESkfl-FxKxqC" target="_blank">first trailer for Thief: The Tarnished Mirror</a>, a new official expansion to Thief coming with its imminent remaster. Most exciting of all: The Tarnished Mirror is being made by the team behind The Black Parade, a 2023 mod that was one of the most exciting things to happen to the series in 20 years.</p><p>The Tarnished Mirror consists of four new missions, and is meant "as a bridge between Thief: The Dark Project and Thief 2: The Metal Age," according to an accompanying press release. Similar to The Black Parade, these new levels will leverage improvements in technology to offer more sprawling, ambitious maps than '90s PCs could handle.</p><p>The scenes from the trailer are all very Thief, but similar to The Black Parade, there's immediately more verticality than in the 1997 original game. There are also glimpses at interiors that leverage familiar Thief assets to create weirder, more surprising spaces than I'm used to from the mainline games.</p><p>The press release also indicates that The Tarnished Mirror will embrace Thief's contested legacy of horror in a similar way to The Black Parade, and that's music to my ears. I've always been a Thief undead mission defender, and The Black Parade upped the ante⁠—it's one of the scariest games I've ever played.</p><p>All told, this news about the expansion has more than made up for my disappointment at there being <a href="https://www.pcgamer.com/games/fps/nightdive-is-reviving-the-iconic-trapezoid-big-box-for-thief-remastereds-special-edition-but-only-on-console/" target="_blank">no PC version of the remaster's big box</a> special edition. I may not get my tchotchke fix here, but the Thief Remaster is shaping up to be something very special.</p><div class="product"><a data-dimension112="37aa4bfe-d6e6-11f1-ba07-138d54425c4a" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="37aa4bfe-d6e6-11f1-ba07-138d54425c4a" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Nightdive is reviving the iconic trapezoid big box for Thief: Remastered's special edition… but only on console ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Preorders are opening up for <a href="https://videogamesplus.ca/collections/thief-the-dark-project-remastered/products/thief-the-dark-project-remastered-nintendo-switch-2-edition-trapezoid-edition-nintendo-switch-2-pre-order" target="_blank">physical editions of Nightdive's Thief Remaster</a>, and at the high end, the studio is offering an homage to Thief's iconic original PC big box packaging in that shape we all know and love, the trapezoid. The only problem? Nightdive and partner Clear River Games are only offering it for Switch/Switch 2 and PS5. </p><h4 id="why-does-this-matter">Why does this matter?</h4><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1072px;"><p class="vanilla-image-block" style="padding-top:99.44%;"><img id="qQcMbNpDMFnCkQrpD5HPpn" name="Screenshot 2026-11-02 104556" alt="Feature spread for Thief: The Dark Project Remastered special edition physical" src="https://cdn.mos.cms.futurecdn.net/qQcMbNpDMFnCkQrpD5HPpn-1920-80.png" mos="" align="middle" fullscreen="" width="1072" height="1066" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nightdive)</span></figcaption></figure><p>It doesn't really, at least not as much as war and death and politics or whatever. But Thief's original '90s big box edition came in a <a href="https://www.youtube.com/watch?v=arpDsoD9bVM" target="_blank">jaunty little trapezoidal box</a> unlike anything else on the market. It remains a visually striking, highly sought-after collector's item. It's fun, it's memorable, and it's a piece of PC gaming history. I've had to settle for my version of Thief Gold that came in a plain Jane regular box as a reissue.</p><p>It's not super surprising that Night Dive and Clear River eschewed a PC version of this physical release⁠—that's fairly common these days, even in boutique indie special editions. I had a similar "we're so back, it's so over" reaction when I saw that indie RPG heater Dread Delusion's limited physical edition had skipped PC.</p><p>But the hurt feels new all over again when it's a PC gaming icon like Thief, and a PC gaming phenomenon like the big box. I would have dropped a fat hundo on a physical PC version of Thief Remastered in a heartbeat⁠—it's why I live in an apartment and not a house.</p><p>And studios still do come out with physical editions of their PC games: My Baldur's Gate 3 big box has pride of place in my office. All told, it's just a slight bummer and frustration trying to drag down one of my most anticipated games. I'm still going to play the hell out of it when it comes out on December 3, though.</p><p>I'm rooting for <a href="https://www.pcgamer.com/games/gog-wants-to-bring-back-physical-games-but-its-a-very-very-complicated-thing/" target="_blank">GOG's proposal to bring back the big box</a>. The company seems to be considering a boutique service where you can purchase physical versions of the games in your library, which sounds pretty rad to me.</p><div class="product"><a data-dimension112="1750d1ba-d6dd-11f1-a5b3-4d398ab86165" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="1750d1ba-d6dd-11f1-a5b3-4d398ab86165" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/nightdive-is-reviving-the-iconic-trapezoid-big-box-for-thief-remastereds-special-edition-but-only-on-console/</link>
                                                                            <description>
                            <![CDATA[ The injustice of it all. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">pQqmVpTJg6RryrZJqgBdCT</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/3meaKbyyLVsEttiSTvqaLj-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 02 Nov 2026 16:47:29 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                <author><![CDATA[ ted.litchfield@futurenet.com (Ted Litchfield) ]]></author>                    <dc:creator><![CDATA[ Ted Litchfield ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/8DyQVBz7FCynDY9QiJyH9D-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;&lt;br&gt;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/3meaKbyyLVsEttiSTvqaLj-1920-80.jpg">
                                                            <media:credit><![CDATA[Eidos Montreal]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Garrett from Thief climbing the side of a building, city visible in background and stained glass window in foreground.]]></media:description>                                                            <media:text><![CDATA[Garrett from Thief climbing the side of a building, city visible in background and stained glass window in foreground.]]></media:text>
                                <media:title type="plain"><![CDATA[Garrett from Thief climbing the side of a building, city visible in background and stained glass window in foreground.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/3meaKbyyLVsEttiSTvqaLj-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Preorders are opening up for <a href="https://videogamesplus.ca/collections/thief-the-dark-project-remastered/products/thief-the-dark-project-remastered-nintendo-switch-2-edition-trapezoid-edition-nintendo-switch-2-pre-order" target="_blank">physical editions of Nightdive's Thief Remaster</a>, and at the high end, the studio is offering an homage to Thief's iconic original PC big box packaging in that shape we all know and love, the trapezoid. The only problem? Nightdive and partner Clear River Games are only offering it for Switch/Switch 2 and PS5. </p><h4 id="why-does-this-matter">Why does this matter?</h4><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1072px;"><p class="vanilla-image-block" style="padding-top:99.44%;"><img id="qQcMbNpDMFnCkQrpD5HPpn" name="Screenshot 2026-11-02 104556" alt="Feature spread for Thief: The Dark Project Remastered special edition physical" src="https://cdn.mos.cms.futurecdn.net/qQcMbNpDMFnCkQrpD5HPpn-1920-80.png" mos="" align="middle" fullscreen="" width="1072" height="1066" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nightdive)</span></figcaption></figure><p>It doesn't really, at least not as much as war and death and politics or whatever. But Thief's original '90s big box edition came in a <a href="https://www.youtube.com/watch?v=arpDsoD9bVM" target="_blank">jaunty little trapezoidal box</a> unlike anything else on the market. It remains a visually striking, highly sought-after collector's item. It's fun, it's memorable, and it's a piece of PC gaming history. I've had to settle for my version of Thief Gold that came in a plain Jane regular box as a reissue.</p><p>It's not super surprising that Night Dive and Clear River eschewed a PC version of this physical release⁠—that's fairly common these days, even in boutique indie special editions. I had a similar "we're so back, it's so over" reaction when I saw that indie RPG heater Dread Delusion's limited physical edition had skipped PC.</p><p>But the hurt feels new all over again when it's a PC gaming icon like Thief, and a PC gaming phenomenon like the big box. I would have dropped a fat hundo on a physical PC version of Thief Remastered in a heartbeat⁠—it's why I live in an apartment and not a house.</p><p>And studios still do come out with physical editions of their PC games: My Baldur's Gate 3 big box has pride of place in my office. All told, it's just a slight bummer and frustration trying to drag down one of my most anticipated games. I'm still going to play the hell out of it when it comes out on December 3, though.</p><p>I'm rooting for <a href="https://www.pcgamer.com/games/gog-wants-to-bring-back-physical-games-but-its-a-very-very-complicated-thing/" target="_blank">GOG's proposal to bring back the big box</a>. The company seems to be considering a boutique service where you can purchase physical versions of the games in your library, which sounds pretty rad to me.</p><div class="product"><a data-dimension112="1750d1ba-d6dd-11f1-a5b3-4d398ab86165" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="1750d1ba-d6dd-11f1-a5b3-4d398ab86165" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Valve's long-lost prototype Portal prequel appears online after nearly 20 years ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/mihs6K2ynCs" allowfullscreen=""></iframe></div></div><p>As reported by <a href="https://kotaku.com/valves-cancelled-portal-prequel-f-stop-has-leaked-2000752082" target="_blank">Kotaku</a>, a near-mythical canceled Valve game called F-Stop has been reconstructed from material contained in separate leaks. Direct access to the build seems a little shaky at the moment, but full playthroughs of the game, like this one by <a href="https://youtu.be/mihs6K2ynCs?si=xoZXp2hR3YUe4lGK" target="_blank">Meme Man? on YouTube</a>, are starting to pop up online.</p><p>Most of F-Stop's assets came out in this <a href="https://www.pcgamer.com/games/the-steam-teraleak-extends-far-beyond-valve-games-including-prototypes-of-third-party-titles-like-mafia-2-and-grand-theft-auto-3-this-may-be-one-of-if-not-the-biggest-leaks-to-occur/" target="_blank">August's Steam "teraleak,"</a> but the final pieces⁠—F-Stop's source code and mapsrc data⁠—were only just acquired by the <a href="https://steamcommunity.com/groups/ValveCutContent" target="_blank">Valve Cut Content Team</a> Discord, which appears to have gone private amid all the newfound attention over F-Stop. With the Discord currently invite-only, you gotta know a guy (or know a guy who knows a guy) to play it yourself.</p><p>The <a href="https://half-life.fandom.com/wiki/Directed_Design_Experiments" target="_blank">Half-Life Wiki</a> has the skinny on F-Stop's origins in the "Directed Design Experiments." Following the megahit launch of the Orange Box in 2007, Gabe Newell effectively shut Valve down for a three-month game jam that produced five prototypes, F-Stop among them.</p><p>It applied Team Fortress 2's cel-shaded art style to a vision of Aperture Science in its prime, all mid-century wood-paneled office optimism. F-Stop's central mechanic was a camera that could capture objects in the world, then place them elsewhere to solve puzzles. The <a href="https://www.pcgamer.com/viewfinder-review/" target="_blank">excellent 2023 game Viewfinder</a> would apply a similar concept to a full commercial release.</p><p>But while loved internally at Valve, F-Stop's playtests were apparently more tepid. The game was shelved, though elements of its worldbuilding would appear in Portal 2 and Aperture Desk Job. It's fun to recognize some of these early ideas in the F-Stop longplays: From the jump, we get a version of Cave Johnson (sadly sans-J.K. Simmons in prototype) talking to the player, as well as the first instance of Aperture Personality Cores as companions in the puzzling.</p><p>Given F-Stop's "road not taken" nature, particularly compared to the megathit Left 4 Dead and Portal 2 that would follow, I don't really mourn the fact that we never got to play its final version. It is, however, extremely cool that the prototype game is now preserved for posterity.</p><div class="product"><a data-dimension112="7874114a-d61b-11f1-9a41-f302d8829a4b" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="7874114a-d61b-11f1-9a41-f302d8829a4b" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/valves-long-lost-prototype-portal-prequel-appears-online-after-nearly-20-years/</link>
                                                                            <description>
                            <![CDATA[ F-Stop was a result of a post-Orange Box, 2007 Valve game jam. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">qqZ5UzENKaJyu2PYkhGo5D</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/nCJfziz7aTjfkS37SmwqTc-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 01 Nov 2026 17:44:47 +0000</pubDate>                                                                                                                                <updated>Mon, 02 Nov 2026 16:47:11 +0000</updated>
                                                                                                                                            <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                <author><![CDATA[ ted.litchfield@futurenet.com (Ted Litchfield) ]]></author>                    <dc:creator><![CDATA[ Ted Litchfield ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/8DyQVBz7FCynDY9QiJyH9D-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;&lt;br&gt;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/nCJfziz7aTjfkS37SmwqTc-1920-80.jpg">
                                                            <media:credit><![CDATA[Valve]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Wheatley, a spherical AI core from Portal 2]]></media:description>                                                            <media:text><![CDATA[Wheatley, a spherical AI core from Portal 2]]></media:text>
                                <media:title type="plain"><![CDATA[Wheatley, a spherical AI core from Portal 2]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/nCJfziz7aTjfkS37SmwqTc-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/mihs6K2ynCs" allowfullscreen=""></iframe></div></div><p>As reported by <a href="https://kotaku.com/valves-cancelled-portal-prequel-f-stop-has-leaked-2000752082" target="_blank">Kotaku</a>, a near-mythical canceled Valve game called F-Stop has been reconstructed from material contained in separate leaks. Direct access to the build seems a little shaky at the moment, but full playthroughs of the game, like this one by <a href="https://youtu.be/mihs6K2ynCs?si=xoZXp2hR3YUe4lGK" target="_blank">Meme Man? on YouTube</a>, are starting to pop up online.</p><p>Most of F-Stop's assets came out in this <a href="https://www.pcgamer.com/games/the-steam-teraleak-extends-far-beyond-valve-games-including-prototypes-of-third-party-titles-like-mafia-2-and-grand-theft-auto-3-this-may-be-one-of-if-not-the-biggest-leaks-to-occur/" target="_blank">August's Steam "teraleak,"</a> but the final pieces⁠—F-Stop's source code and mapsrc data⁠—were only just acquired by the <a href="https://steamcommunity.com/groups/ValveCutContent" target="_blank">Valve Cut Content Team</a> Discord, which appears to have gone private amid all the newfound attention over F-Stop. With the Discord currently invite-only, you gotta know a guy (or know a guy who knows a guy) to play it yourself.</p><p>The <a href="https://half-life.fandom.com/wiki/Directed_Design_Experiments" target="_blank">Half-Life Wiki</a> has the skinny on F-Stop's origins in the "Directed Design Experiments." Following the megahit launch of the Orange Box in 2007, Gabe Newell effectively shut Valve down for a three-month game jam that produced five prototypes, F-Stop among them.</p><p>It applied Team Fortress 2's cel-shaded art style to a vision of Aperture Science in its prime, all mid-century wood-paneled office optimism. F-Stop's central mechanic was a camera that could capture objects in the world, then place them elsewhere to solve puzzles. The <a href="https://www.pcgamer.com/viewfinder-review/" target="_blank">excellent 2023 game Viewfinder</a> would apply a similar concept to a full commercial release.</p><p>But while loved internally at Valve, F-Stop's playtests were apparently more tepid. The game was shelved, though elements of its worldbuilding would appear in Portal 2 and Aperture Desk Job. It's fun to recognize some of these early ideas in the F-Stop longplays: From the jump, we get a version of Cave Johnson (sadly sans-J.K. Simmons in prototype) talking to the player, as well as the first instance of Aperture Personality Cores as companions in the puzzling.</p><p>Given F-Stop's "road not taken" nature, particularly compared to the megathit Left 4 Dead and Portal 2 that would follow, I don't really mourn the fact that we never got to play its final version. It is, however, extremely cool that the prototype game is now preserved for posterity.</p><div class="product"><a data-dimension112="7874114a-d61b-11f1-9a41-f302d8829a4b" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="7874114a-d61b-11f1-9a41-f302d8829a4b" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'An absolute behemoth': Wildly ambitious FPS Selaco is getting a massive update that doubles its size and adds 'a heavy machinegun that fires literal explosions' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you're a fan of first-person shooters and haven't played<a href="https://www.pcgamer.com/uk/selaco/" target="_blank"> Selaco</a>, you should. Built in the<a href="https://www.pcgamer.com/uk/doom/"> Doom</a> engine and inspired by<a href="https://www.pcgamer.com/uk/tag/f-e-a-r/" target="_blank"> FEAR</a>,<a href="https://www.pcgamer.com/uk/half-life/" target="_blank"> Half-Life</a> and<a href="https://www.pcgamer.com/uk/system-shock/" target="_blank"> System Shock</a>, Selaco is a rollicking, dizzyingly ambitious sci-fi FPS where you battle a mercenary incursion of a vast, city-sized space station that's home to the last of humanity.</p><p>Launched into Steam early access in 2024, Selaco's first chapter alone is as long as some entire '90s shooters. Now, developer Altered Orbit Studios is preparing to release an update that will not only double the length of the game, but also introduce a wide array of new features and rework much of its existing design.</p><p>Described by Altered Orbit as "an absolute behemoth",<a href="https://store.steampowered.com/news/app/1592280/view/684142629662762249?l=english" target="_blank"> Selaco: The Machines of War</a> introduces the second of a planned three chapters to the FPS. Chapter two comprises 19 new campaign maps, which apparently amounts to "6-8 hours of additional content". Alongside further story elements and a voice for the protagonist, the chapter also introduces what sounds like a persistent enemy, in the form of "an unstoppable machine" that is "hunting you down."  </p><p>Naturally, this second chapter also adds new weapons and enemies, with the former including a minigun and "a heavy machine gun that fires literal explosions". I don't know how that would work, but I'm keen to find out! Alongside your equipped arsenal, players will be able to use new deployable weapons like mini-turrets and sentinel drones, while the update also introduces a "heavy ordnance system" that lets you wield large, disposable weapons scattered across the battlefield,<a href="https://www.pcgamer.com/uk/gears-of-war/" target="_blank"> Gears of War</a>-style.</p><p>As well as completely new stuff, Altered Orbit says the update will also enhance a lot of existing content. The FEAR inspired enemy AI, for example, has been "rewritten almost entirely from scratch" to facilitate smarter tactics and better decision making. The rewrite also introduces a new "rally" system and NPC area patrolling when not in combat—an addition designed to give players more agency in when and how fighting begins. Oh, and the entire first chapter has been given an overhaul that introduces "improved set pieces" and "new surprises".</p><p>And those are just the headline changes. Other improvements mentioned by Altered Orbit include a new lighting system, an overhauled particle system to make combat even more spectacular, improved navigation through Selaco's massive, mazey levels, new voice lines to make enemy communication even more lifelike, better controls, new music, and more. It almost sounds too good to be true, but I've played Chapter 1 and I know Altered Orbit can cook with rocket fuel, so none of this is beyond the studio's capability.</p><p>Selaco: The Machines of War arrives on November 13. The scale of the changes means that old saves will no longer be compatible. But if you don't fancy replaying the reworked first episode, you will be able to jump in at the outset of Chapter 2.</p><div class="product"><a data-dimension112="c88dbd50-d613-11f1-b657-f583d86273c9" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="c88dbd50-d613-11f1-b657-f583d86273c9" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/an-absolute-behemoth-wildly-ambitious-fps-selaco-is-getting-a-massive-update-that-doubles-its-size-and-adds-a-heavy-machinegun-that-fires-literal-explosions/</link>
                                                                            <description>
                            <![CDATA[ Selaco: The Machines of War arrives later this month. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">TWYXfaPgdqEhqgpS9xpMmE</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/WfcDGag9nWxtKu3VSB8pFV-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 01 Nov 2026 16:46:26 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Rick Lane ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ &lt;p&gt;Rick has been fascinated by PC gaming since he was seven years old, when he used to sneak into his dad&#039;s home office for covert sessions of Doom. He grew up on a diet of similarly unsuitable games, with favourites including Quake, Thief, Half-Life and Deus Ex. Between 2013 and 2022, Rick was games editor of Custom PC magazine and associated website &lt;a href=&quot;http://bit-tech.net/&quot; target=&quot;_blank&quot;&gt;bit-tech.net&lt;/a&gt;. But he&#039;s always kept one foot in freelance games journalism, writing for publications like Edge, Eurogamer, the Guardian and, naturally, PC Gamer. While he&#039;ll play anything that can be controlled with a keyboard and mouse, he has a particular passion for first-person shooters and immersive sims.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/WfcDGag9nWxtKu3VSB8pFV-1920-80.jpg">
                                                            <media:credit><![CDATA[Altered Orbit Studios]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Selaco Protagonist hiding in cover as guy shoots at her.]]></media:description>                                                            <media:text><![CDATA[Selaco Protagonist hiding in cover as guy shoots at her.]]></media:text>
                                <media:title type="plain"><![CDATA[Selaco Protagonist hiding in cover as guy shoots at her.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/WfcDGag9nWxtKu3VSB8pFV-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you're a fan of first-person shooters and haven't played<a href="https://www.pcgamer.com/uk/selaco/" target="_blank"> Selaco</a>, you should. Built in the<a href="https://www.pcgamer.com/uk/doom/"> Doom</a> engine and inspired by<a href="https://www.pcgamer.com/uk/tag/f-e-a-r/" target="_blank"> FEAR</a>,<a href="https://www.pcgamer.com/uk/half-life/" target="_blank"> Half-Life</a> and<a href="https://www.pcgamer.com/uk/system-shock/" target="_blank"> System Shock</a>, Selaco is a rollicking, dizzyingly ambitious sci-fi FPS where you battle a mercenary incursion of a vast, city-sized space station that's home to the last of humanity.</p><p>Launched into Steam early access in 2024, Selaco's first chapter alone is as long as some entire '90s shooters. Now, developer Altered Orbit Studios is preparing to release an update that will not only double the length of the game, but also introduce a wide array of new features and rework much of its existing design.</p><p>Described by Altered Orbit as "an absolute behemoth",<a href="https://store.steampowered.com/news/app/1592280/view/684142629662762249?l=english" target="_blank"> Selaco: The Machines of War</a> introduces the second of a planned three chapters to the FPS. Chapter two comprises 19 new campaign maps, which apparently amounts to "6-8 hours of additional content". Alongside further story elements and a voice for the protagonist, the chapter also introduces what sounds like a persistent enemy, in the form of "an unstoppable machine" that is "hunting you down."  </p><p>Naturally, this second chapter also adds new weapons and enemies, with the former including a minigun and "a heavy machine gun that fires literal explosions". I don't know how that would work, but I'm keen to find out! Alongside your equipped arsenal, players will be able to use new deployable weapons like mini-turrets and sentinel drones, while the update also introduces a "heavy ordnance system" that lets you wield large, disposable weapons scattered across the battlefield,<a href="https://www.pcgamer.com/uk/gears-of-war/" target="_blank"> Gears of War</a>-style.</p><p>As well as completely new stuff, Altered Orbit says the update will also enhance a lot of existing content. The FEAR inspired enemy AI, for example, has been "rewritten almost entirely from scratch" to facilitate smarter tactics and better decision making. The rewrite also introduces a new "rally" system and NPC area patrolling when not in combat—an addition designed to give players more agency in when and how fighting begins. Oh, and the entire first chapter has been given an overhaul that introduces "improved set pieces" and "new surprises".</p><p>And those are just the headline changes. Other improvements mentioned by Altered Orbit include a new lighting system, an overhauled particle system to make combat even more spectacular, improved navigation through Selaco's massive, mazey levels, new voice lines to make enemy communication even more lifelike, better controls, new music, and more. It almost sounds too good to be true, but I've played Chapter 1 and I know Altered Orbit can cook with rocket fuel, so none of this is beyond the studio's capability.</p><p>Selaco: The Machines of War arrives on November 13. The scale of the changes means that old saves will no longer be compatible. But if you don't fancy replaying the reworked first episode, you will be able to jump in at the outset of Chapter 2.</p><div class="product"><a data-dimension112="c88dbd50-d613-11f1-b657-f583d86273c9" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="c88dbd50-d613-11f1-b657-f583d86273c9" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ id Software co-director says the Doom developer is 'working more closely with MachineGames than ever' after Xbox laid off 'about half of our studio' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Id Software has tightened its relationship with fellow shooter specialists MachineGames according to studio co-director Marty Stratton, after Xbox laid off<a href="https://www.pcgamer.com/gaming-industry/laid-off-id-software-artist-says-microsoft-is-nuking-the-team-into-the-dirt-and-is-now-the-size-of-a-support-studio/" target="_blank"> roughly half of the Doom developer's</a> employees earlier this year.</p><p>Stratton was asked how the studio was doing following Xbox's<a href="https://www.pcgamer.com/gaming-industry/xbox-is-laying-off-3-200-people-and-dumping-4-studios/" target="_blank"> massive job cuts</a> at a recent press event for<a href="https://www.pcgamer.com/games/fps/doom-the-dark-ages-revelations-review/" target="_blank"> Doom: The Dark Ages' Revelations DLC</a> (via<a href="https://www.ign.com/articles/xboxs-doom-wolfenstein-developers-working-more-closely-than-ever-following-xbox-reset-layoffs" target="_blank"> IGN</a>) and he was keen to assure everyone that things are hunky dory at the legendary FPS developer.</p><p>"We're doing great," Stratton explained. "Not to handwave the [layoffs] away … everybody knows we had about half of our studio exit as part of that. But there was a very deliberate effort to make sure that we were incredibly viable coming out of that across everything we do, across game development and [the] technology department."</p><p>As part of its response to those layoffs, id Software has apparently deepened its ties with MachineGames, developers of<a href="https://www.pcgamer.com/wolfenstein-the-new-order-review/" target="_blank"> Wolfenstein: The New Order</a> and, more recently, the excellent<a href="https://www.pcgamer.com/uk/indiana-jones-and-the-great-circle/" target="_blank"> Indiana Jones and the Great Circle</a>.</p><p>"We're working more closely with MachineGames than ever," Stratton said. "We've always had a very close partnership with them, but I think we're at the point with technology development that both teams are incredibly talented and have incredibly talented engineers and we're really on an amazing path that had started pre-[layoffs]. We'd kicked this off earlier this year. We're really excited about that. We're both really, really bullish on what we have ahead.</p><p>Stratton's comments have led to speculation that the two developers may be cooperating on Wolfenstein 3, which MachineGames is<a href="https://www.pcgamer.com/games/fps/more-than-8-years-after-the-new-colossus-a-new-wolfenstein-game-is-reportedly-in-the-works-at-machinegames/" target="_blank"> rumoured to be working on</a>. Id Software has just concluded active development of<a href="https://www.pcgamer.com/uk/doom-the-dark-ages/" target="_blank"> Doom: The Dark Ages</a> following the expansions' release, so this is possible. What's interesting to me, however, is how Stratton repeatedly references technology.</p><p>The id Software layoffs heavily impact the developer's Frankfurt arm, including numerous designers of the formidable id-tech engine. This led to fears that id-tech was being shelved. Microsoft contradicted this, though further<a href="https://www.pcgamer.com/gaming-industry/report-contradicts-microsofts-statements-that-id-software-hasnt-been-shoved-onto-unreal-from-id-tech-its-most-likely-going-to-end-up-in-the-in-the-trash-can/" target="_blank"> reports left the question open</a>. But Stratton's comments lead me to believe we might be seeing a tech alignment between the two developers as a result of those Frankfurt layoffs.</p><p>While id Software built Doom: The Dark Ages on id-tech 8, MachineGames used a modified version of id-tech 7, called Motor, for Indiana Jones and the Great Circle. The fact that Stratton references both teams' "incredibly talented engineers" suggests to me that id Software is folding MachineGames' engine programmers directly into id-tech's ongoing development, with both teams working on the engine concurrently going forward. Assuming that id tech hasn't been canned outright, this approach would make sense given the expertise id Software lost from its Frankfurt arm.</p><p>Sadly, the layoffs that affected id Software were far from the last at Xbox. After cutting 1600 jobs in the summer, Xbox<a href="https://www.pcgamer.com/gaming-industry/xbox-lays-off-268-more-employees-merges-obsidian-into-bethesda-and-puts-activision-in-charge-of-halo/" target="_blank"> initiated a second wave of layoffs in September</a> that also saw Obsidian and Bethesda merge and put Activision in charge of Halo. Further Xbox layoffs are planned leading up to January 2027, while Microsoft more broadly has offered a<a href="https://www.pcgamer.com/gaming-industry/microsoft-is-looking-to-cut-more-than-25-percent-of-its-workforce/" target="_blank"> "voluntary exit offer"</a> to over a quarter of its workforce.</p><div class="product"><a data-dimension112="55f70446-d545-11f1-8b78-8facce9f8a7d" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="55f70446-d545-11f1-8b78-8facce9f8a7d" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/id-software-co-director-says-the-doom-developer-is-working-more-closely-with-machinegames-than-ever-after-xbox-laid-off-about-half-of-our-studio/</link>
                                                                            <description>
                            <![CDATA[ MachineGames is rumoured to be working on a third Wolfenstein game. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">tWgmzi8bzqezcP34GV4QG9</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/wqYDbSC8MLcbRczgQKCDS-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 31 Oct 2026 16:10:44 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Rick Lane ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ &lt;p&gt;Rick has been fascinated by PC gaming since he was seven years old, when he used to sneak into his dad&#039;s home office for covert sessions of Doom. He grew up on a diet of similarly unsuitable games, with favourites including Quake, Thief, Half-Life and Deus Ex. Between 2013 and 2022, Rick was games editor of Custom PC magazine and associated website &lt;a href=&quot;http://bit-tech.net/&quot; target=&quot;_blank&quot;&gt;bit-tech.net&lt;/a&gt;. But he&#039;s always kept one foot in freelance games journalism, writing for publications like Edge, Eurogamer, the Guardian and, naturally, PC Gamer. While he&#039;ll play anything that can be controlled with a keyboard and mouse, he has a particular passion for first-person shooters and immersive sims.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/wqYDbSC8MLcbRczgQKCDS-1920-80.jpg">
                                                            <media:credit><![CDATA[null]]></media:credit>
                                                                                                                                                                                                                                                                                                                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/wqYDbSC8MLcbRczgQKCDS-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Id Software has tightened its relationship with fellow shooter specialists MachineGames according to studio co-director Marty Stratton, after Xbox laid off<a href="https://www.pcgamer.com/gaming-industry/laid-off-id-software-artist-says-microsoft-is-nuking-the-team-into-the-dirt-and-is-now-the-size-of-a-support-studio/" target="_blank"> roughly half of the Doom developer's</a> employees earlier this year.</p><p>Stratton was asked how the studio was doing following Xbox's<a href="https://www.pcgamer.com/gaming-industry/xbox-is-laying-off-3-200-people-and-dumping-4-studios/" target="_blank"> massive job cuts</a> at a recent press event for<a href="https://www.pcgamer.com/games/fps/doom-the-dark-ages-revelations-review/" target="_blank"> Doom: The Dark Ages' Revelations DLC</a> (via<a href="https://www.ign.com/articles/xboxs-doom-wolfenstein-developers-working-more-closely-than-ever-following-xbox-reset-layoffs" target="_blank"> IGN</a>) and he was keen to assure everyone that things are hunky dory at the legendary FPS developer.</p><p>"We're doing great," Stratton explained. "Not to handwave the [layoffs] away … everybody knows we had about half of our studio exit as part of that. But there was a very deliberate effort to make sure that we were incredibly viable coming out of that across everything we do, across game development and [the] technology department."</p><p>As part of its response to those layoffs, id Software has apparently deepened its ties with MachineGames, developers of<a href="https://www.pcgamer.com/wolfenstein-the-new-order-review/" target="_blank"> Wolfenstein: The New Order</a> and, more recently, the excellent<a href="https://www.pcgamer.com/uk/indiana-jones-and-the-great-circle/" target="_blank"> Indiana Jones and the Great Circle</a>.</p><p>"We're working more closely with MachineGames than ever," Stratton said. "We've always had a very close partnership with them, but I think we're at the point with technology development that both teams are incredibly talented and have incredibly talented engineers and we're really on an amazing path that had started pre-[layoffs]. We'd kicked this off earlier this year. We're really excited about that. We're both really, really bullish on what we have ahead.</p><p>Stratton's comments have led to speculation that the two developers may be cooperating on Wolfenstein 3, which MachineGames is<a href="https://www.pcgamer.com/games/fps/more-than-8-years-after-the-new-colossus-a-new-wolfenstein-game-is-reportedly-in-the-works-at-machinegames/" target="_blank"> rumoured to be working on</a>. Id Software has just concluded active development of<a href="https://www.pcgamer.com/uk/doom-the-dark-ages/" target="_blank"> Doom: The Dark Ages</a> following the expansions' release, so this is possible. What's interesting to me, however, is how Stratton repeatedly references technology.</p><p>The id Software layoffs heavily impact the developer's Frankfurt arm, including numerous designers of the formidable id-tech engine. This led to fears that id-tech was being shelved. Microsoft contradicted this, though further<a href="https://www.pcgamer.com/gaming-industry/report-contradicts-microsofts-statements-that-id-software-hasnt-been-shoved-onto-unreal-from-id-tech-its-most-likely-going-to-end-up-in-the-in-the-trash-can/" target="_blank"> reports left the question open</a>. But Stratton's comments lead me to believe we might be seeing a tech alignment between the two developers as a result of those Frankfurt layoffs.</p><p>While id Software built Doom: The Dark Ages on id-tech 8, MachineGames used a modified version of id-tech 7, called Motor, for Indiana Jones and the Great Circle. The fact that Stratton references both teams' "incredibly talented engineers" suggests to me that id Software is folding MachineGames' engine programmers directly into id-tech's ongoing development, with both teams working on the engine concurrently going forward. Assuming that id tech hasn't been canned outright, this approach would make sense given the expertise id Software lost from its Frankfurt arm.</p><p>Sadly, the layoffs that affected id Software were far from the last at Xbox. After cutting 1600 jobs in the summer, Xbox<a href="https://www.pcgamer.com/gaming-industry/xbox-lays-off-268-more-employees-merges-obsidian-into-bethesda-and-puts-activision-in-charge-of-halo/" target="_blank"> initiated a second wave of layoffs in September</a> that also saw Obsidian and Bethesda merge and put Activision in charge of Halo. Further Xbox layoffs are planned leading up to January 2027, while Microsoft more broadly has offered a<a href="https://www.pcgamer.com/gaming-industry/microsoft-is-looking-to-cut-more-than-25-percent-of-its-workforce/" target="_blank"> "voluntary exit offer"</a> to over a quarter of its workforce.</p><div class="product"><a data-dimension112="55f70446-d545-11f1-8b78-8facce9f8a7d" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="55f70446-d545-11f1-8b78-8facce9f8a7d" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Romero Games has a new publisher for the game Xbox abandoned, but its 110-person team is now just 16 devs: 'I needed to basically design a new game that could use as much of that stuff as possible' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>In a new interview with <a href="https://www.videogameschronicle.com/news/john-romero-confirms-his-axed-xbox-game-has-a-new-publisher-and-hes-rehired-some-staff/" target="_blank">VGC</a>, FPS legend John Romero revealed how things were going at Romero Games, the studio he leads alongside his wife, veteran designer Brenda Romero. After its unannounced shooter project was <a href="https://www.pcgamer.com/gaming-industry/legendary-fps-developer-john-romero-says-his-studio-survived-the-cancellation-of-our-huge-game-and-its-shooter-project-will-be-new-to-people-the-way-that-going-through-elden-ring-was-a-really-new-experience/" target="_blank">canceled by Xbox last year</a>, Romero Games managed to secure a new publisher, but there's a catch: The team is now only a tenth the size it was while funded by Xbox. Romero says they've rescoped to use the material they already had on a smaller, more focused game.</p><div class="product"><a data-dimension112="e6fd4952-d48f-11f1-ba57-45c3d59e9877" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="e6fd4952-d48f-11f1-ba57-45c3d59e9877" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/romero-games-has-a-new-publisher-for-the-game-xbox-abandoned-but-its-110-person-team-is-now-just-16-devs-i-needed-to-basically-design-a-new-game-that-could-use-as-much-of-that-stuff-as-possible/</link>
                                                                            <description>
                            <![CDATA[ Champions adjust. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">odqErXWFsduT2G7Tpj3hcD</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/4pSu2dTvKQXki2NpfLme8c-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 30 Oct 2026 18:33:30 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                <author><![CDATA[ ted.litchfield@futurenet.com (Ted Litchfield) ]]></author>                    <dc:creator><![CDATA[ Ted Litchfield ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/8DyQVBz7FCynDY9QiJyH9D-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;&lt;br&gt;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/4pSu2dTvKQXki2NpfLme8c-1920-80.jpg">
                                                            <media:credit><![CDATA[Danny Cozens/BAFTA via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[John Romero and Brenda Romero Audi Arrival, British Academy Games Awards.Venue: Tobacco Dock, London.Date: 6 April 2017.Host: Danny Wallace .-.Area: Audi Arrivals]]></media:description>                                                            <media:text><![CDATA[John Romero and Brenda Romero Audi Arrival, British Academy Games Awards.Venue: Tobacco Dock, London.Date: 6 April 2017.Host: Danny Wallace .-.Area: Audi Arrivals]]></media:text>
                                <media:title type="plain"><![CDATA[John Romero and Brenda Romero Audi Arrival, British Academy Games Awards.Venue: Tobacco Dock, London.Date: 6 April 2017.Host: Danny Wallace .-.Area: Audi Arrivals]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/4pSu2dTvKQXki2NpfLme8c-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>In a new interview with <a href="https://www.videogameschronicle.com/news/john-romero-confirms-his-axed-xbox-game-has-a-new-publisher-and-hes-rehired-some-staff/" target="_blank">VGC</a>, FPS legend John Romero revealed how things were going at Romero Games, the studio he leads alongside his wife, veteran designer Brenda Romero. After its unannounced shooter project was <a href="https://www.pcgamer.com/gaming-industry/legendary-fps-developer-john-romero-says-his-studio-survived-the-cancellation-of-our-huge-game-and-its-shooter-project-will-be-new-to-people-the-way-that-going-through-elden-ring-was-a-really-new-experience/" target="_blank">canceled by Xbox last year</a>, Romero Games managed to secure a new publisher, but there's a catch: The team is now only a tenth the size it was while funded by Xbox. Romero says they've rescoped to use the material they already had on a smaller, more focused game.</p><div class="product"><a data-dimension112="e6fd4952-d48f-11f1-ba57-45c3d59e9877" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="e6fd4952-d48f-11f1-ba57-45c3d59e9877" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Real-world disaster footage in Modern Warfare 4 opening cinematic will be removed following complaints from victims' families ]]></title>
                                                                                                <dc:content><![CDATA[ <p>A <a href="https://www.koreaherald.com/article/10920719" target="_blank">Korea Herald</a> report says the opening cinematic of <a href="https://www.pcgamer.com/call-of-duty-modern-warfare-4/" target="_blank">Call of Duty: Modern Warfare 4</a> will be edited to remove video clips of a real-world disaster in South Korea that left 160 people dead.</p><p>The <a href="https://en.wikipedia.org/wiki/Seoul_Halloween_crowd_crush" target="_blank">Seoul Halloween crowd crush</a> occurred in October 2022 during Halloween celebrations in the city's Itaewon neighborhood, when a crowd surge in the narrow streets and alleys resulted in 160 deaths and left nearly 200 more injured. The opening cinematic of Modern Warfare 4 uses footage from that disaster to portray the immediate aftermath of a fictional North Korean invasion of South Korea, the basis of the game's story.</p><p>Activision said the use of the video was not meant to "reference or trivialize" the actual event, but merely "to establish the game's fictional narrative." A statement released by families of victims reported by the <a href="https://www.bbc.com/news/articles/cx5ynj718zymo" target="_blank">BBC</a>, however, said "using such an event as material for a game made for entertainment is in itself highly inappropriate and senseless," and added that if Activision "has even a minimum of courtesy and empathy towards the victims, it should take corrective action without delay."</p><p>That's now set to happen, as Activision has released a statement saying it will remove the footage from the game and apologized for using it. "We offer our deepest condolences and sincere apologies to the bereaved families, victims and everyone who has been deeply hurt or distressed by this incident." the publisher said.</p><p>However, there will be some delay before that happens: The Modern Warfare 4 opening cinematic will be changed in an update set to roll out on November 12.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><div class="product"><a data-dimension112="b289335e-d474-11f1-a81e-5f5ca2a32b0b" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="b289335e-d474-11f1-a81e-5f5ca2a32b0b" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/real-world-disaster-footage-in-modern-warfare-4-opening-cinematic-will-be-removed-following-complaints-from-victims-families/</link>
                                                                            <description>
                            <![CDATA[ Clips of rescue efforts following a crowd crush in Seoul that killed 160 people in 2022 was used to represent the immediate aftermath of a North Korean invasion. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">6HKctDYRn5s77obU5s387U</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/cpkNcG553fzWLqzaWZu3d3-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 30 Oct 2026 15:20:25 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                <author><![CDATA[ andy.chalk@pcgamer.com (Andy Chalk) ]]></author>                    <dc:creator><![CDATA[ Andy Chalk ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/hkTeZoDeGrvhQZtrNGPkbB-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/cpkNcG553fzWLqzaWZu3d3-1920-80.jpg">
                                                            <media:credit><![CDATA[Activision]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Call of Duty: Modern Warfare 4 screen - soldier with a rifle]]></media:description>                                                            <media:text><![CDATA[Call of Duty: Modern Warfare 4 screen - soldier with a rifle]]></media:text>
                                <media:title type="plain"><![CDATA[Call of Duty: Modern Warfare 4 screen - soldier with a rifle]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/cpkNcG553fzWLqzaWZu3d3-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>A <a href="https://www.koreaherald.com/article/10920719" target="_blank">Korea Herald</a> report says the opening cinematic of <a href="https://www.pcgamer.com/call-of-duty-modern-warfare-4/" target="_blank">Call of Duty: Modern Warfare 4</a> will be edited to remove video clips of a real-world disaster in South Korea that left 160 people dead.</p><p>The <a href="https://en.wikipedia.org/wiki/Seoul_Halloween_crowd_crush" target="_blank">Seoul Halloween crowd crush</a> occurred in October 2022 during Halloween celebrations in the city's Itaewon neighborhood, when a crowd surge in the narrow streets and alleys resulted in 160 deaths and left nearly 200 more injured. The opening cinematic of Modern Warfare 4 uses footage from that disaster to portray the immediate aftermath of a fictional North Korean invasion of South Korea, the basis of the game's story.</p><p>Activision said the use of the video was not meant to "reference or trivialize" the actual event, but merely "to establish the game's fictional narrative." A statement released by families of victims reported by the <a href="https://www.bbc.com/news/articles/cx5ynj718zymo" target="_blank">BBC</a>, however, said "using such an event as material for a game made for entertainment is in itself highly inappropriate and senseless," and added that if Activision "has even a minimum of courtesy and empathy towards the victims, it should take corrective action without delay."</p><p>That's now set to happen, as Activision has released a statement saying it will remove the footage from the game and apologized for using it. "We offer our deepest condolences and sincere apologies to the bereaved families, victims and everyone who has been deeply hurt or distressed by this incident." the publisher said.</p><p>However, there will be some delay before that happens: The Modern Warfare 4 opening cinematic will be changed in an update set to roll out on November 12.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><div class="product"><a data-dimension112="b289335e-d474-11f1-a81e-5f5ca2a32b0b" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="b289335e-d474-11f1-a81e-5f5ca2a32b0b" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Modern Warfare 4's newest map is actually older than the Gen Z & Alpha teens who will play it ]]></title>
                                                                                                <dc:content><![CDATA[ <p>After 23 mainline games, there are far more Call of Duty maps than anyone can reasonably remember. That's why I'm impressed it took just one screenshot for several fans (with back pain, presumably) to clock that an upcoming Modern Warfare 4 map is actually a remake of a map that's over 20 years old. </p><p>Backstab, the new 6v6 map arriving on November 6, is a dead ringer for <a href="https://callofduty.fandom.com/wiki/Burgundy">Burgundy</a>, first seen in Call of Duty 2 way back in 2005. That means Backstab is older than the teenagers currently playing Call of Duty—do with that information what you will.</p><p>A number of people noticed this around the same time, but I'll credit Reddit user <a href="https://www.reddit.com/r/modernwarfare4/s/hxFsMsjkPw">wizward64</a> for providing helpful visuals.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:36.02%;"><img id="8ZZjVCYN6Sif9QbnZDDxqc" name="burgundy backstab comparison" alt="Modern Warfare 4" src="https://cdn.mos.cms.futurecdn.net/8ZZjVCYN6Sif9QbnZDDxqc-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="922" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p>Apologies to the reader typing "This was a classic, show some respect!", but there's no way I would've noticed the resemblance on my own. I played Call of Duty 2 on the Xbox 360 when it was new, but not all that much multiplayer. I really like the <a href="https://youtu.be/QQrsnytVwns?t=49" target="_blank">look of the original Burgundy</a>, though: The desaturated green grass and beige brickwork of the French countryside still looks so clean and attractive 21 years later. I'm also now wondering if my favorite Day of Defeat: Source map (<a href="https://dayofdefeat.fandom.com/wiki/Donner/Gallery">Donner</a>) snuck in some of these CoD 2 assets, or if all WW2 shooters of this era were riffing on the same Saving Private Ryan scenes.</p><p>The layouts are near 1:1, which is neat, though the theming is clearly altered. Burgundy was a WW2 map in France (duh) and Backstab appears to take place in either Russia or North Korea (I think I see Cyrillic script on those signs, so leaning toward the former). Backstab is also snowy, so maybe this town will exist in the eventual Russian chunk of the Hajin DMZ map.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/QQrsnytVwns?start=39" allowfullscreen=""></iframe></div></div><p>Burgundy was a pretty small map for Call of Duty 2, and I expect it'll feel even smaller at Modern Warfare 4's quicker pace. The map's signature feature was a pair of two-story buildings that overlooked the central courtyard from opposite sides of the battlefield. High windows with usable machine gun emplacements made these buildings important for map control, but those windows will presumably become regular sniper nests in Backstab.</p><p>Call of Duty is famous for recycling old maps, but a deep dive into the vault like this feels different from the usual. This isn't Infinity Ward remaking a popular map to please expectant fans like we see with yearly iterations of Nuketown and Shipment, but instead pulling a relatively unknown goodie and refreshing it for a new audience. </p><p>The OG Call of Duty studio has apparently been doing this for a while and I didn't notice: As commenters point out in that same Reddit thread, the Modern Warfare 2 (2022) map <a href="https://callofduty.fandom.com/wiki/Taraq">Taraq</a> was a remake of CoD 1's <a href="https://callofduty.fandom.com/wiki/Neuville">Neuville</a> and Modern Warfare 2019 map <a href="https://callofduty.fandom.com/wiki/Suldal_Harbor">Suldal Harbor</a> was a remake of CoD 1's <a href="https://callofduty.fandom.com/wiki/Harbor">Harbor</a>. Hey, those maps were pretty good.</p><div class="product"><a data-dimension112="e13686bc-d3ce-11f1-b768-a7a6c08becad" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="e13686bc-d3ce-11f1-b768-a7a6c08becad" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/call-of-duty/modern-warfare-4s-newest-map-is-actually-older-than-the-gen-z-and-alpha-teens-who-will-play-it/</link>
                                                                            <description>
                            <![CDATA[ This map can drink. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">38J3bQGevA2YL33PxPRBQ6</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/X2xUE5bZdxT3QrB6vMvCk-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 29 Oct 2026 19:36:41 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Call of Duty]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                    <category><![CDATA[FPS]]></category>
                                                                                                                    <dc:creator><![CDATA[ Morgan Park ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/VVB5GCgA3xLhkX8FVAWw5D-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/X2xUE5bZdxT3QrB6vMvCk-1920-80.jpg">
                                                            <media:credit><![CDATA[Activision Blizzard]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Modern Warfare 4]]></media:description>                                                            <media:text><![CDATA[Modern Warfare 4]]></media:text>
                                <media:title type="plain"><![CDATA[Modern Warfare 4]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/X2xUE5bZdxT3QrB6vMvCk-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>After 23 mainline games, there are far more Call of Duty maps than anyone can reasonably remember. That's why I'm impressed it took just one screenshot for several fans (with back pain, presumably) to clock that an upcoming Modern Warfare 4 map is actually a remake of a map that's over 20 years old. </p><p>Backstab, the new 6v6 map arriving on November 6, is a dead ringer for <a href="https://callofduty.fandom.com/wiki/Burgundy">Burgundy</a>, first seen in Call of Duty 2 way back in 2005. That means Backstab is older than the teenagers currently playing Call of Duty—do with that information what you will.</p><p>A number of people noticed this around the same time, but I'll credit Reddit user <a href="https://www.reddit.com/r/modernwarfare4/s/hxFsMsjkPw">wizward64</a> for providing helpful visuals.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:36.02%;"><img id="8ZZjVCYN6Sif9QbnZDDxqc" name="burgundy backstab comparison" alt="Modern Warfare 4" src="https://cdn.mos.cms.futurecdn.net/8ZZjVCYN6Sif9QbnZDDxqc-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="922" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p>Apologies to the reader typing "This was a classic, show some respect!", but there's no way I would've noticed the resemblance on my own. I played Call of Duty 2 on the Xbox 360 when it was new, but not all that much multiplayer. I really like the <a href="https://youtu.be/QQrsnytVwns?t=49" target="_blank">look of the original Burgundy</a>, though: The desaturated green grass and beige brickwork of the French countryside still looks so clean and attractive 21 years later. I'm also now wondering if my favorite Day of Defeat: Source map (<a href="https://dayofdefeat.fandom.com/wiki/Donner/Gallery">Donner</a>) snuck in some of these CoD 2 assets, or if all WW2 shooters of this era were riffing on the same Saving Private Ryan scenes.</p><p>The layouts are near 1:1, which is neat, though the theming is clearly altered. Burgundy was a WW2 map in France (duh) and Backstab appears to take place in either Russia or North Korea (I think I see Cyrillic script on those signs, so leaning toward the former). Backstab is also snowy, so maybe this town will exist in the eventual Russian chunk of the Hajin DMZ map.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/QQrsnytVwns?start=39" allowfullscreen=""></iframe></div></div><p>Burgundy was a pretty small map for Call of Duty 2, and I expect it'll feel even smaller at Modern Warfare 4's quicker pace. The map's signature feature was a pair of two-story buildings that overlooked the central courtyard from opposite sides of the battlefield. High windows with usable machine gun emplacements made these buildings important for map control, but those windows will presumably become regular sniper nests in Backstab.</p><p>Call of Duty is famous for recycling old maps, but a deep dive into the vault like this feels different from the usual. This isn't Infinity Ward remaking a popular map to please expectant fans like we see with yearly iterations of Nuketown and Shipment, but instead pulling a relatively unknown goodie and refreshing it for a new audience. </p><p>The OG Call of Duty studio has apparently been doing this for a while and I didn't notice: As commenters point out in that same Reddit thread, the Modern Warfare 2 (2022) map <a href="https://callofduty.fandom.com/wiki/Taraq">Taraq</a> was a remake of CoD 1's <a href="https://callofduty.fandom.com/wiki/Neuville">Neuville</a> and Modern Warfare 2019 map <a href="https://callofduty.fandom.com/wiki/Suldal_Harbor">Suldal Harbor</a> was a remake of CoD 1's <a href="https://callofduty.fandom.com/wiki/Harbor">Harbor</a>. Hey, those maps were pretty good.</p><div class="product"><a data-dimension112="e13686bc-d3ce-11f1-b768-a7a6c08becad" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="e13686bc-d3ce-11f1-b768-a7a6c08becad" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Destiny 2 unvaulting update: It sure sounds like the original Destiny is finally coming to PC ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Bungie shocked the world (or at least, it shocked the world's Destiny fans) when it <a href="https://www.pcgamer.com/games/bungie-un-cancels-destiny-vaulted-content-is-coming-back-as-new-leadership-promises-destiny-is-foundational-to-our-future/" target="_blank">un-canceled Destiny 2</a> in September, saying the game "is foundational to Bungie’s future" and promising to restore vaulted content and "return Destiny to its original promise." In a <a href="https://www.bungie.net/7/en/News/Article/bungiecommunityupdate_10_27" target="_blank">community update</a> shared today, the studio revealed more about that process, and one standout point is that it sure sounds like the original Destiny is finally coming to PC. </p><p>The update begins with a broad overview of what led up to the unvaulting announcement and what's happened since, a broad roadmap that breaks down into three sections—First Pass, Stretch Goals, and stuff that's probably not going to happen "for technical and/or strategic reasons"—and a progress bar:</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:30.73%;"><img id="oxMkLMNfdVtecuZVEkdUT5" name="Imported image 1 - 1793295731075" alt="Destiny 2 unvaulting timeline as of October 2026" src="https://cdn.mos.cms.futurecdn.net/oxMkLMNfdVtecuZVEkdUT5-1920-80.jpg" mos="" align="middle" fullscreen="1" width="602" height="185" attribution="" endorsement="" class="inline expandable" /><a href='https://cdn.mos.cms.futurecdn.net/oxMkLMNfdVtecuZVEkdUT5-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Bungie)</span></figcaption></figure><p>It's worth noting up front that while things have been happening fairly quickly so far, the actual <em>Great Unvaultening </em>is still a long way off. The pre-production process is now underway and expected to run until January or February of 2027, and "from that point we <em>expect</em> full production will be about 12 months to fully complete the porting process," Bungie head of product Josh Deane said. That puts it in early 2028—assuming things go according to plan.</p><p>Deane then touched on what comes after that, referencing his comment in September that Bungie is "not done with Destiny." With caveats that "some things are subject to change in success or failure," he said that Bungie is "marching forward with a phased plan for Destiny’s future that celebrates our legacy and propels us into a new, far green country." To that end, he cited three "anchors" for players to watch for:</p><p><strong>Destiny 2 “Celebration’’ [Expect a new February Progress bar] </strong></p><ul><li>We believe we need to have a celebration in Destiny 2, beyond Monument of Triumph, for the community that provides <strong>new </strong>updates for you all to enjoy. More details to come!</li></ul><p><strong>Destiny ‘Legacy’ [Expect a new February Progress bar] </strong></p><ul><li>Our epic journey started over a decade ago, and the <strong>whole </strong>experience needs to be served to you all where you play today. Expect more information when we come back to you all early next year.</li></ul><p><strong>Redacted [TBD]</strong></p><ul><li>Launch Ventrilo Message: ‘We’re back’</li></ul><p>The second point is the one that caught our interest. Destiny 2 was (and, some PC Gamer folks would argue, still is) huge on PC, but the original game never came our way: More than a decade after it launched, it remains exclusive to consoles. </p><p>Proclaiming that "the whole experience needs to be served to you all where you play today" pretty strongly suggests to me that's going to change, and that's a big deal: Destiny 2's <a href="https://www.pcgamer.com/games/fps/destiny-2-the-final-shape-review/" target="_blank">Final Shape expansion</a> brought an end to the 10-year Light and Darkness saga in 2024, but a lot of us never got to experience how it actually started, and I'd bet that having the opportunity to do so would bring a lot of lapsed players (myself included) back to see what's cooking.</p><p>Deane concluded by saying that this is a major undertaking and not one that will be finished quickly. "It’s important to know that this is a true reset moment for Bungie, Marathon, and Destiny. We also know time isn’t our friend; we’re playing from behind with the cards we have and I’m sure we’ll have to take more punches and make some hard decisions along the way," he said.</p><p>"Knowing we are early in incubating our future and actively working on projects to bridge us to that new home, don’t expect us to make a Destiny announcement at the TGA’s this year, or to randomly drop a logo that sets the world on fire right away.</p><p>"We get there when we get there."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><div class="product"><a data-dimension112="e3dbfb66-d3c1-11f1-b7b8-0393b3ab37ad" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="e3dbfb66-d3c1-11f1-b7b8-0393b3ab37ad" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/destiny-2-unvaulting-update-it-sure-sounds-like-the-original-destiny-is-finally-coming-to-pc/</link>
                                                                            <description>
                            <![CDATA[ The actual restoration of vaulting Destiny 2 content is still a long way off, but Bungie has big plans for the future. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">k6MrXuaXLonueYaKUSESSF</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/hNFdy9QWLnANQi7KxgQvg6-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 29 Oct 2026 17:57:52 +0000</pubDate>                                                                                                                                <updated>Thu, 29 Oct 2026 21:54:42 +0000</updated>
                                                                                                                                            <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                <author><![CDATA[ andy.chalk@pcgamer.com (Andy Chalk) ]]></author>                    <dc:creator><![CDATA[ Andy Chalk ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/hkTeZoDeGrvhQZtrNGPkbB-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/hNFdy9QWLnANQi7KxgQvg6-1920-80.jpg">
                                                            <media:credit><![CDATA[Bungie]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Images from The Final Shape showcase]]></media:description>                                                            <media:text><![CDATA[Images from The Final Shape showcase]]></media:text>
                                <media:title type="plain"><![CDATA[Images from The Final Shape showcase]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/hNFdy9QWLnANQi7KxgQvg6-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Bungie shocked the world (or at least, it shocked the world's Destiny fans) when it <a href="https://www.pcgamer.com/games/bungie-un-cancels-destiny-vaulted-content-is-coming-back-as-new-leadership-promises-destiny-is-foundational-to-our-future/" target="_blank">un-canceled Destiny 2</a> in September, saying the game "is foundational to Bungie’s future" and promising to restore vaulted content and "return Destiny to its original promise." In a <a href="https://www.bungie.net/7/en/News/Article/bungiecommunityupdate_10_27" target="_blank">community update</a> shared today, the studio revealed more about that process, and one standout point is that it sure sounds like the original Destiny is finally coming to PC. </p><p>The update begins with a broad overview of what led up to the unvaulting announcement and what's happened since, a broad roadmap that breaks down into three sections—First Pass, Stretch Goals, and stuff that's probably not going to happen "for technical and/or strategic reasons"—and a progress bar:</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:30.73%;"><img id="oxMkLMNfdVtecuZVEkdUT5" name="Imported image 1 - 1793295731075" alt="Destiny 2 unvaulting timeline as of October 2026" src="https://cdn.mos.cms.futurecdn.net/oxMkLMNfdVtecuZVEkdUT5-1920-80.jpg" mos="" align="middle" fullscreen="1" width="602" height="185" attribution="" endorsement="" class="inline expandable" /><a href='https://cdn.mos.cms.futurecdn.net/oxMkLMNfdVtecuZVEkdUT5-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Bungie)</span></figcaption></figure><p>It's worth noting up front that while things have been happening fairly quickly so far, the actual <em>Great Unvaultening </em>is still a long way off. The pre-production process is now underway and expected to run until January or February of 2027, and "from that point we <em>expect</em> full production will be about 12 months to fully complete the porting process," Bungie head of product Josh Deane said. That puts it in early 2028—assuming things go according to plan.</p><p>Deane then touched on what comes after that, referencing his comment in September that Bungie is "not done with Destiny." With caveats that "some things are subject to change in success or failure," he said that Bungie is "marching forward with a phased plan for Destiny’s future that celebrates our legacy and propels us into a new, far green country." To that end, he cited three "anchors" for players to watch for:</p><p><strong>Destiny 2 “Celebration’’ [Expect a new February Progress bar] </strong></p><ul><li>We believe we need to have a celebration in Destiny 2, beyond Monument of Triumph, for the community that provides <strong>new </strong>updates for you all to enjoy. More details to come!</li></ul><p><strong>Destiny ‘Legacy’ [Expect a new February Progress bar] </strong></p><ul><li>Our epic journey started over a decade ago, and the <strong>whole </strong>experience needs to be served to you all where you play today. Expect more information when we come back to you all early next year.</li></ul><p><strong>Redacted [TBD]</strong></p><ul><li>Launch Ventrilo Message: ‘We’re back’</li></ul><p>The second point is the one that caught our interest. Destiny 2 was (and, some PC Gamer folks would argue, still is) huge on PC, but the original game never came our way: More than a decade after it launched, it remains exclusive to consoles. </p><p>Proclaiming that "the whole experience needs to be served to you all where you play today" pretty strongly suggests to me that's going to change, and that's a big deal: Destiny 2's <a href="https://www.pcgamer.com/games/fps/destiny-2-the-final-shape-review/" target="_blank">Final Shape expansion</a> brought an end to the 10-year Light and Darkness saga in 2024, but a lot of us never got to experience how it actually started, and I'd bet that having the opportunity to do so would bring a lot of lapsed players (myself included) back to see what's cooking.</p><p>Deane concluded by saying that this is a major undertaking and not one that will be finished quickly. "It’s important to know that this is a true reset moment for Bungie, Marathon, and Destiny. We also know time isn’t our friend; we’re playing from behind with the cards we have and I’m sure we’ll have to take more punches and make some hard decisions along the way," he said.</p><p>"Knowing we are early in incubating our future and actively working on projects to bridge us to that new home, don’t expect us to make a Destiny announcement at the TGA’s this year, or to randomly drop a logo that sets the world on fire right away.</p><p>"We get there when we get there."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><div class="product"><a data-dimension112="e3dbfb66-d3c1-11f1-b7b8-0393b3ab37ad" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="e3dbfb66-d3c1-11f1-b7b8-0393b3ab37ad" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Project Titan's end 'immediately instilled a culture of humility' in the Overwatch team which has helped them see the last decade through ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Most Overwatch fans will know its origins by now: as the recycled product made from the scraps of Project Titan, an MMO that was abruptly <a href="https://www.pcgamer.com/blizzards-mmo-titan-canceled-after-seven-years-in-development/">cancelled by Blizzard after seven years</a> in development. After this, the team was just <a href="https://www.pcgamer.com/games/fps/it-was-supposed-to-be-the-greatest-time-ever-jeff-kaplan-only-got-6-weeks-to-come-up-with-and-pitch-overwatch-we-were-probably-the-most-demoralised-wed-ever-been/">given six weeks to come up with a new pitch</a>, something that could rival the revenue brought in by Warcraft; that doesn't sound stressful at all. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Bo3wsG7DJWhtcbSqK5xqH8" name="OVR_S3_MythicWeapon_Hanzo_TokyoRebel_002" alt="A promotional screenshot of Overwatch season 3 skins." src="https://cdn.mos.cms.futurecdn.net/Bo3wsG7DJWhtcbSqK5xqH8-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blizzard Entertainment)</span></figcaption></figure><p>But if there were a silver lining to this ridiculous crunch, it would be that it instilled resilience and humility into Team 4 from the start of Overwatch's life, according to Keller. This is something that has undoubtedly seen the team through a decade of Overwatch which has included some particularly rough patches, especially around Overwatch 2's inception. </p><p>Hard work and staying true to what made Overwatch so great to begin with was key to Team 4 <a href="https://www.pcgamer.com/games/fps/overwatchs-glow-up-didnt-just-happen-overnight-its-successes-have-been-in-the-works-for-years-now/">getting the live-service game back on track</a> over the last few years. And now, 10 years later, the team can be proud of the fact that Overwatch is in its best shape ever. </p><p>It also means that the team rarely gets too caught up in what the future holds. "It's really hard to predict 'Hey, 10 years out in the future, we'll still be working on this thing that we all enjoy and love today'," Keller adds. "But we're here now… We have big hopes and dreams of what Overwatch can be, and so even though I can't predict the future, I can't wait to see what Overwatch is like 10 years from now." </p><div class="product"><a data-dimension112="a79805ca-d2c5-11f1-b048-615a2785705a" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="a79805ca-d2c5-11f1-b048-615a2785705a" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/project-titans-end-immediately-instilled-a-culture-of-humility-in-the-overwatch-team-which-has-helped-them-see-the-last-decade-through/</link>
                                                                            <description>
                            <![CDATA[ "Overwatch was born out of the ashes of a previous [game]." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">eLFZZBKtKKfdaca3HFvw7W</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/i44CpyNvDqJpfK7jeUekzS-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 28 Oct 2026 11:53:09 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Elie Gould ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/5HPuSiRgqza2PQESSqE7gG-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Elie is a news writer with an unhealthy love of horror games—even though their greatest fear is being chased. When they&#039;re not screaming or hiding, there&#039;s a good chance you&#039;ll find them testing their metal in metroidvanias or just admiring their Pokemon TCG collection. Elie has previously worked at TechRadar Gaming as a staff writer and studied at JOMEC in International Journalism and Documentaries – spending their free time filming short docs about Smash Bros. or any indie game that crossed their path.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/i44CpyNvDqJpfK7jeUekzS-1920-80.jpg">
                                                            <media:credit><![CDATA[Blizzard]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Portrait pic of Tracer in Overwatch]]></media:description>                                                            <media:text><![CDATA[Portrait pic of Tracer in Overwatch]]></media:text>
                                <media:title type="plain"><![CDATA[Portrait pic of Tracer in Overwatch]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/i44CpyNvDqJpfK7jeUekzS-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Most Overwatch fans will know its origins by now: as the recycled product made from the scraps of Project Titan, an MMO that was abruptly <a href="https://www.pcgamer.com/blizzards-mmo-titan-canceled-after-seven-years-in-development/">cancelled by Blizzard after seven years</a> in development. After this, the team was just <a href="https://www.pcgamer.com/games/fps/it-was-supposed-to-be-the-greatest-time-ever-jeff-kaplan-only-got-6-weeks-to-come-up-with-and-pitch-overwatch-we-were-probably-the-most-demoralised-wed-ever-been/">given six weeks to come up with a new pitch</a>, something that could rival the revenue brought in by Warcraft; that doesn't sound stressful at all. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Bo3wsG7DJWhtcbSqK5xqH8" name="OVR_S3_MythicWeapon_Hanzo_TokyoRebel_002" alt="A promotional screenshot of Overwatch season 3 skins." src="https://cdn.mos.cms.futurecdn.net/Bo3wsG7DJWhtcbSqK5xqH8-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blizzard Entertainment)</span></figcaption></figure><p>But if there were a silver lining to this ridiculous crunch, it would be that it instilled resilience and humility into Team 4 from the start of Overwatch's life, according to Keller. This is something that has undoubtedly seen the team through a decade of Overwatch which has included some particularly rough patches, especially around Overwatch 2's inception. </p><p>Hard work and staying true to what made Overwatch so great to begin with was key to Team 4 <a href="https://www.pcgamer.com/games/fps/overwatchs-glow-up-didnt-just-happen-overnight-its-successes-have-been-in-the-works-for-years-now/">getting the live-service game back on track</a> over the last few years. And now, 10 years later, the team can be proud of the fact that Overwatch is in its best shape ever. </p><p>It also means that the team rarely gets too caught up in what the future holds. "It's really hard to predict 'Hey, 10 years out in the future, we'll still be working on this thing that we all enjoy and love today'," Keller adds. "But we're here now… We have big hopes and dreams of what Overwatch can be, and so even though I can't predict the future, I can't wait to see what Overwatch is like 10 years from now." </p><div class="product"><a data-dimension112="a79805ca-d2c5-11f1-b048-615a2785705a" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="a79805ca-d2c5-11f1-b048-615a2785705a" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Call of Duty: Modern Warfare 4 review ]]></title>
                                                                                                <dc:content><![CDATA[ <p>There is a new game titled "Call of Duty" every year, but it's not every year that Call of Duty is really <em>back.</em> </p><div  class="fancy-box"><div class="fancy_box-title">NEED TO KNOW</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>What is it </strong>The next Call of Duty from the original creators of Call of Duty<br /><strong>Release date </strong>October 23, 2026<br /><strong>Expect to pay </strong>$70/£60<br /><strong>Publisher </strong>Activision Blizzard<br /><strong>Developer </strong>Infinity Ward<br /><strong>Reviewed on </strong>RTX 5090, Ryzen 7 9800X3D 4.7 GHz, 64GB RAM<br /><strong>Multiplayer </strong>Up to 60 players<br /><strong>Steam Deck </strong>Unsupported<br /><strong>Link </strong><a data-analytics-id="inline-link" href="https://www.callofduty.com/" target="_blank">Official site</a></p></div></div><p>The tireless schedule of Activision's load-bearing FPS has resulted in more bad games than good as of late—Modern Warfare 3 was an expansion-sized sequel rushed out the door, Black Ops 6 was a step back for multiplayer, and its immediate followup Black Ops 7 was clocked as superfluous and uninteresting even by rain-or-shine fans. These back-to-back games, shouldered by Treyarch, Sledgehammer, and Raven, had cracks and compromises that suggested the Call of Duty machine just can't keep up with both "good" and "fast" anymore.</p><p>Modern Warfare 4's greatness shows how right that is. This is an extravagant package on all fronts: A kinetic 6v6 FPS with truly excellent gunplay, a fun campaign that doesn't just play the hits, and an expansive extraction "mode" that would be its own game if any other name were on the box.</p><p>I have complaints, but this is what it looks like when Call of Duty is in the pocket. The best Call of Duty studio got to take its time (four years, tied with the longest in series history) and it shows. </p><h3 class="article-body__section" id="section-multiplayer"><span>Multiplayer</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vtj5Rdg6sjUyREPAw4Pqzj" name="20261027105633_1" alt="Modern Warfare 4" src="https://cdn.mos.cms.futurecdn.net/vtj5Rdg6sjUyREPAw4Pqzj-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p>These days, whether or not a Call of Duty clicks with me begins and ends with the guns—how they look, sound, animate, and change with attachments—and Infinity Ward is simply unmatched on those details. Modern Warfare 4's guns spit out layered, cacophonous blasts that will overpower your voice chat by default (as they should). They shake your world as you shoot them without getting in the way of aim. They reload with personality and flair without wasting time. They're loud and metallic without sounding tinny or plastic, like Treyarch guns always do.</p><p>Modern Warfare 4 has some of the easiest guns to control in the genre, yet in action, they feel substantial and weighty like a milsim. This is the magic trick that Call of Duty studios regularly attempt, but only this one has mastered.</p><div><blockquote><p>Infinity Ward just loves being extra about guns in ways that make them memorable.</p></blockquote></div><p>Infinity Ward just loves being extra about guns in ways that make them memorable. This time, they've had fun mixing both modern and dated weapons with Korean design language: The KG-7 Vulkan is a functionally standard bolt-action sniper rifle, but its worn wooden body and chipped green paint communicate that it's been fished out of an aging North Korean armory. The Warlord, meanwhile, is a double-barrel shotgun with the profile of a brutalist space vessel—flanked by two translucent plastic tubes that you can watch empty and refill as you use it. It's rad.</p><p>Not every gun is this distinctive—not even Infinity Ward can produce 30+ guns without forgettable chaff—but there is enough personality in this arsenal to latch onto for hours on-end. I've fully leveled three in just a week, tweaking my attachment setup every few matches to suss out each gun's "thing." </p><iframe src="https://content.jwplatform.com/players/CHtuaD5w.html" id="CHtuaD5w" title="CoD Apex Attachment" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen=""></iframe><p>In some cases, Infinity Ward has saved a boring gun by giving it cool attachments. The Han 86 was, to my eye, the most boring assault rifle in the game until I discovered an integrally-suppressed barrel that all-but transforms it into an MP5 in aesthetic and behavior (an FPS classic I'm always happy to see). Attachments feels like bigger choices here than ever before—you can only use five at a time, and instead of stuffing Gunsmith with 20+ barrels, muzzles, and grips that do almost the same thing, there are fewer options per category that are usually the best at what they do. </p><p>Infinity Ward has also inherited prestige attachments—the best idea to come out of those recent Black Ops sequels. Called apex attachments in Modern Warfare 4, they're add-ons unique to each gun that drastically change their behavior or add a new dimension to how they work. You only get these after maxing out a gun (or by having a blueprint with them already applied), so I don't have many yet, but I love the ones I've played with.</p><p>They range from absurd to subtle: </p><ul><li>The <strong>Hyeon Burst's apex</strong> turns it into a hybrid burst-auto rifle, beginning with a sped-up burst and transitioning into slower automatic fire as I hold the trigger.</li><li>The <strong>M4's apex</strong> swaps its traditional magazine for the top-mounted, graphics card-shaped extended mag.</li><li>The <strong>Oris DMR</strong> gets side-mounted throwing knives (yes) that you can flick at enemies to counteract the gun's close-range weakness.</li><li>The <strong>PPSH SMG</strong> gets an underbarrel launcher that spews hot napalm on the ground for some on-the-fly area denial.</li></ul><p>Apex attachments aren't always worth the hype—I found the Mojave revolver's that lets you "fan the hammer" to fire faster underwhelming as an idea—but they're a way more enticing reason to progress in Modern Warfare 4 than camos or gaudy playercards.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rRPQJKhkWqVDM9bnsCrqij" name="20261027105702_1" alt="Modern Warfare 4" src="https://cdn.mos.cms.futurecdn.net/rRPQJKhkWqVDM9bnsCrqij-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><h2 id="war-should-change">War should change</h2><p>Elsewhere in the land of "details you end up caring about after 20 years of Call of Duty" are nice quality-of-life touches in Create-a-Class, like the option to copy killstreak or perk selections to other classes, or assign operator skins on a per-class basis.</p><p>Then there's all that minutia that Infinity Ward is making a big deal about: revamped movement that allows for smoother mantling and sliding, a depth of field trick that unblurs important parts of the screen, less disruptive gunsmoke, better-looking hipfire. At the time, these all struck me as weirdly minor improvements to trumpet as big swings, and it's now clear why: Modern Warfare 4's core multiplayer takes no big swings. It is, at its core, about executing better what was already there. </p><p>That approach has its upsides, like a ridiculous attention to detail, but it underlines Activision's continued disinterest in challenging Call of Duty's status quo. Never has a shooter franchise been so shackled by traditional design choices that haven't been good for years: Killstreaks are <em>still </em>lopsided power trips that bring matches to a screeching halt so that the best player on the server can rack up more kills. Maps are <em>still</em> uninspired square boxes with three lanes and an allergy for verticality. Gunsmith <em>still</em> favors making every gun the same zero-recoil, high-capacity laser beam that wins firefights. It has been 19 years since Call of Duty 4, and I'm still getting shot by a guy who spawned behind me in Team Deathmatch.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4utUVzZJWQgF2MxdoAxAwj" name="20261027105546_1" alt="Modern Warfare 4" src="https://cdn.mos.cms.futurecdn.net/4utUVzZJWQgF2MxdoAxAwj-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p>The small country of developers who make Call of Duty could take a special interest in these problems, but they consistently don't. Instead, they design sequels around bolted-on distractions—jetpacks, hero abilities, Omnimovement—while actual big swings, like Warzone and DMZ, happen elsewhere on the main menu. We should all want more from a series that asks us to fork over $70 every year.</p><p>There is one exception, and it's sadly flying under the radar so far. Among Modern Warfare 4's slate of new modes (several of which are competently made but destined to be ignored) is Frontline, a TDM variant with one change: Teams spawn on opposite sides of the map, and those spawns never change. It sounds so minor, but it's the greatest thing to happen to Call of Duty multiplayer in a generation.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Mfm9mvTkJtZyWkoMKJxXtX-1920-80.jpg" alt="modern warfare 4" /><figcaption><small role="credit">Activision Blizzard</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4y7D5vsqdcXqybVk8Gsrji-1920-80.jpg" alt="Call of Duty: Modern Warfare 4 multiplayer character skin with a black mask and body armor " /><figcaption><small role="credit">Infinity Ward</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/B9Xn3FVtk9V33MnFZaYtJi-1920-80.jpg" alt="Modern Warfare 4: Key art showing two soldiers, weapons at the ready, walking around a corner in an open garage area." /><figcaption><small role="credit">Activision</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/KW8rUzLvWMN6KAFCwqEeg5-1920-80.jpg" alt="Key art for MW4, depicting a Korean soldier cautiously stood next to a wall as a building burns in the background." /><figcaption><small role="credit">Activision</small></figcaption></figure></figure><p>I almost couldn't believe how much better Call of Duty plays with consistent spawns: I can confidently move through the map with an idea of where enemies will come from, which gives matches an understandable continuity—a sense of tug-of-war. Matches are slower, lives more deliberate, and I'm not getting shot in the back.</p><p>My life is, for once, not up to the pull of a slot machine. We have territory, they have territory, and there's a middle ground to fight over. It's a winning formula that has worked in better casual shooters for decades (Team Fortress 2, anyone?), and singlehandedly fixes a gigantic problem with these games. Frontline is easily my new favorite way to play Call of Duty and should become the new normal, but knowing Activision and the Call of Duty audience, it'll probably be cycled out of the game and forgotten by next quarter.</p><h3 class="article-body__section" id="section-dmz"><span>DMZ</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="VNjGhQEhtfgu6qq3TAsP8E" name="dmz hero 4" alt="Modern Warfare 4 DMZ" src="https://cdn.mos.cms.futurecdn.net/VNjGhQEhtfgu6qq3TAsP8E-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><p>DMZ is, in many ways, proof that Call of Duty shouldn't be afraid to change. </p><p>Going into my first day with the mode, I honestly thought the last thing I needed was another extraction shooter. This genre can be so consuming with its long grinds and punishing stakes that, beyond the occasional Hunt: Showdown night with friends, these days I gravitate to the more consistent, team-based, and casual end of the FPS spectrum. There is no "pick up and play" extraction shooter—or wasn't, until now.</p><p>Infinity Ward has made exactly what it's claiming with DMZ: A full-fledged extraction shooter that could be a standalone game like Escape From Tarkov or Marathon, but is instead the third pillar of a yearly Call of Duty installment. Its systems are extensive, its Hajin City map haunting and expansive, and it might have the least annoying chores of any game like it.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RU5WjrN8JVa9b4N6LCBd3E" name="dmz (8)" alt="Modern Warfare 4 DMZ" src="https://cdn.mos.cms.futurecdn.net/RU5WjrN8JVa9b4N6LCBd3E-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><p>DMZ definitely has room for improvement, but I'm impressed. When I look at Modern Warfare 4's iterative core multiplayer and wonder what Infinity Ward has been doing these past four years, I realize this is it.</p><p>To me, what sets DMZ apart is how Infinity Ward isn't so interested in loss. Money is easy to make through a combination of valuables, faction assignments, and Dynamic Ops (multi-step missions that randomly populate the map). Cash earned through these missions is "banked", meaning I can't lose it even if I die without extracting. But I'm less likely to actually die than in other games, because I can pick myself up from a DBNO state once at the cost of max health.</p><p>Everything accrues XP that unlocks new stations at my FOB, crafting recipes that make future runs more convenient, and traits that permanently enhance my operator. Some of those traits are a huge deal, like a free self-revive in every match, and they don't disappear when I have a bad game. Instead, dying in the field triggers an MIA status for that operator that I can clear any time by dropping a wad of cash.</p><p>It's quite generous for this type of game, and I like it. DMZ wants me to always move forward, and in that sense, it sometimes feels more like a Call of Duty RPG.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RCdtNeZHY3NpotSRquqWgD" name="dmz (12)" alt="Modern Warfare 4 DMZ" src="https://cdn.mos.cms.futurecdn.net/RCdtNeZHY3NpotSRquqWgD-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><p>But it's not like DMZ is immune to gear fear: I had a few anxiety-inducing moments where an especially rare valuable, stack of crafting materials I needed for upgrades, or a rare weapon blueprint was burning a hole in my pack as I tried to sneak off to an extraction site. Hajin City's non-player threats—soldier patrols, helicopters, and drones that snitch on you—have yet to challenge or surprise on the level of Arc Raiders' sophisticated apocalypse machines, but they could easily overwhelm when I took my eye off the ball. I was ready to call the NPC soldiers a bunch of scrubs until they nearly ruined my best run yet.</p><p>This gets to my other favorite part of DMZ: Every extraction shooter has chores, but DMZ has a lot of structured events, locations, and formalized missions that can turn grocery runs into something bigger.</p><h2 id="a-perfect-dmz-round">A perfect DMZ round</h2><p>Like one time, a match started as a quick solo trip to find "rigid synthetics" for a stash upgrade I'd been working toward. The description for that material said they're found in residential areas, so I entered an apartment building, looted a locker, and found something I wasn't looking for: a rare key to the "Netshin IT Room."</p><p>That key had a helpful description: Unlocks the high-security server room deep within the server clusters on the upper floors of the Netshin Tech Complex within The Grid.</p><p>New sidequest added. I love that the hint didn't give everything away: I knew generally where I was going and what to look for, but no arrow or waypoint to follow. So I drove to the center of the city and found The Grid, one of the most dangerous zones in Hajin. You can tell because it's red on the map and walled off on all sides, announcing that you'd have to be dumb to run in there alone.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="UhEByQgMx4S95E5vyocFoD" name="dmz (4)" alt="Modern Warfare 4 DMZ" src="https://cdn.mos.cms.futurecdn.net/UhEByQgMx4S95E5vyocFoD-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><p>So I ran in alone, storming the Netshin building and almost dying to heavily armored grunts twice. I ran up six flights of stairs (there was probably an elevator) until I reached the top and started checking every door. Surprisingly, there were other locked doors in Netshin that led to other exclusive areas, and Netshin is just one highrise of several in this part of the city—this map is dense.</p><p>I finally found the IT department, used the key, and strolled in thinking I'd hit the jackpot. Not quite: I'd actually disturbed the nest of Jang-ui, one of Hajin's miniboss "lieutenants" that have a chance to appear in each match. Auto-turrets placed in all four corners of the room caught me by surprise and almost killed me on their own, and reinforcements from elsewhere in the building flooded in as well. It was a squirrely fight typical of Call of Duty PvE: Lots of sprinting across the room to buy time for reloads, dumping pounds of lead into Jang-ui's stupid head, and pressing G to replenish armor.</p><p>But he finally died, and the rewards were huge: A kitted burst rifle unique to the boss fight and a weapon manual that'd unlock a gun permanently for crafting. That, plus a pile of useful materials, including the synthetics I'd originally been looking for. It was a sweet haul I really didn't wanna lose, which still felt very possible, as I was out of ammo.</p><p>I thought for sure I was home free when I found a ventilation shaft that spit me out on the scaffolding under a sky bridge—a hidden exit! From there I could just jump off to escape, and it would've been the perfect end to this little adventure, except I didn't have a parachute. So for the first time, I actually used DMZ's rudimentary stealth system to sneak out of Netshin, hiding behind desks and scrounging for bullet scraps until I left the same way I entered.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pvREEJ8u7mNxxFXq3ZMNoD" name="dmz (9)" alt="Modern Warfare 4 DMZ" src="https://cdn.mos.cms.futurecdn.net/pvREEJ8u7mNxxFXq3ZMNoD-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><h2 id="pvevolution">PvEvolution</h2><p>It was a genuinely emergent, self-appointed mission that felt like the best case scenario for DMZ. Not every part of the PvE experience is awesome. Call of Duty still can't escape how normal dudes with heavy armor just aren't interesting as opponents. They can't stack up to Arc Raiders physics-based drones, Hunt: Showdown's supernatural monsters, or even Marathon's UESC corps. But those are all games where, if you're fighting the environment, you're kind of playing them wrong: They are, in practice, multiplayer stealth games until the moment PvP kicks off.</p><p>I don't think DMZ will be like that. The fodder soldiers are boring, but they're also everywhere. Killing a few doesn't make so much noise that you're alerting the whole map—relative to its size, Hajin isn't as packed with players as Warzone's battle royale modes. I felt relatively safe to engage AI patrols for their armor plates and ammo without feeling forced into an awkward melee playstyle. That's good, because everything worth doing in Hajin plays out like a mini Spec Ops mission (we all remember that old Modern Warfare co-op mode, right?), including the six "story missions" that are even more campaign-like in nature.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="E23wB3DP6Pq36jeyti6Z5E" name="dmz hero 3" alt="Modern Warfare 4 DMZ" src="https://cdn.mos.cms.futurecdn.net/E23wB3DP6Pq36jeyti6Z5E-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><div><blockquote><p>Call of Duty still can't escape how normal dudes with heavy armor just aren't interesting as opponents. </p></blockquote></div><p>Story missions are longer, narrative-focused tasks available early on. They have more bespoke ingredients than the randomized Dynamic Ops: There's one about a casino heist and another that involves manually pushing a gurney down hospital hallways while AI attacks on all sides. These are fun and pay well, but they don't change from match to match. It seems like Infinity Ward created these as a guided on-ramp for players new to extraction shooters. You have to queue into a story mission before the match starts, and if you do, you'll be the only squad in the match with that mission.</p><p>So while DMZ's PvE factions don't stand out, the incentives for fighting them do. Dynamic Ops are repetitive for sure—I did the same "blow up the chemical weapon" routine three times over two days—but they're a better excuse to explore than just opening boxes and praying for the presence of duct tape. This directly tackles a weakness of both Arc Raiders and Marathon, and they'd be smart to steal it.</p><p>It's fascinating how Infinity Ward is throwing its weight behind both PvE and PvP here, because I can't really say the same for its competitors. Arc Raiders is, at least to me, about sneaking and scavenging in dangerous environments, not picking fights with other players. In Marathon and Hunt, the loot and boss fights are just the pretense for excellent PvP.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="LgwWZt3LbpTt72eGT27kmD" name="dmz (14)" alt="Modern Warfare 4 DMZ" src="https://cdn.mos.cms.futurecdn.net/LgwWZt3LbpTt72eGT27kmD-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><p>DMZ sprawls out in both directions, which gives it a unique angle, but also means it isn't the best at either play style. PvP fights have been surprisingly rare, but so far they're a lot like Warzone firefights, so just OK. Call of Duty's fast time-to-kill (even with armor plates) and generous aim assist means it's hard to bounce back from being the second one to start shooting, and leads to team fights that begin with one squadmate already down. </p><p>Infinity Ward told me DMZ was designed to respect your time, and that really comes through. I love the little touches of streamlining that show this is a Call of Duty extraction shooter, like how you don't need to stuff your backpack with bandages, armor plates, or stacks of ammo before heading out—that's all handled automatically. The game's also smart enough to loot the most obvious stuff for you, like ammo, crafting materials, and items that can stack in my backpack without taking up extra space. Games with this much looting is usually a turn-off, but it's very seamless and pleasant here.</p><p>They really went and made a whole-ass extraction shooter within Call of Duty, and it's surprisingly good.</p><h3 class="article-body__section" id="section-campaign"><span>Campaign</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZwFQmSCjPDJErkVS8HYzwV" name="mw4 campiagn" alt="Modern Warfare 4" src="https://cdn.mos.cms.futurecdn.net/ZwFQmSCjPDJErkVS8HYzwV-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p>As I watched the credits roll on Modern Warfare 4's campaign, a sobering thought infiltrated: I've been playing Call of Duty for two-thirds of my life. While I consider it primarily a multiplayer game these days, what I loved about Call of Duty all that time ago was its campaigns. In 2006, as a shy fourth grader at a new school, I made my first friend because we both played Call of Duty 3 on the Wii and spent a week recounting cool moments from the campaign over lunch. By 2007 (the year of Modern Warfare, of course), our lunch table was losing its collective shit over the part where Captain Price slides you the pistol right as he (as we thought at the time) dies.</p><p>As memorable as that sequence was, it marked the moment Call of Duty became globe-trotting romps about superhuman, super serious operatives who prevent WW3 before breakfast. It was pretty badass at the time, but what they gained in the sort of spectacle that makes great Sunday Night Football ads, they lost in relatability.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vBS2DtCkcCZjHTnmMgKAvB" name="mw4 (21)" alt="Modern Warfare 4" src="https://cdn.mos.cms.futurecdn.net/vBS2DtCkcCZjHTnmMgKAvB-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p>Sure, those early WW2 campaigns were shlocky riffs on movies, but they starred normal people who primarily wanted to go home—grizzled sergeants and green privates who fended off helplessness with humor. They depicted large-scale offensives won by smaller contributions. That's the energy that Infinity Ward tries to harness again in Modern Warfare 4. At times, it totally works.</p><p>This is the most fun I've had with a Call of Duty campaign in years, lending mostly to its new, non-elite faces. Over half of the six-hour campaign revolves around a crew of young South Korean marines (plus a few Americans) running out the clock on their compulsory military service when North Korea suddenly invades. The guys themselves are familiar archetypes—a serious guy, an audience insert who doesn't talk much, an American who fills every silence with a joke—but they're basically charming enough that I cared to remember their names.</p><p>I like the idea, even if this latest "ripped from the headlines" premise of a North Korean offensive continues Infinity Ward's streak of flattening complex foreign conflicts through a conventionally American lens (while conveniently making the CIA's dogs the good guys). You'll never guess which global superpower is really pulling the strings this time, ya'll.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QBJSRMxXYpqBPzZYEkcu5C" name="mw4 (5)" alt="Modern Warfare 4" src="https://cdn.mos.cms.futurecdn.net/QBJSRMxXYpqBPzZYEkcu5C-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><h2 id="going-dark">Going dark</h2><div><blockquote><p>Playing a "cog in a machine" again unlocks Modern Warfare 4's most standout missions</p></blockquote></div><p>Playing a "cog in a machine" again unlocks Modern Warfare 4's most standout missions, many of which remind me of the series' best days. "Mayhem" and "Losing Ground" follow a futile attempt to hold the fictional Hajin City against the overwhelming invasion. They're loud, chaotic fights where your characters are noticeably terrified of what's happening (a rarity in a post-Price world) and your side is constantly outnumbered. Later on, "Counter Attack" ramps up the scale and intensity with a massive beachfront assault that can only really be achieved by throwing a silly amount of money at it. It's certainly a better use of resources than the overly gimmicky, Warzone-y campaigns of recent Black Ops sequels.</p><p>Even when the action gets smaller, Private Park (no relation) and friends are simply fun to follow. "Stranded" picks up with the squad crash landing behind enemy lines in North Korea, and its Infinity Ward's best swing at a sandbox level to date. The multi-hour mission establishes three non-linear objectives, side quests, and a hideout where you can craft better armor, guns, and camouflage. It's a comparatively quiet, isolating mission than the ones that precede it—almost like playing a micro Far Cry in the middle of a CoD campaign. It was a bit jarring at first, but ended up a major highlight.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PeVRCaQm3SVZERPyXemCaB" name="mw4 (15)" alt="Modern Warfare 4" src="https://cdn.mos.cms.futurecdn.net/PeVRCaQm3SVZERPyXemCaB-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p>I was worried this would prove to be another instance of sneaking Warzone into singleplayer, as the mission uses the DMZ looting system, but I was told the map was made just for the campaign, which is nice.</p><p>Infinity Ward could've crafted a whole campaign around Park's squad, and I'm still not sure why they didn't. Instead, their story runs parallel to the disconnected adventures of Captain Price, now a wanted fugitive because of some Modern Warfare 3 business that most people didn't see (the game acknowledges this by playing a lengthy recap video).</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MjVuRRooKcAqK2U8ZFhtNB" name="mw4 (2)" alt="Modern Warfare 4" src="https://cdn.mos.cms.futurecdn.net/MjVuRRooKcAqK2U8ZFhtNB-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p>Modern Warfare 4 tries to explore a darker Price while replaying the hits—a car chase with shooting, a foot chase with jumping, a cinematic knife fight—but these sequences left my head as quickly as they ended. It's bizarre how different and less interesting this part of the game is, especially considering Price basically exits the story for the back half and never intersects with the real heroes.</p><p>It comes off as Infinity Ward checking boxes for the folks who are expecting Price stuff while also wanting, desperately, to do something else. This was billed as the conclusion of the Modern Warfare story that started in 2019, but in practice, it's more like a sprint to be done with it all. It's a shame they dragged Mads Mikkelsen into the bad parts of this one—he could've been a menacing presence in a campaign that actually had time to use him.</p><p>It speaks to the quality of this series lately that producing a regular campaign with extravagant setpieces, lavish cinematics, and basically great gunplay is a big win. Uncompromised by the influence of Warzone or Zombies, this is the first time in too long that Call of Duty's campaign does not feel like the afterthought.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/call-of-duty/call-of-duty-modern-warfare-4-review/</link>
                                                                            <description>
                            <![CDATA[ This is what it looks like when Call of Duty is in the pocket. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">N9n5scmjz8rPkSEYEBSThB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/qt76reovLwcC84yxwGZ4EE-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 27 Oct 2026 18:17:42 +0000</pubDate>                                                                                                                                <updated>Fri, 30 Oct 2026 18:38:36 +0000</updated>
                                                                                                                                            <category><![CDATA[Call of Duty]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                    <category><![CDATA[FPS]]></category>
                                                                                                                    <dc:creator><![CDATA[ Morgan Park ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/VVB5GCgA3xLhkX8FVAWw5D-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/qt76reovLwcC84yxwGZ4EE-1920-80.jpg">
                                                            <media:credit><![CDATA[Activision]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Modern Warfare 4 DMZ]]></media:description>                                                            <media:text><![CDATA[Modern Warfare 4 DMZ]]></media:text>
                                <media:title type="plain"><![CDATA[Modern Warfare 4 DMZ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/qt76reovLwcC84yxwGZ4EE-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>There is a new game titled "Call of Duty" every year, but it's not every year that Call of Duty is really <em>back.</em> </p><div  class="fancy-box"><div class="fancy_box-title">NEED TO KNOW</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>What is it </strong>The next Call of Duty from the original creators of Call of Duty<br /><strong>Release date </strong>October 23, 2026<br /><strong>Expect to pay </strong>$70/£60<br /><strong>Publisher </strong>Activision Blizzard<br /><strong>Developer </strong>Infinity Ward<br /><strong>Reviewed on </strong>RTX 5090, Ryzen 7 9800X3D 4.7 GHz, 64GB RAM<br /><strong>Multiplayer </strong>Up to 60 players<br /><strong>Steam Deck </strong>Unsupported<br /><strong>Link </strong><a data-analytics-id="inline-link" href="https://www.callofduty.com/" target="_blank">Official site</a></p></div></div><p>The tireless schedule of Activision's load-bearing FPS has resulted in more bad games than good as of late—Modern Warfare 3 was an expansion-sized sequel rushed out the door, Black Ops 6 was a step back for multiplayer, and its immediate followup Black Ops 7 was clocked as superfluous and uninteresting even by rain-or-shine fans. These back-to-back games, shouldered by Treyarch, Sledgehammer, and Raven, had cracks and compromises that suggested the Call of Duty machine just can't keep up with both "good" and "fast" anymore.</p><p>Modern Warfare 4's greatness shows how right that is. This is an extravagant package on all fronts: A kinetic 6v6 FPS with truly excellent gunplay, a fun campaign that doesn't just play the hits, and an expansive extraction "mode" that would be its own game if any other name were on the box.</p><p>I have complaints, but this is what it looks like when Call of Duty is in the pocket. The best Call of Duty studio got to take its time (four years, tied with the longest in series history) and it shows. </p><h3 class="article-body__section" id="section-multiplayer"><span>Multiplayer</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vtj5Rdg6sjUyREPAw4Pqzj" name="20261027105633_1" alt="Modern Warfare 4" src="https://cdn.mos.cms.futurecdn.net/vtj5Rdg6sjUyREPAw4Pqzj-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p>These days, whether or not a Call of Duty clicks with me begins and ends with the guns—how they look, sound, animate, and change with attachments—and Infinity Ward is simply unmatched on those details. Modern Warfare 4's guns spit out layered, cacophonous blasts that will overpower your voice chat by default (as they should). They shake your world as you shoot them without getting in the way of aim. They reload with personality and flair without wasting time. They're loud and metallic without sounding tinny or plastic, like Treyarch guns always do.</p><p>Modern Warfare 4 has some of the easiest guns to control in the genre, yet in action, they feel substantial and weighty like a milsim. This is the magic trick that Call of Duty studios regularly attempt, but only this one has mastered.</p><div><blockquote><p>Infinity Ward just loves being extra about guns in ways that make them memorable.</p></blockquote></div><p>Infinity Ward just loves being extra about guns in ways that make them memorable. This time, they've had fun mixing both modern and dated weapons with Korean design language: The KG-7 Vulkan is a functionally standard bolt-action sniper rifle, but its worn wooden body and chipped green paint communicate that it's been fished out of an aging North Korean armory. The Warlord, meanwhile, is a double-barrel shotgun with the profile of a brutalist space vessel—flanked by two translucent plastic tubes that you can watch empty and refill as you use it. It's rad.</p><p>Not every gun is this distinctive—not even Infinity Ward can produce 30+ guns without forgettable chaff—but there is enough personality in this arsenal to latch onto for hours on-end. I've fully leveled three in just a week, tweaking my attachment setup every few matches to suss out each gun's "thing." </p><iframe src="https://content.jwplatform.com/players/CHtuaD5w.html" id="CHtuaD5w" title="CoD Apex Attachment" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen=""></iframe><p>In some cases, Infinity Ward has saved a boring gun by giving it cool attachments. The Han 86 was, to my eye, the most boring assault rifle in the game until I discovered an integrally-suppressed barrel that all-but transforms it into an MP5 in aesthetic and behavior (an FPS classic I'm always happy to see). Attachments feels like bigger choices here than ever before—you can only use five at a time, and instead of stuffing Gunsmith with 20+ barrels, muzzles, and grips that do almost the same thing, there are fewer options per category that are usually the best at what they do. </p><p>Infinity Ward has also inherited prestige attachments—the best idea to come out of those recent Black Ops sequels. Called apex attachments in Modern Warfare 4, they're add-ons unique to each gun that drastically change their behavior or add a new dimension to how they work. You only get these after maxing out a gun (or by having a blueprint with them already applied), so I don't have many yet, but I love the ones I've played with.</p><p>They range from absurd to subtle: </p><ul><li>The <strong>Hyeon Burst's apex</strong> turns it into a hybrid burst-auto rifle, beginning with a sped-up burst and transitioning into slower automatic fire as I hold the trigger.</li><li>The <strong>M4's apex</strong> swaps its traditional magazine for the top-mounted, graphics card-shaped extended mag.</li><li>The <strong>Oris DMR</strong> gets side-mounted throwing knives (yes) that you can flick at enemies to counteract the gun's close-range weakness.</li><li>The <strong>PPSH SMG</strong> gets an underbarrel launcher that spews hot napalm on the ground for some on-the-fly area denial.</li></ul><p>Apex attachments aren't always worth the hype—I found the Mojave revolver's that lets you "fan the hammer" to fire faster underwhelming as an idea—but they're a way more enticing reason to progress in Modern Warfare 4 than camos or gaudy playercards.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rRPQJKhkWqVDM9bnsCrqij" name="20261027105702_1" alt="Modern Warfare 4" src="https://cdn.mos.cms.futurecdn.net/rRPQJKhkWqVDM9bnsCrqij-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><h2 id="war-should-change">War should change</h2><p>Elsewhere in the land of "details you end up caring about after 20 years of Call of Duty" are nice quality-of-life touches in Create-a-Class, like the option to copy killstreak or perk selections to other classes, or assign operator skins on a per-class basis.</p><p>Then there's all that minutia that Infinity Ward is making a big deal about: revamped movement that allows for smoother mantling and sliding, a depth of field trick that unblurs important parts of the screen, less disruptive gunsmoke, better-looking hipfire. At the time, these all struck me as weirdly minor improvements to trumpet as big swings, and it's now clear why: Modern Warfare 4's core multiplayer takes no big swings. It is, at its core, about executing better what was already there. </p><p>That approach has its upsides, like a ridiculous attention to detail, but it underlines Activision's continued disinterest in challenging Call of Duty's status quo. Never has a shooter franchise been so shackled by traditional design choices that haven't been good for years: Killstreaks are <em>still </em>lopsided power trips that bring matches to a screeching halt so that the best player on the server can rack up more kills. Maps are <em>still</em> uninspired square boxes with three lanes and an allergy for verticality. Gunsmith <em>still</em> favors making every gun the same zero-recoil, high-capacity laser beam that wins firefights. It has been 19 years since Call of Duty 4, and I'm still getting shot by a guy who spawned behind me in Team Deathmatch.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4utUVzZJWQgF2MxdoAxAwj" name="20261027105546_1" alt="Modern Warfare 4" src="https://cdn.mos.cms.futurecdn.net/4utUVzZJWQgF2MxdoAxAwj-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p>The small country of developers who make Call of Duty could take a special interest in these problems, but they consistently don't. Instead, they design sequels around bolted-on distractions—jetpacks, hero abilities, Omnimovement—while actual big swings, like Warzone and DMZ, happen elsewhere on the main menu. We should all want more from a series that asks us to fork over $70 every year.</p><p>There is one exception, and it's sadly flying under the radar so far. Among Modern Warfare 4's slate of new modes (several of which are competently made but destined to be ignored) is Frontline, a TDM variant with one change: Teams spawn on opposite sides of the map, and those spawns never change. It sounds so minor, but it's the greatest thing to happen to Call of Duty multiplayer in a generation.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Mfm9mvTkJtZyWkoMKJxXtX-1920-80.jpg" alt="modern warfare 4" /><figcaption><small role="credit">Activision Blizzard</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4y7D5vsqdcXqybVk8Gsrji-1920-80.jpg" alt="Call of Duty: Modern Warfare 4 multiplayer character skin with a black mask and body armor " /><figcaption><small role="credit">Infinity Ward</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/B9Xn3FVtk9V33MnFZaYtJi-1920-80.jpg" alt="Modern Warfare 4: Key art showing two soldiers, weapons at the ready, walking around a corner in an open garage area." /><figcaption><small role="credit">Activision</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/KW8rUzLvWMN6KAFCwqEeg5-1920-80.jpg" alt="Key art for MW4, depicting a Korean soldier cautiously stood next to a wall as a building burns in the background." /><figcaption><small role="credit">Activision</small></figcaption></figure></figure><p>I almost couldn't believe how much better Call of Duty plays with consistent spawns: I can confidently move through the map with an idea of where enemies will come from, which gives matches an understandable continuity—a sense of tug-of-war. Matches are slower, lives more deliberate, and I'm not getting shot in the back.</p><p>My life is, for once, not up to the pull of a slot machine. We have territory, they have territory, and there's a middle ground to fight over. It's a winning formula that has worked in better casual shooters for decades (Team Fortress 2, anyone?), and singlehandedly fixes a gigantic problem with these games. Frontline is easily my new favorite way to play Call of Duty and should become the new normal, but knowing Activision and the Call of Duty audience, it'll probably be cycled out of the game and forgotten by next quarter.</p><h3 class="article-body__section" id="section-dmz"><span>DMZ</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="VNjGhQEhtfgu6qq3TAsP8E" name="dmz hero 4" alt="Modern Warfare 4 DMZ" src="https://cdn.mos.cms.futurecdn.net/VNjGhQEhtfgu6qq3TAsP8E-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><p>DMZ is, in many ways, proof that Call of Duty shouldn't be afraid to change. </p><p>Going into my first day with the mode, I honestly thought the last thing I needed was another extraction shooter. This genre can be so consuming with its long grinds and punishing stakes that, beyond the occasional Hunt: Showdown night with friends, these days I gravitate to the more consistent, team-based, and casual end of the FPS spectrum. There is no "pick up and play" extraction shooter—or wasn't, until now.</p><p>Infinity Ward has made exactly what it's claiming with DMZ: A full-fledged extraction shooter that could be a standalone game like Escape From Tarkov or Marathon, but is instead the third pillar of a yearly Call of Duty installment. Its systems are extensive, its Hajin City map haunting and expansive, and it might have the least annoying chores of any game like it.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RU5WjrN8JVa9b4N6LCBd3E" name="dmz (8)" alt="Modern Warfare 4 DMZ" src="https://cdn.mos.cms.futurecdn.net/RU5WjrN8JVa9b4N6LCBd3E-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><p>DMZ definitely has room for improvement, but I'm impressed. When I look at Modern Warfare 4's iterative core multiplayer and wonder what Infinity Ward has been doing these past four years, I realize this is it.</p><p>To me, what sets DMZ apart is how Infinity Ward isn't so interested in loss. Money is easy to make through a combination of valuables, faction assignments, and Dynamic Ops (multi-step missions that randomly populate the map). Cash earned through these missions is "banked", meaning I can't lose it even if I die without extracting. But I'm less likely to actually die than in other games, because I can pick myself up from a DBNO state once at the cost of max health.</p><p>Everything accrues XP that unlocks new stations at my FOB, crafting recipes that make future runs more convenient, and traits that permanently enhance my operator. Some of those traits are a huge deal, like a free self-revive in every match, and they don't disappear when I have a bad game. Instead, dying in the field triggers an MIA status for that operator that I can clear any time by dropping a wad of cash.</p><p>It's quite generous for this type of game, and I like it. DMZ wants me to always move forward, and in that sense, it sometimes feels more like a Call of Duty RPG.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RCdtNeZHY3NpotSRquqWgD" name="dmz (12)" alt="Modern Warfare 4 DMZ" src="https://cdn.mos.cms.futurecdn.net/RCdtNeZHY3NpotSRquqWgD-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><p>But it's not like DMZ is immune to gear fear: I had a few anxiety-inducing moments where an especially rare valuable, stack of crafting materials I needed for upgrades, or a rare weapon blueprint was burning a hole in my pack as I tried to sneak off to an extraction site. Hajin City's non-player threats—soldier patrols, helicopters, and drones that snitch on you—have yet to challenge or surprise on the level of Arc Raiders' sophisticated apocalypse machines, but they could easily overwhelm when I took my eye off the ball. I was ready to call the NPC soldiers a bunch of scrubs until they nearly ruined my best run yet.</p><p>This gets to my other favorite part of DMZ: Every extraction shooter has chores, but DMZ has a lot of structured events, locations, and formalized missions that can turn grocery runs into something bigger.</p><h2 id="a-perfect-dmz-round">A perfect DMZ round</h2><p>Like one time, a match started as a quick solo trip to find "rigid synthetics" for a stash upgrade I'd been working toward. The description for that material said they're found in residential areas, so I entered an apartment building, looted a locker, and found something I wasn't looking for: a rare key to the "Netshin IT Room."</p><p>That key had a helpful description: Unlocks the high-security server room deep within the server clusters on the upper floors of the Netshin Tech Complex within The Grid.</p><p>New sidequest added. I love that the hint didn't give everything away: I knew generally where I was going and what to look for, but no arrow or waypoint to follow. So I drove to the center of the city and found The Grid, one of the most dangerous zones in Hajin. You can tell because it's red on the map and walled off on all sides, announcing that you'd have to be dumb to run in there alone.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="UhEByQgMx4S95E5vyocFoD" name="dmz (4)" alt="Modern Warfare 4 DMZ" src="https://cdn.mos.cms.futurecdn.net/UhEByQgMx4S95E5vyocFoD-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><p>So I ran in alone, storming the Netshin building and almost dying to heavily armored grunts twice. I ran up six flights of stairs (there was probably an elevator) until I reached the top and started checking every door. Surprisingly, there were other locked doors in Netshin that led to other exclusive areas, and Netshin is just one highrise of several in this part of the city—this map is dense.</p><p>I finally found the IT department, used the key, and strolled in thinking I'd hit the jackpot. Not quite: I'd actually disturbed the nest of Jang-ui, one of Hajin's miniboss "lieutenants" that have a chance to appear in each match. Auto-turrets placed in all four corners of the room caught me by surprise and almost killed me on their own, and reinforcements from elsewhere in the building flooded in as well. It was a squirrely fight typical of Call of Duty PvE: Lots of sprinting across the room to buy time for reloads, dumping pounds of lead into Jang-ui's stupid head, and pressing G to replenish armor.</p><p>But he finally died, and the rewards were huge: A kitted burst rifle unique to the boss fight and a weapon manual that'd unlock a gun permanently for crafting. That, plus a pile of useful materials, including the synthetics I'd originally been looking for. It was a sweet haul I really didn't wanna lose, which still felt very possible, as I was out of ammo.</p><p>I thought for sure I was home free when I found a ventilation shaft that spit me out on the scaffolding under a sky bridge—a hidden exit! From there I could just jump off to escape, and it would've been the perfect end to this little adventure, except I didn't have a parachute. So for the first time, I actually used DMZ's rudimentary stealth system to sneak out of Netshin, hiding behind desks and scrounging for bullet scraps until I left the same way I entered.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pvREEJ8u7mNxxFXq3ZMNoD" name="dmz (9)" alt="Modern Warfare 4 DMZ" src="https://cdn.mos.cms.futurecdn.net/pvREEJ8u7mNxxFXq3ZMNoD-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><h2 id="pvevolution">PvEvolution</h2><p>It was a genuinely emergent, self-appointed mission that felt like the best case scenario for DMZ. Not every part of the PvE experience is awesome. Call of Duty still can't escape how normal dudes with heavy armor just aren't interesting as opponents. They can't stack up to Arc Raiders physics-based drones, Hunt: Showdown's supernatural monsters, or even Marathon's UESC corps. But those are all games where, if you're fighting the environment, you're kind of playing them wrong: They are, in practice, multiplayer stealth games until the moment PvP kicks off.</p><p>I don't think DMZ will be like that. The fodder soldiers are boring, but they're also everywhere. Killing a few doesn't make so much noise that you're alerting the whole map—relative to its size, Hajin isn't as packed with players as Warzone's battle royale modes. I felt relatively safe to engage AI patrols for their armor plates and ammo without feeling forced into an awkward melee playstyle. That's good, because everything worth doing in Hajin plays out like a mini Spec Ops mission (we all remember that old Modern Warfare co-op mode, right?), including the six "story missions" that are even more campaign-like in nature.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="E23wB3DP6Pq36jeyti6Z5E" name="dmz hero 3" alt="Modern Warfare 4 DMZ" src="https://cdn.mos.cms.futurecdn.net/E23wB3DP6Pq36jeyti6Z5E-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><div><blockquote><p>Call of Duty still can't escape how normal dudes with heavy armor just aren't interesting as opponents. </p></blockquote></div><p>Story missions are longer, narrative-focused tasks available early on. They have more bespoke ingredients than the randomized Dynamic Ops: There's one about a casino heist and another that involves manually pushing a gurney down hospital hallways while AI attacks on all sides. These are fun and pay well, but they don't change from match to match. It seems like Infinity Ward created these as a guided on-ramp for players new to extraction shooters. You have to queue into a story mission before the match starts, and if you do, you'll be the only squad in the match with that mission.</p><p>So while DMZ's PvE factions don't stand out, the incentives for fighting them do. Dynamic Ops are repetitive for sure—I did the same "blow up the chemical weapon" routine three times over two days—but they're a better excuse to explore than just opening boxes and praying for the presence of duct tape. This directly tackles a weakness of both Arc Raiders and Marathon, and they'd be smart to steal it.</p><p>It's fascinating how Infinity Ward is throwing its weight behind both PvE and PvP here, because I can't really say the same for its competitors. Arc Raiders is, at least to me, about sneaking and scavenging in dangerous environments, not picking fights with other players. In Marathon and Hunt, the loot and boss fights are just the pretense for excellent PvP.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="LgwWZt3LbpTt72eGT27kmD" name="dmz (14)" alt="Modern Warfare 4 DMZ" src="https://cdn.mos.cms.futurecdn.net/LgwWZt3LbpTt72eGT27kmD-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><p>DMZ sprawls out in both directions, which gives it a unique angle, but also means it isn't the best at either play style. PvP fights have been surprisingly rare, but so far they're a lot like Warzone firefights, so just OK. Call of Duty's fast time-to-kill (even with armor plates) and generous aim assist means it's hard to bounce back from being the second one to start shooting, and leads to team fights that begin with one squadmate already down. </p><p>Infinity Ward told me DMZ was designed to respect your time, and that really comes through. I love the little touches of streamlining that show this is a Call of Duty extraction shooter, like how you don't need to stuff your backpack with bandages, armor plates, or stacks of ammo before heading out—that's all handled automatically. The game's also smart enough to loot the most obvious stuff for you, like ammo, crafting materials, and items that can stack in my backpack without taking up extra space. Games with this much looting is usually a turn-off, but it's very seamless and pleasant here.</p><p>They really went and made a whole-ass extraction shooter within Call of Duty, and it's surprisingly good.</p><h3 class="article-body__section" id="section-campaign"><span>Campaign</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZwFQmSCjPDJErkVS8HYzwV" name="mw4 campiagn" alt="Modern Warfare 4" src="https://cdn.mos.cms.futurecdn.net/ZwFQmSCjPDJErkVS8HYzwV-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p>As I watched the credits roll on Modern Warfare 4's campaign, a sobering thought infiltrated: I've been playing Call of Duty for two-thirds of my life. While I consider it primarily a multiplayer game these days, what I loved about Call of Duty all that time ago was its campaigns. In 2006, as a shy fourth grader at a new school, I made my first friend because we both played Call of Duty 3 on the Wii and spent a week recounting cool moments from the campaign over lunch. By 2007 (the year of Modern Warfare, of course), our lunch table was losing its collective shit over the part where Captain Price slides you the pistol right as he (as we thought at the time) dies.</p><p>As memorable as that sequence was, it marked the moment Call of Duty became globe-trotting romps about superhuman, super serious operatives who prevent WW3 before breakfast. It was pretty badass at the time, but what they gained in the sort of spectacle that makes great Sunday Night Football ads, they lost in relatability.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vBS2DtCkcCZjHTnmMgKAvB" name="mw4 (21)" alt="Modern Warfare 4" src="https://cdn.mos.cms.futurecdn.net/vBS2DtCkcCZjHTnmMgKAvB-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p>Sure, those early WW2 campaigns were shlocky riffs on movies, but they starred normal people who primarily wanted to go home—grizzled sergeants and green privates who fended off helplessness with humor. They depicted large-scale offensives won by smaller contributions. That's the energy that Infinity Ward tries to harness again in Modern Warfare 4. At times, it totally works.</p><p>This is the most fun I've had with a Call of Duty campaign in years, lending mostly to its new, non-elite faces. Over half of the six-hour campaign revolves around a crew of young South Korean marines (plus a few Americans) running out the clock on their compulsory military service when North Korea suddenly invades. The guys themselves are familiar archetypes—a serious guy, an audience insert who doesn't talk much, an American who fills every silence with a joke—but they're basically charming enough that I cared to remember their names.</p><p>I like the idea, even if this latest "ripped from the headlines" premise of a North Korean offensive continues Infinity Ward's streak of flattening complex foreign conflicts through a conventionally American lens (while conveniently making the CIA's dogs the good guys). You'll never guess which global superpower is really pulling the strings this time, ya'll.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QBJSRMxXYpqBPzZYEkcu5C" name="mw4 (5)" alt="Modern Warfare 4" src="https://cdn.mos.cms.futurecdn.net/QBJSRMxXYpqBPzZYEkcu5C-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><h2 id="going-dark">Going dark</h2><div><blockquote><p>Playing a "cog in a machine" again unlocks Modern Warfare 4's most standout missions</p></blockquote></div><p>Playing a "cog in a machine" again unlocks Modern Warfare 4's most standout missions, many of which remind me of the series' best days. "Mayhem" and "Losing Ground" follow a futile attempt to hold the fictional Hajin City against the overwhelming invasion. They're loud, chaotic fights where your characters are noticeably terrified of what's happening (a rarity in a post-Price world) and your side is constantly outnumbered. Later on, "Counter Attack" ramps up the scale and intensity with a massive beachfront assault that can only really be achieved by throwing a silly amount of money at it. It's certainly a better use of resources than the overly gimmicky, Warzone-y campaigns of recent Black Ops sequels.</p><p>Even when the action gets smaller, Private Park (no relation) and friends are simply fun to follow. "Stranded" picks up with the squad crash landing behind enemy lines in North Korea, and its Infinity Ward's best swing at a sandbox level to date. The multi-hour mission establishes three non-linear objectives, side quests, and a hideout where you can craft better armor, guns, and camouflage. It's a comparatively quiet, isolating mission than the ones that precede it—almost like playing a micro Far Cry in the middle of a CoD campaign. It was a bit jarring at first, but ended up a major highlight.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PeVRCaQm3SVZERPyXemCaB" name="mw4 (15)" alt="Modern Warfare 4" src="https://cdn.mos.cms.futurecdn.net/PeVRCaQm3SVZERPyXemCaB-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p>I was worried this would prove to be another instance of sneaking Warzone into singleplayer, as the mission uses the DMZ looting system, but I was told the map was made just for the campaign, which is nice.</p><p>Infinity Ward could've crafted a whole campaign around Park's squad, and I'm still not sure why they didn't. Instead, their story runs parallel to the disconnected adventures of Captain Price, now a wanted fugitive because of some Modern Warfare 3 business that most people didn't see (the game acknowledges this by playing a lengthy recap video).</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MjVuRRooKcAqK2U8ZFhtNB" name="mw4 (2)" alt="Modern Warfare 4" src="https://cdn.mos.cms.futurecdn.net/MjVuRRooKcAqK2U8ZFhtNB-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p>Modern Warfare 4 tries to explore a darker Price while replaying the hits—a car chase with shooting, a foot chase with jumping, a cinematic knife fight—but these sequences left my head as quickly as they ended. It's bizarre how different and less interesting this part of the game is, especially considering Price basically exits the story for the back half and never intersects with the real heroes.</p><p>It comes off as Infinity Ward checking boxes for the folks who are expecting Price stuff while also wanting, desperately, to do something else. This was billed as the conclusion of the Modern Warfare story that started in 2019, but in practice, it's more like a sprint to be done with it all. It's a shame they dragged Mads Mikkelsen into the bad parts of this one—he could've been a menacing presence in a campaign that actually had time to use him.</p><p>It speaks to the quality of this series lately that producing a regular campaign with extravagant setpieces, lavish cinematics, and basically great gunplay is a big win. Uncompromised by the influence of Warzone or Zombies, this is the first time in too long that Call of Duty's campaign does not feel like the afterthought.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Call of Duty passes $40 billion in lifetime revenue, making it one of the most lucrative videogame franchises ever ]]></title>
                                                                                                <dc:content><![CDATA[ <p>It's been 22 years, 11 months, 28 days and counting since we were first graced with <a href="https://www.pcgamer.com/uk/games/fps/call-of-duty/">Call of Duty</a>. Over those two decades the franchise has emerged as one of the most lucrative in videogame history, with Xbox CEO Asha Sharma announcing that it's passed the $40billion revenue mark. </p><p>Speaking of <a href="https://www.pcgamer.com/uk/call-of-duty-modern-warfare-4/">Call of Duty: Modern Warfare 4's</a> success, <a href="https://x.com/asha_shar/status/2114787993114591335" target="_blank">Sharma reflects</a>: "One of the most celebrated Call of Duty games in its 24-year history, and now $40 billion in lifetime franchise revenue. An incredible milestone. Congrats to the Activision team. And to the players, thank you for being with us."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2114787993114591335"><p lang="en" dir="ltr">One of the most celebrated Call of Duty games in its 24-year history, and now $40B in lifetime franchise revenue. An incredible milestone. Congrats to the Activision team. And to the players, thank you for being with us. https://t.co/AlpXydEQIQ<a href="https://twitter.com/cantworkitout/status/2114787993114591335">October 26, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>$40 billion in lifetime revenue places Call of Duty behind goliaths like Mario and Pokémon. It also means that Call of Duty, on average, has earned $4,762,472 a day, which is particularly terrifying if you ask me. </p><p>But how it got there is an entirely different question—one that can be answered by the ravenous appetite of consumers in the free market. <a href="https://www.pcgamer.com/uk/call-of-duty-black-ops-3/">Call of Duty: Black Ops 3</a> still sits at the top spot with over 43 million copies sold, with <a href="https://www.pcgamer.com/call-of-duty-modern-warfare-2019/">Modern Warfare (2019)</a> comes in a close second with over 41 million copies sold. But by and large, the popularity of Call of Duty is driven by Black Ops, namely its older titles.  </p><p>The prize for most successful launch, however, has to go to <a href="https://www.pcgamer.com/call-of-duty-modern-warfare-2-2022/">Modern Warfare 2 (2022)</a> which <a href="https://www.pcgamer.com/modern-warfare-2-is-the-best-launch-in-cods-history-after-selling-dollar1-billion-in-10-days/">earned $1 billion in just 10 days</a> alongside 200 million hours played. This followed Activision Blizzard's sale to Microsoft, which also meant that Modern Warfare 2 was the first time a Call of Duty game had been on Steam since 2017 with <a href="https://www.pcgamer.com/call-of-duty-wwii/">Call of Duty: WW2</a>—it even made it into Steam's top 10 games by concurrent players. </p><p>The ridiculous release schedule of one Call of Duty game a year certainly seems to be working for Activision. I doubt it would've been able to pass this landmark without the tireless work of Infinity Ward, Treyarch, Sledgehammer Games, and Raven Software pumping out something new year after year. At this rate I'm pretty sure the Call of Duty franchise will outlive us all. Picture this: the dry arid landscape of an Earth pillaged and then left void of humanity, with the sole proof of our existence being the 15th Call of Duty: Modern Warfare 2 remaster (2193)—I hope it's good. </p><div class="product"><a data-dimension112="2b75f358-d20c-11f1-936f-09fdf565c581" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="2b75f358-d20c-11f1-936f-09fdf565c581" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/call-of-duty/call-of-duty-passes-usd40-billion-in-lifetime-revenue-making-it-one-of-the-most-lucrative-videogame-franchise-ever/</link>
                                                                            <description>
                            <![CDATA[ Never underestimate the unbridled love for yelling hoorah before gunning down the same generic bad guy every year. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Y3hgoNURdMuM5VmGyAJhs5</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/6ULxropgura5CQ3q2UkRG4-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 27 Oct 2026 13:55:38 +0000</pubDate>                                                                                                                                <updated>Tue, 27 Oct 2026 15:38:47 +0000</updated>
                                                                                                                                            <category><![CDATA[Call of Duty]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                    <category><![CDATA[FPS]]></category>
                                                                                                                    <dc:creator><![CDATA[ Elie Gould ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/5HPuSiRgqza2PQESSqE7gG-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Elie is a news writer with an unhealthy love of horror games—even though their greatest fear is being chased. When they&#039;re not screaming or hiding, there&#039;s a good chance you&#039;ll find them testing their metal in metroidvanias or just admiring their Pokemon TCG collection. Elie has previously worked at TechRadar Gaming as a staff writer and studied at JOMEC in International Journalism and Documentaries – spending their free time filming short docs about Smash Bros. or any indie game that crossed their path.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/6ULxropgura5CQ3q2UkRG4-1920-80.jpg">
                                                            <media:credit><![CDATA[Activision ]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Call of Duty: Modern Warfare 4 Price screenshot]]></media:description>                                                            <media:text><![CDATA[Call of Duty: Modern Warfare 4 Price screenshot]]></media:text>
                                <media:title type="plain"><![CDATA[Call of Duty: Modern Warfare 4 Price screenshot]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/6ULxropgura5CQ3q2UkRG4-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It's been 22 years, 11 months, 28 days and counting since we were first graced with <a href="https://www.pcgamer.com/uk/games/fps/call-of-duty/">Call of Duty</a>. Over those two decades the franchise has emerged as one of the most lucrative in videogame history, with Xbox CEO Asha Sharma announcing that it's passed the $40billion revenue mark. </p><p>Speaking of <a href="https://www.pcgamer.com/uk/call-of-duty-modern-warfare-4/">Call of Duty: Modern Warfare 4's</a> success, <a href="https://x.com/asha_shar/status/2114787993114591335" target="_blank">Sharma reflects</a>: "One of the most celebrated Call of Duty games in its 24-year history, and now $40 billion in lifetime franchise revenue. An incredible milestone. Congrats to the Activision team. And to the players, thank you for being with us."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2114787993114591335"><p lang="en" dir="ltr">One of the most celebrated Call of Duty games in its 24-year history, and now $40B in lifetime franchise revenue. An incredible milestone. Congrats to the Activision team. And to the players, thank you for being with us. https://t.co/AlpXydEQIQ<a href="https://twitter.com/cantworkitout/status/2114787993114591335">October 26, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>$40 billion in lifetime revenue places Call of Duty behind goliaths like Mario and Pokémon. It also means that Call of Duty, on average, has earned $4,762,472 a day, which is particularly terrifying if you ask me. </p><p>But how it got there is an entirely different question—one that can be answered by the ravenous appetite of consumers in the free market. <a href="https://www.pcgamer.com/uk/call-of-duty-black-ops-3/">Call of Duty: Black Ops 3</a> still sits at the top spot with over 43 million copies sold, with <a href="https://www.pcgamer.com/call-of-duty-modern-warfare-2019/">Modern Warfare (2019)</a> comes in a close second with over 41 million copies sold. But by and large, the popularity of Call of Duty is driven by Black Ops, namely its older titles.  </p><p>The prize for most successful launch, however, has to go to <a href="https://www.pcgamer.com/call-of-duty-modern-warfare-2-2022/">Modern Warfare 2 (2022)</a> which <a href="https://www.pcgamer.com/modern-warfare-2-is-the-best-launch-in-cods-history-after-selling-dollar1-billion-in-10-days/">earned $1 billion in just 10 days</a> alongside 200 million hours played. This followed Activision Blizzard's sale to Microsoft, which also meant that Modern Warfare 2 was the first time a Call of Duty game had been on Steam since 2017 with <a href="https://www.pcgamer.com/call-of-duty-wwii/">Call of Duty: WW2</a>—it even made it into Steam's top 10 games by concurrent players. </p><p>The ridiculous release schedule of one Call of Duty game a year certainly seems to be working for Activision. I doubt it would've been able to pass this landmark without the tireless work of Infinity Ward, Treyarch, Sledgehammer Games, and Raven Software pumping out something new year after year. At this rate I'm pretty sure the Call of Duty franchise will outlive us all. Picture this: the dry arid landscape of an Earth pillaged and then left void of humanity, with the sole proof of our existence being the 15th Call of Duty: Modern Warfare 2 remaster (2193)—I hope it's good. </p><div class="product"><a data-dimension112="2b75f358-d20c-11f1-936f-09fdf565c581" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="2b75f358-d20c-11f1-936f-09fdf565c581" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Overwatch devs took one look at Jetpack Cat and Bastion's combo and went 'oh, that's a little scary' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Almost a year ago now, Team 4 debuted a new kind of <a href="https://www.pcgamer.com/uk/overwatch/">Overwatch</a>, and as part of the <a href="https://www.pcgamer.com/games/fps/overwatchs-biggest-season-ever-kicks-off-with-5-new-heroes-all-at-once-including-a-cat-with-a-jetpack-who-can-toss-you-off-the-map/">huge spotlight</a> we learned that the live service FPS would undergo a new cadence with yearly themes comprising  several seasons. Five new heroes were also added straight away; Mizuki, Emre, Anran, Domina, and of course Jetpack Cat. </p><p>Ahead of being added to the game, Overwatch's community was overjoyed to see Jetpack Cat, an adorable little ginger kitty in a flying mech—what's not to love? But sentiment quickly shifted after she took to the battlefield. <a href="https://www.pcgamer.com/games/fps/overwatch-players-are-being-completely-normal-about-jetpack-cat-and-all-her-hideous-combos-i-hate-this-cat-with-a-passion/">Jetpack Cat broke the game</a> with her new Apache helicopter meta which saw her haul Bastion high into the air so he could gun down the entire enemy team while in turret mode, it was truly horrific. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="VthvVKeWrdeNmRndaF347b" name="Jetpack Cat screenshots" alt="Jetpack Cat screenshots" src="https://cdn.mos.cms.futurecdn.net/VthvVKeWrdeNmRndaF347b-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blizzard Entertainment)</span></figcaption></figure><p>Who could've predicted that the adorable little cat would cause so much havoc? Well Team 4 had an inkling while Jetpack Cat was in the testing phase. "Internally we were like, 'oh, that's a little scary'," Associate Game Director Alec Dawson tells me. "We were play testing [Jetpack Cat and Bastion] a little bit. I think at one point it was also Jetpack Cat, Bastion, and Mercy. The full trio. It's like an even scarier helicopter." </p><p>This Jetpack Cat meta became so strong that it dominated OWCS from the get go. I haven't seen a new hero utilised so heavily and quickly in Overwatch's esports scene for a long time, so it brought home just how busted this team-up was. </p><p>Jetpack Cat would <a href="https://www.pcgamer.com/games/fps/overwatch-season-3-kicks-off-with-the-gift-of-jetpack-cat-nerfs-after-the-apache-helicopter-meta-dominated-the-world-cup/">eventually undergo some reworks</a>, for example, there was a nerf to how quickly she can move while carrying another hero. It helped to even the odds a little, but she can still be  very frustrating and a hard  hero to deal with. But the choice to leave Jetpack Cat initially un-nerfed  was a deliberate decision according to Dawson: </p><p>"We want to make sure we put some of those moments in front of players. Allow them to experience a little bit of that crazy stuff before we come in and try to make sure it's in line, right? It's really that fine line of not taking away all the fun, not diluting it, not trying to take away some of the extremes, and seeing how it actually plays out. Because those are the moments that are going to be really exciting for players, those are going to be the moments that they remember in Overwatch, and that's important not to whittle away too early."</p><div class="product"><a data-dimension112="dd8effce-cefd-11f1-a7a2-c73e91948f3c" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="dd8effce-cefd-11f1-a7a2-c73e91948f3c" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/overwatch-devs-took-one-look-at-jetpack-cat-and-bastions-combo-and-went-oh-thats-a-little-scary/</link>
                                                                            <description>
                            <![CDATA[ The Apache helicopter meta was certainly something to be feared. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">VyweyDBJEpZErTXGPFB2Sh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/2ErepaUaYWz9ZhzmeFDQUn-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 25 Oct 2026 17:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Elie Gould ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/5HPuSiRgqza2PQESSqE7gG-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Elie is a news writer with an unhealthy love of horror games—even though their greatest fear is being chased. When they&#039;re not screaming or hiding, there&#039;s a good chance you&#039;ll find them testing their metal in metroidvanias or just admiring their Pokemon TCG collection. Elie has previously worked at TechRadar Gaming as a staff writer and studied at JOMEC in International Journalism and Documentaries – spending their free time filming short docs about Smash Bros. or any indie game that crossed their path.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/2ErepaUaYWz9ZhzmeFDQUn-1920-80.jpg">
                                                            <media:credit><![CDATA[Blizzard]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Overwatch tier list: Jetpack Cat flying towards the camera while carrying a Mauga.]]></media:description>                                                            <media:text><![CDATA[Overwatch tier list: Jetpack Cat flying towards the camera while carrying a Mauga.]]></media:text>
                                <media:title type="plain"><![CDATA[Overwatch tier list: Jetpack Cat flying towards the camera while carrying a Mauga.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/2ErepaUaYWz9ZhzmeFDQUn-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Almost a year ago now, Team 4 debuted a new kind of <a href="https://www.pcgamer.com/uk/overwatch/">Overwatch</a>, and as part of the <a href="https://www.pcgamer.com/games/fps/overwatchs-biggest-season-ever-kicks-off-with-5-new-heroes-all-at-once-including-a-cat-with-a-jetpack-who-can-toss-you-off-the-map/">huge spotlight</a> we learned that the live service FPS would undergo a new cadence with yearly themes comprising  several seasons. Five new heroes were also added straight away; Mizuki, Emre, Anran, Domina, and of course Jetpack Cat. </p><p>Ahead of being added to the game, Overwatch's community was overjoyed to see Jetpack Cat, an adorable little ginger kitty in a flying mech—what's not to love? But sentiment quickly shifted after she took to the battlefield. <a href="https://www.pcgamer.com/games/fps/overwatch-players-are-being-completely-normal-about-jetpack-cat-and-all-her-hideous-combos-i-hate-this-cat-with-a-passion/">Jetpack Cat broke the game</a> with her new Apache helicopter meta which saw her haul Bastion high into the air so he could gun down the entire enemy team while in turret mode, it was truly horrific. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="VthvVKeWrdeNmRndaF347b" name="Jetpack Cat screenshots" alt="Jetpack Cat screenshots" src="https://cdn.mos.cms.futurecdn.net/VthvVKeWrdeNmRndaF347b-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blizzard Entertainment)</span></figcaption></figure><p>Who could've predicted that the adorable little cat would cause so much havoc? Well Team 4 had an inkling while Jetpack Cat was in the testing phase. "Internally we were like, 'oh, that's a little scary'," Associate Game Director Alec Dawson tells me. "We were play testing [Jetpack Cat and Bastion] a little bit. I think at one point it was also Jetpack Cat, Bastion, and Mercy. The full trio. It's like an even scarier helicopter." </p><p>This Jetpack Cat meta became so strong that it dominated OWCS from the get go. I haven't seen a new hero utilised so heavily and quickly in Overwatch's esports scene for a long time, so it brought home just how busted this team-up was. </p><p>Jetpack Cat would <a href="https://www.pcgamer.com/games/fps/overwatch-season-3-kicks-off-with-the-gift-of-jetpack-cat-nerfs-after-the-apache-helicopter-meta-dominated-the-world-cup/">eventually undergo some reworks</a>, for example, there was a nerf to how quickly she can move while carrying another hero. It helped to even the odds a little, but she can still be  very frustrating and a hard  hero to deal with. But the choice to leave Jetpack Cat initially un-nerfed  was a deliberate decision according to Dawson: </p><p>"We want to make sure we put some of those moments in front of players. Allow them to experience a little bit of that crazy stuff before we come in and try to make sure it's in line, right? It's really that fine line of not taking away all the fun, not diluting it, not trying to take away some of the extremes, and seeing how it actually plays out. Because those are the moments that are going to be really exciting for players, those are going to be the moments that they remember in Overwatch, and that's important not to whittle away too early."</p><div class="product"><a data-dimension112="dd8effce-cefd-11f1-a7a2-c73e91948f3c" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="dd8effce-cefd-11f1-a7a2-c73e91948f3c" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Call of Duty: Modern Warfare 4 actually runs pretty smoothly with Activision's 'recommended' RTX 3060 Ti graphics card, and here are the settings I use to get the best performance from it ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I've been having a grand old time playing <a href="https://www.pcgamer.com/games/call-of-duty/call-of-duty-modern-warfare-4-review-in-progress-a-campaign-you-shouldnt-skip/" target="_blank">Call of Duty: Modern Warfare 4</a> with an <a href="https://www.pcgamer.com/hardware/graphics-cards/amd-radeon-rx-9700-xt-review-asus-prime-oc/" target="_blank">RX 9070 XT</a>, but there'll be plenty of people wanting to run the game on older hardware. So, I decided to dust off my old and much-beloved workhorse, the <a href="https://www.pcgamer.com/nvidia-rtx-3060-ti-review-benchmarks-performance/" target="_blank">RTX 3060 Ti</a>, and see how it does in the new Activision shooter. I've been quite pleasantly surprised by the results.</p><p>Which is good news, considering <a href="https://support.activision.com/modern-warfare-4/articles/pc-system-requirements-for-modern-warfare-4" target="_blank">Activision lists</a> this graphics card, alongside the AMD RX 6600 XT and Intel Arc B580, as the 'recommended' ones to "run at 90 fps in multiplayer on High graphics settings."</p><p>I've found this actually pans out, provided you're at 1080p or are fine enabling Quality upscaling at 1440p.</p><h2 class="article-body__section" id="section-rtx-3060-ti-performance-in-cod-mw4"><span>RTX 3060 Ti performance in COD: MW4</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1911px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YCfD5BENn8KFH9od8t5TdT" name="image (4)" alt="A screenshot of COD: MW4, aiming down-range at a target." src="https://cdn.mos.cms.futurecdn.net/YCfD5BENn8KFH9od8t5TdT-1920-80.jpg" mos="" align="middle" fullscreen="" width="1911" height="1075" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><p>As you can see from the chart below, at 1440p native, the game struggles to reach this 90 fps target even on the Minimum preset. And as I noted in my <a href="https://www.pcgamer.com/games/call-of-duty/ive-tested-every-graphics-setting-in-call-of-duty-modern-warfare-4-tweak-these-four-options-for-the-best-performance/" target="_blank">general performance overview</a>—which, by the way, you should read if you want to know which specific settings to alter to improve your frame rate—the Balanced preset offers the best bang for your buck by far, as going up to Ultra lowers your frame rate significantly.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792766477236-lz8qius4a *, #fv-chart-1792766477236-lz8qius4a *:before, #fv-chart-1792766477236-lz8qius4a *:after, #fv-chart-1792766477236-lz8qius4a-slideshow *, #fv-chart-1792766477236-lz8qius4a-slideshow *:before, #fv-chart-1792766477236-lz8qius4a-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792766477236-lz8qius4a, #fv-chart-1792766477236-lz8qius4a-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792766477236-lz8qius4a { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1792766477236-lz8qius4a .fv-inner-wrapper { color: #1F2937 !important; background-color: #ededed !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792766477236-lz8qius4a .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792766477236-lz8qius4a.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792766477236-lz8qius4a.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792766477236-lz8qius4a .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792766477236-lz8qius4a-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1792766477236-lz8qius4a-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792766477236-lz8qius4a-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792766477236-lz8qius4a-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792766477236-lz8qius4a-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792766477236-lz8qius4a-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792766477236-lz8qius4a-slideshow .fv-nav-btn.disabled, #fv-chart-1792766477236-lz8qius4a-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792766477236-lz8qius4a-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792766477236-lz8qius4a-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792766477236-lz8qius4a-slideshow .fv-slideshow-select:focus { outline: 2px solid #E33235 !important; border-color: #E33235 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792766477236-lz8qius4a .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792766477236-lz8qius4a .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792766477236-lz8qius4a .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792766477236-lz8qius4a .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792766477236-lz8qius4a .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792766477236-lz8qius4a .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792766477236-lz8qius4a .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792766477236-lz8qius4a .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792766477236-lz8qius4a .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792766477236-lz8qius4a .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792766477236-lz8qius4a .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792766477236-lz8qius4a .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792766477236-lz8qius4a .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792766477236-lz8qius4a .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792766477236-lz8qius4a .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792766477236-lz8qius4a .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792766477236-lz8qius4a .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792766477236-lz8qius4a .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792766477236-lz8qius4a .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792766477236-lz8qius4a .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792766477236-lz8qius4a .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792766477236-lz8qius4a .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792766477236-lz8qius4a .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792766477236-lz8qius4a .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792766477236-lz8qius4a .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792766477236-lz8qius4a .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792766477236-lz8qius4a .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792766477236-lz8qius4a .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792766477236-lz8qius4a .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792766477236-lz8qius4a .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792766477236-lz8qius4a .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792766477236-lz8qius4a .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792766477236-lz8qius4a .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792766477236-lz8qius4a .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-row, #fv-chart-1792766477236-lz8qius4a .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792766477236-lz8qius4a.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792766477236-lz8qius4a.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792766477236-lz8qius4a.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792766477236-lz8qius4a .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792766477236-lz8qius4a .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792766477236-lz8qius4a .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792766477236-lz8qius4a .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792766477236-lz8qius4a .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792766477236-lz8qius4a .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792766477236-lz8qius4a .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792766477236-lz8qius4a .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792766477236-lz8qius4a .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792766477236-lz8qius4a .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792766477236-lz8qius4a .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792766477236-lz8qius4a .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792766477236-lz8qius4a .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792766477236-lz8qius4a .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792766477236-lz8qius4a.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792766477236-lz8qius4a.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792766477236-lz8qius4a.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792766477236-lz8qius4a .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792766477236-lz8qius4a .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-pie-container, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-row, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-stacked-product, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-grouped-bar-product, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-bar-row, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-stacked-product, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-label, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-grouped-product-title, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-bar-label, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-container, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-cluster, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-bar-container, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-x-axis-wrapper, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-x-axis-label-space, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-x-axis-chart-space, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-benchmark-title, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-dropdown-title, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-carousel-nav-btn, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-chart-title, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-chart-subhead, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-versus-header, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-versus-select-wrapper, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-versus-vs, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-versus-select-container, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-versus-select, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-commentary-inline, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-dials-grid, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-dial-title, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792766477236-lz8qius4a .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-row, #fv-chart-1792766477236-lz8qius4a .fv-stacked-product, #fv-chart-1792766477236-lz8qius4a .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-label, #fv-chart-1792766477236-lz8qius4a .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-container, #fv-chart-1792766477236-lz8qius4a .fv-bar-cluster { width: 100% !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792766477236-lz8qius4a .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792766477236-lz8qius4a .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792766477236-lz8qius4a .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-label-space { display: none !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792766477236-lz8qius4a .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792766477236-lz8qius4a .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792766477236-lz8qius4a .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792766477236-lz8qius4a .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792766477236-lz8qius4a .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792766477236-lz8qius4a .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792766477236-lz8qius4a .fv-stl-shop-all-logo, #fv-chart-1792766477236-lz8qius4a .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-dial-title { font-size: 16px !important; } #fv-chart-1792766477236-lz8qius4a .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792766477236-lz8qius4a.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "COD MW4 preset performance - 1440p - RTX 3060 Ti",  "description": "Frame rates were taken at 1440p native, using an RTX 3060 Ti, Ryzen 7 7800X3D, and 32 GB of DDR5 RAM.",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-10-23T14:41:17.236Z",  "citation": "As with higher-end rigs, using the Balanced preset seems to give the best bang for your buck here, balancing visuals and performance. The RTX 3060 Ti maintains just above 60 fps on average when using the Balanced preset without upscaling.",  "keywords": [    "3060 Ti - Minimum",    "3060 Ti - Basic",    "3060 Ti - Balanced",    "3060 Ti - Ultra",    "3060 Ti - Extreme",    "Call of Duty: Modern Warfare 4",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Balanced – Call of Duty: Modern Warfare 4",      "value": 64,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "Basic – Call of Duty: Modern Warfare 4",      "value": 66,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "Extreme – Call of Duty: Modern Warfare 4",      "value": 43,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "Minimum – Call of Duty: Modern Warfare 4",      "value": 70,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "Ultra – Call of Duty: Modern Warfare 4",      "value": 48,      "unitText": "Avg fps"    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-10-23T14:41:17.236Z","state":{"data":[{"productName":"3060 Ti - Balanced","attribute":"Call of Duty: Modern Warfare 4","value":64,"unit":"Avg fps","multiValues":[{"value":64,"unit":"Avg fps"},{"value":56,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"3060 Ti - Basic","attribute":"Call of Duty: Modern Warfare 4","value":66,"unit":"Avg fps","multiValues":[{"value":66,"unit":"Avg fps"},{"value":59,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"3060 Ti - Extreme","attribute":"Call of Duty: Modern Warfare 4","value":43,"unit":"Avg fps","multiValues":[{"value":43,"unit":"Avg fps"},{"value":36,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"3060 Ti - Minimum","attribute":"Call of Duty: Modern Warfare 4","value":70,"unit":"Avg fps","multiValues":[{"value":70,"unit":"Avg fps"},{"value":59,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"3060 Ti - Ultra","attribute":"Call of Duty: Modern Warfare 4","value":48,"unit":"Avg fps","multiValues":[{"value":48,"unit":"Avg fps"},{"value":43,"unit":"1% low fps"}],"color":"","site":"PC Gamer"}],"products":["3060 Ti - Balanced","3060 Ti - Basic","3060 Ti - Extreme","3060 Ti - Minimum","3060 Ti - Ultra"],"attributes":["Call of Duty: Modern Warfare 4"],"selectedProducts":["3060 Ti - Minimum","3060 Ti - Basic","3060 Ti - Balanced","3060 Ti - Ultra","3060 Ti - Extreme"],"selectedPrimaryProduct":null,"selectedAttributes":["Call of Duty: Modern Warfare 4"],"productColors":[{"productName":"3060 Ti - Balanced","color":"#E33235"},{"productName":"3060 Ti - Basic","color":"#FE9F58"},{"productName":"3060 Ti - Extreme","color":"#1CA9C4"},{"productName":"3060 Ti - Minimum","color":"#EB6F71"},{"productName":"3060 Ti - Ultra","color":"#FFC08B"}],"initialProductColors":[{"productName":"3060 Ti - Balanced","color":"#E33235"},{"productName":"3060 Ti - Basic","color":"#FE9F58"},{"productName":"3060 Ti - Extreme","color":"#1CA9C4"},{"productName":"3060 Ti - Minimum","color":"#EB6F71"},{"productName":"3060 Ti - Ultra","color":"#FFC08B"}],"attributeColors":[],"attributeGroups":[],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"PC Gamer","logoUrl":"https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png","sliderLogoShape":"square","embedBg":"#ededed","colors":{"primary":"#E33235","secondary":"#FE9F58","accent":"#1CA9C4","background":"#ededed","text":"#1F2937","productColors":["#E33235","#FE9F58","#1CA9C4","#EB6F71","#FFC08B","#66C5D7","#B5282A","#D07F46"]}},"textContent":{"title":"COD MW4 preset performance - 1440p - RTX 3060 Ti","subhead":"Frame rates were taken at 1440p native, using an RTX 3060 Ti, Ryzen 7 7800X3D, and 32 GB of DDR5 RAM.","caption":"As with higher-end rigs, using the Balanced preset seems to give the best bang for your buck here, balancing visuals and performance. The RTX 3060 Ti maintains just above 60 fps on average when using the Balanced preset without upscaling.","productNameOverrides":{"3060 Ti - Minimum":"Minimum","3060 Ti - Basic":"Basic","3060 Ti - Balanced":"Balanced","3060 Ti - Ultra":"Ultra","3060 Ti - Extreme":"Extreme"},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1792766477236-lz8qius4a" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">COD MW4 preset performance - 1440p - RTX 3060 Ti</h3><p class="fv-chart-subhead">Frame rates were taken at 1440p native, using an RTX 3060 Ti, Ryzen 7 7800X3D, and 32 GB of DDR5 RAM.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1792766477236-lz8qius4a-bar-Call of Duty: Modern Warfare 4" data-chart-type="Bar" data-title="Call of Duty: Modern Warfare 4" data-subhead="Frame rates were taken at 1440p native, using an RTX 3060 Ti, Ryzen 7 7800X3D, and 32 GB of DDR5 RAM." data-caption="As with higher-end rigs, using the Balanced preset seems to give the best bang for your buck here, balancing visuals and performance. The RTX 3060 Ti maintains just above 60 fps on average when using the Balanced preset without upscaling." style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Call of Duty: Modern Warfare 4</h4><div class="fv-multi-value-legend"><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #E33235;"></div><span>Avg fps</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #FE9F58;"></div><span>1% low fps</span></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Minimum</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 87.5%; background-color: #E33235;" data-target-width="87.5" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">70</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 73.75%; background-color: #FE9F58;" data-target-width="73.75" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">59</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Basic</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 82.5%; background-color: #E33235;" data-target-width="82.5" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">66</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 73.75%; background-color: #FE9F58;" data-target-width="73.75" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">59</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Balanced</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 80%; background-color: #E33235;" data-target-width="80" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">64</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 70%; background-color: #FE9F58;" data-target-width="70" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">56</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Ultra</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 60%; background-color: #E33235;" data-target-width="60" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">48</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 53.75%; background-color: #FE9F58;" data-target-width="53.75" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">43</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Extreme</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 53.75%; background-color: #E33235;" data-target-width="53.75" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">43</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 45%; background-color: #FE9F58;" data-target-width="45" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">36</span></div></div></div></div></div><div class="fv-x-axis-wrapper"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>20</span><span>40</span><span>60</span><span>80</span></div></div></div><table class="sr-only"><caption>Call of Duty: Modern Warfare 4 Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Minimum</td><td>70 Avg fps, 59 1% low fps</td></tr><tr><td>Basic</td><td>66 Avg fps, 59 1% low fps</td></tr><tr><td>Balanced</td><td>64 Avg fps, 56 1% low fps</td></tr><tr><td>Ultra</td><td>48 Avg fps, 43 1% low fps</td></tr><tr><td>Extreme</td><td>43 Avg fps, 36 1% low fps</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: block;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;">As with higher-end rigs, using the Balanced preset seems to give the best bang for your buck here, balancing visuals and performance. The RTX 3060 Ti maintains just above 60 fps on average when using the Balanced preset without upscaling.</span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792766477236-lz8qius4a', false); });      } else {        initialize('fv-chart-1792766477236-lz8qius4a', false);      }    })();      </script></div><p>I captured these frame rates during the same repeated 30-second run in a campaign mission, but I've found they translate pretty well to DMZ, although a few frames are shaved off in that mode, and a few additional are shaved off when looking into the distance across the expansive map.</p><p>The trick to get buttery smooth frame rates with a GPU like the RTX 3060 Ti is to enable DLSS upscaling in Quality mode.</p><p>Enabling Quality upscaling takes frame rates from just above 60 to around 90 or even 100 when using the Balanced preset, if you opt for the older CNN model. I didn't notice much of a difference in visuals between CNN and Transformer models, so I'd be opting for the former just for the extra handful of frames, but either way you're getting something very playable.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792766701537-tgv5kqsc5 *, #fv-chart-1792766701537-tgv5kqsc5 *:before, #fv-chart-1792766701537-tgv5kqsc5 *:after, #fv-chart-1792766701537-tgv5kqsc5-slideshow *, #fv-chart-1792766701537-tgv5kqsc5-slideshow *:before, #fv-chart-1792766701537-tgv5kqsc5-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792766701537-tgv5kqsc5, #fv-chart-1792766701537-tgv5kqsc5-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792766701537-tgv5kqsc5 { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1792766701537-tgv5kqsc5 .fv-inner-wrapper { color: #1F2937 !important; background-color: #ededed !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792766701537-tgv5kqsc5.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792766701537-tgv5kqsc5-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-nav-btn.disabled, #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-slideshow-select:focus { outline: 2px solid #E33235 !important; border-color: #E33235 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792766701537-tgv5kqsc5 .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792766701537-tgv5kqsc5 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792766701537-tgv5kqsc5 .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792766701537-tgv5kqsc5 .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792766701537-tgv5kqsc5 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-row, #fv-chart-1792766701537-tgv5kqsc5 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792766701537-tgv5kqsc5.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792766701537-tgv5kqsc5.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792766701537-tgv5kqsc5.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792766701537-tgv5kqsc5.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792766701537-tgv5kqsc5.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792766701537-tgv5kqsc5.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792766701537-tgv5kqsc5 .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-pie-container, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-row, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-stacked-product, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-grouped-bar-product, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-bar-row, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-stacked-product, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-label, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-grouped-product-title, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-bar-label, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-container, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-cluster, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-bar-container, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-x-axis-wrapper, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-x-axis-label-space, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-x-axis-chart-space, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-benchmark-title, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-dropdown-title, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-carousel-nav-btn, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-chart-title, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-chart-subhead, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-versus-header, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-versus-select-wrapper, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-versus-vs, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-versus-select-container, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-versus-select, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-commentary-inline, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-dials-grid, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-dial-title, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792766701537-tgv5kqsc5 .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-row, #fv-chart-1792766701537-tgv5kqsc5 .fv-stacked-product, #fv-chart-1792766701537-tgv5kqsc5 .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-label, #fv-chart-1792766701537-tgv5kqsc5 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-container, #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-cluster { width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-label-space { display: none !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-stl-shop-all-logo, #fv-chart-1792766701537-tgv5kqsc5 .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dial-title { font-size: 16px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792766701537-tgv5kqsc5.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "DLSS Quality vs native at 1440p",  "description": "This compares playing the game at 1440p native to the two different versions of DLSS upscaling, set to Quality. ",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-10-23T14:45:01.537Z",  "citation": "Enabling DLSS on Quality turns gameplay from playable into a very smooth experience, whether that's using the CNN or Transformer model.",  "keywords": [    "3060 Ti - 1440p - CNN Quality",    "3060 Ti - 1440p - Transformer Quality",    "3060 Ti - Balanced",    "Call of Duty: Modern Warfare 4",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "DLSS CNN Quality – Call of Duty: Modern Warfare 4",      "value": 97,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "DLSS Transformer Quality – Call of Duty: Modern Warfare 4",      "value": 89,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "Native 1440p – Call of Duty: Modern Warfare 4",      "value": 64,      "unitText": "Avg fps"    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-10-23T14:45:01.537Z","state":{"data":[{"productName":"3060 Ti - 1440p - CNN Quality","attribute":"Call of Duty: Modern Warfare 4","value":97,"unit":"Avg fps","multiValues":[{"value":97,"unit":"Avg fps"},{"value":86,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"3060 Ti - 1440p - Transformer Quality","attribute":"Call of Duty: Modern Warfare 4","value":89,"unit":"Avg fps","multiValues":[{"value":89,"unit":"Avg fps"},{"value":78,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"3060 Ti - Balanced","attribute":"Call of Duty: Modern Warfare 4","value":64,"unit":"Avg fps","multiValues":[{"value":64,"unit":"Avg fps"},{"value":56,"unit":"1% low fps"}],"color":"","site":"PC Gamer"}],"products":["3060 Ti - 1440p - CNN Quality","3060 Ti - 1440p - Transformer Quality","3060 Ti - Balanced"],"attributes":["Call of Duty: Modern Warfare 4"],"selectedProducts":["3060 Ti - 1440p - CNN Quality","3060 Ti - 1440p - Transformer Quality","3060 Ti - Balanced"],"selectedPrimaryProduct":null,"selectedAttributes":["Call of Duty: Modern Warfare 4"],"productColors":[{"productName":"3060 Ti - 1440p - CNN Quality","color":"#E33235"},{"productName":"3060 Ti - 1440p - Transformer Quality","color":"#FE9F58"},{"productName":"3060 Ti - Balanced","color":"#1CA9C4"}],"initialProductColors":[{"productName":"3060 Ti - 1440p - CNN Quality","color":"#E33235"},{"productName":"3060 Ti - 1440p - Transformer Quality","color":"#FE9F58"},{"productName":"3060 Ti - Balanced","color":"#1CA9C4"}],"attributeColors":[],"attributeGroups":[],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"PC Gamer","logoUrl":"https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png","sliderLogoShape":"square","embedBg":"#ededed","colors":{"primary":"#E33235","secondary":"#FE9F58","accent":"#1CA9C4","background":"#ededed","text":"#1F2937","productColors":["#E33235","#FE9F58","#1CA9C4","#EB6F71","#FFC08B","#66C5D7","#B5282A","#D07F46"]}},"textContent":{"title":"DLSS Quality vs native at 1440p","subhead":"This compares playing the game at 1440p native to the two different versions of DLSS upscaling, set to Quality. ","caption":"Enabling DLSS on Quality turns gameplay from playable into a very smooth experience, whether that's using the CNN or Transformer model.","productNameOverrides":{"3060 Ti - 1440p - CNN Quality":"DLSS CNN Quality","3060 Ti - 1440p - Transformer Quality":"DLSS Transformer Quality","3060 Ti - Balanced":"Native 1440p"},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1792766701537-tgv5kqsc5" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">DLSS Quality vs native at 1440p</h3><p class="fv-chart-subhead">This compares playing the game at 1440p native to the two different versions of DLSS upscaling, set to Quality. </p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1792766701537-tgv5kqsc5-bar-Call of Duty: Modern Warfare 4" data-chart-type="Bar" data-title="Call of Duty: Modern Warfare 4" data-subhead="This compares playing the game at 1440p native to the two different versions of DLSS upscaling, set to Quality. " data-caption="Enabling DLSS on Quality turns gameplay from playable into a very smooth experience, whether that's using the CNN or Transformer model." style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Call of Duty: Modern Warfare 4</h4><div class="fv-multi-value-legend"><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #E33235;"></div><span>Avg fps</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #FE9F58;"></div><span>1% low fps</span></div></div><div class="fv-bar-row"><div class="fv-bar-label ">DLSS CNN Quality</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 97%; background-color: #E33235;" data-target-width="97" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">97</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 86%; background-color: #FE9F58;" data-target-width="86" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">86</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">DLSS Transformer Quality</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 89%; background-color: #E33235;" data-target-width="89" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">89</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 78%; background-color: #FE9F58;" data-target-width="78" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">78</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Native 1440p</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 64%; background-color: #E33235;" data-target-width="64" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">64</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 56.00000000000001%; background-color: #FE9F58;" data-target-width="56.00000000000001" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">56</span></div></div></div></div></div><div class="fv-x-axis-wrapper"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>25</span><span>50</span><span>75</span><span>100</span></div></div></div><table class="sr-only"><caption>Call of Duty: Modern Warfare 4 Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>DLSS CNN Quality</td><td>97 Avg fps, 86 1% low fps</td></tr><tr><td>DLSS Transformer Quality</td><td>89 Avg fps, 78 1% low fps</td></tr><tr><td>Native 1440p</td><td>64 Avg fps, 56 1% low fps</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: block;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;">Enabling DLSS on Quality turns gameplay from playable into a very smooth experience, whether that's using the CNN or Transformer model.</span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792766701537-tgv5kqsc5', false); });      } else {        initialize('fv-chart-1792766701537-tgv5kqsc5', false);      }    })();      </script></div><p>All of the above is speaking to 1440p, but if you have a 1080p monitor or don't mind dropping to 1080p on your 1440p monitor, you can get some very nice frame rates from a card like the RTX 3060 Ti. As you can see from my final chart below, you can push about 130 fps on average in the campaign if you play at 1080p with DLSS enabled, again on the Balanced preset.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792772623125-cdpk07qu4 *, #fv-chart-1792772623125-cdpk07qu4 *:before, #fv-chart-1792772623125-cdpk07qu4 *:after, #fv-chart-1792772623125-cdpk07qu4-slideshow *, #fv-chart-1792772623125-cdpk07qu4-slideshow *:before, #fv-chart-1792772623125-cdpk07qu4-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792772623125-cdpk07qu4, #fv-chart-1792772623125-cdpk07qu4-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792772623125-cdpk07qu4 { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1792772623125-cdpk07qu4 .fv-inner-wrapper { color: #1F2937 !important; background-color: #ededed !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792772623125-cdpk07qu4.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792772623125-cdpk07qu4.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792772623125-cdpk07qu4-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-nav-btn.disabled, #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-slideshow-select:focus { outline: 2px solid #E33235 !important; border-color: #E33235 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792772623125-cdpk07qu4 .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792772623125-cdpk07qu4 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792772623125-cdpk07qu4 .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792772623125-cdpk07qu4 .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792772623125-cdpk07qu4 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-row, #fv-chart-1792772623125-cdpk07qu4 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792772623125-cdpk07qu4.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792772623125-cdpk07qu4.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792772623125-cdpk07qu4.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792772623125-cdpk07qu4.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792772623125-cdpk07qu4.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792772623125-cdpk07qu4.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792772623125-cdpk07qu4 .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-pie-container, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-row, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-stacked-product, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-grouped-bar-product, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-bar-row, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-stacked-product, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-label, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-grouped-product-title, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-bar-label, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-container, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-cluster, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-bar-container, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-x-axis-wrapper, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-x-axis-label-space, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-x-axis-chart-space, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-benchmark-title, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-dropdown-title, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-carousel-nav-btn, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-chart-title, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-chart-subhead, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-versus-header, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-versus-select-wrapper, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-versus-vs, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-versus-select-container, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-versus-select, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-commentary-inline, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-dials-grid, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-dial-title, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792772623125-cdpk07qu4 .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-row, #fv-chart-1792772623125-cdpk07qu4 .fv-stacked-product, #fv-chart-1792772623125-cdpk07qu4 .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-label, #fv-chart-1792772623125-cdpk07qu4 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-container, #fv-chart-1792772623125-cdpk07qu4 .fv-bar-cluster { width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792772623125-cdpk07qu4 .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792772623125-cdpk07qu4 .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792772623125-cdpk07qu4 .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-label-space { display: none !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-stl-shop-all-logo, #fv-chart-1792772623125-cdpk07qu4 .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dial-title { font-size: 16px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792772623125-cdpk07qu4.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Comparing 1440p to 1080p performance",  "description": "This chart compares performance at 1440p to 1080p using an RTX 3060 Ti, with upscaling enabled and disabled.",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-10-23T16:23:43.125Z",  "citation": "1080p with DLSS enabled performs very smoothly, suitable for a 144 Hz or 165 Hz monitor. Playing at 1440p with DLSS enabled gives about the same performance as playing at 1080p native (DLSS disabled).",  "keywords": [    "3060 Ti - Balanced",    "3060 Ti - 1440p - CNN Quality",    "3060 Ti - 1080p native",    "3060 Ti - 1080p - CNN Quality",    "Call of Duty: Modern Warfare 4",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "1080p DLSS Quality (CNN) – Call of Duty: Modern Warfare 4",      "value": 131,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "1080p Native – Call of Duty: Modern Warfare 4",      "value": 92,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "1440p DLSS Quality (CNN) – Call of Duty: Modern Warfare 4",      "value": 97,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "1440p Native – Call of Duty: Modern Warfare 4",      "value": 64,      "unitText": "Avg fps"    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-10-23T16:23:43.125Z","state":{"data":[{"productName":"3060 Ti - 1080p - CNN Quality","attribute":"Call of Duty: Modern Warfare 4","value":131,"unit":"Avg fps","multiValues":[{"value":131,"unit":"Avg fps"},{"value":113,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"3060 Ti - 1080p native","attribute":"Call of Duty: Modern Warfare 4","value":92,"unit":"Avg fps","multiValues":[{"value":92,"unit":"Avg fps"},{"value":81,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"3060 Ti - 1440p - CNN Quality","attribute":"Call of Duty: Modern Warfare 4","value":97,"unit":"Avg fps","multiValues":[{"value":97,"unit":"Avg fps"},{"value":86,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"3060 Ti - Balanced","attribute":"Call of Duty: Modern Warfare 4","value":64,"unit":"Avg fps","multiValues":[{"value":64,"unit":"Avg fps"},{"value":56,"unit":"1% low fps"}],"color":"","site":"PC Gamer"}],"products":["3060 Ti - 1080p - CNN Quality","3060 Ti - 1080p native","3060 Ti - 1440p - CNN Quality","3060 Ti - Balanced"],"attributes":["Call of Duty: Modern Warfare 4"],"selectedProducts":["3060 Ti - Balanced","3060 Ti - 1440p - CNN Quality","3060 Ti - 1080p native","3060 Ti - 1080p - CNN Quality"],"selectedPrimaryProduct":null,"selectedAttributes":["Call of Duty: Modern Warfare 4"],"productColors":[{"productName":"3060 Ti - 1080p - CNN Quality","color":"#E33235"},{"productName":"3060 Ti - 1080p native","color":"#FE9F58"},{"productName":"3060 Ti - 1440p - CNN Quality","color":"#1CA9C4"},{"productName":"3060 Ti - Balanced","color":"#EB6F71"}],"initialProductColors":[{"productName":"3060 Ti - 1080p - CNN Quality","color":"#E33235"},{"productName":"3060 Ti - 1080p native","color":"#FE9F58"},{"productName":"3060 Ti - 1440p - CNN Quality","color":"#1CA9C4"},{"productName":"3060 Ti - Balanced","color":"#EB6F71"}],"attributeColors":[],"attributeGroups":[],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"PC Gamer","logoUrl":"https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png","sliderLogoShape":"square","embedBg":"#ededed","colors":{"primary":"#E33235","secondary":"#FE9F58","accent":"#1CA9C4","background":"#ededed","text":"#1F2937","productColors":["#E33235","#FE9F58","#1CA9C4","#EB6F71","#FFC08B","#66C5D7","#B5282A","#D07F46"]}},"textContent":{"title":"Comparing 1440p to 1080p performance","subhead":"This chart compares performance at 1440p to 1080p using an RTX 3060 Ti, with upscaling enabled and disabled.","caption":"1080p with DLSS enabled performs very smoothly, suitable for a 144 Hz or 165 Hz monitor. Playing at 1440p with DLSS enabled gives about the same performance as playing at 1080p native (DLSS disabled).","productNameOverrides":{"3060 Ti - Balanced":"1440p Native","3060 Ti - 1440p - CNN Quality":"1440p DLSS Quality (CNN)","3060 Ti - 1080p native":"1080p Native","3060 Ti - 1080p - CNN Quality":"1080p DLSS Quality (CNN)"},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1792772623125-cdpk07qu4" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Comparing 1440p to 1080p performance</h3><p class="fv-chart-subhead">This chart compares performance at 1440p to 1080p using an RTX 3060 Ti, with upscaling enabled and disabled.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1792772623125-cdpk07qu4-bar-Call of Duty: Modern Warfare 4" data-chart-type="Bar" data-title="Call of Duty: Modern Warfare 4" data-subhead="This chart compares performance at 1440p to 1080p using an RTX 3060 Ti, with upscaling enabled and disabled." data-caption="1080p with DLSS enabled performs very smoothly, suitable for a 144 Hz or 165 Hz monitor. Playing at 1440p with DLSS enabled gives about the same performance as playing at 1080p native (DLSS disabled)." style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Call of Duty: Modern Warfare 4</h4><div class="fv-multi-value-legend"><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #E33235;"></div><span>Avg fps</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #FE9F58;"></div><span>1% low fps</span></div></div><div class="fv-bar-row"><div class="fv-bar-label ">1440p Native</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 42.66666666666667%; background-color: #E33235;" data-target-width="42.66666666666667" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">64</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 37.333333333333336%; background-color: #FE9F58;" data-target-width="37.333333333333336" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">56</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">1440p DLSS Quality (CNN)</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 64.66666666666666%; background-color: #E33235;" data-target-width="64.66666666666666" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">97</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 57.333333333333336%; background-color: #FE9F58;" data-target-width="57.333333333333336" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">86</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">1080p Native</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 61.33333333333333%; background-color: #E33235;" data-target-width="61.33333333333333" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">92</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 54%; background-color: #FE9F58;" data-target-width="54" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">81</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">1080p DLSS Quality (CNN)</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 87.33333333333333%; background-color: #E33235;" data-target-width="87.33333333333333" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">131</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 75.33333333333333%; background-color: #FE9F58;" data-target-width="75.33333333333333" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">113</span></div></div></div></div></div><div class="fv-x-axis-wrapper"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>37.5</span><span>75</span><span>112.5</span><span>150</span></div></div></div><table class="sr-only"><caption>Call of Duty: Modern Warfare 4 Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>1440p Native</td><td>64 Avg fps, 56 1% low fps</td></tr><tr><td>1440p DLSS Quality (CNN)</td><td>97 Avg fps, 86 1% low fps</td></tr><tr><td>1080p Native</td><td>92 Avg fps, 81 1% low fps</td></tr><tr><td>1080p DLSS Quality (CNN)</td><td>131 Avg fps, 113 1% low fps</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: block;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;">1080p with DLSS enabled performs very smoothly, suitable for a 144 Hz or 165 Hz monitor. Playing at 1440p with DLSS enabled gives about the same performance as playing at 1080p native (DLSS disabled).</span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792772623125-cdpk07qu4', false); });      } else {        initialize('fv-chart-1792772623125-cdpk07qu4', false);      }    })();      </script></div><p>There are two caveats here, though. The first is that I wouldn't recommend doing this if you're on a 27-inch, 1440p monitor because it can look quite blurry. I'd just stick to 1440p with DLSS enabled instead. </p><p>The second caveat is that, in DMZ, I found frame rates to be a little lower than the ones I recorded in my runs of the campaign mission. But I'd still stick to those settings I just described. At 1440p with DLSS enabled in DMZ I get about 80–95 fps, and at 1080p with DLSS enabled I get about 110 fps.</p><h2 class="article-body__section" id="section-the-settings-i-d-use-in-cod-mw2-with-an-rtx-3060-ti"><span>The settings I'd use in COD: MW2 with an RTX 3060 Ti</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1913px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ADf8vRbBtWTiViXXLTEKWT" name="image (5)" alt="A screenshot of the COD: MW4 operator selection screen." src="https://cdn.mos.cms.futurecdn.net/ADf8vRbBtWTiViXXLTEKWT-1920-80.jpg" mos="" align="middle" fullscreen="" width="1913" height="1076" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><p>This is the resolution and upscaling combo setup I'd personally use to actually play the game if I had a 27-inch, 1440p monitor: <strong>1440p resolution, DLSS Quality upscaling (CNN), and the Balanced preset.</strong> If I was using a 24-inch, 1080p monitor, I'd stick to DLSS Quality (CNN) and the Balanced preset, but obviously have the resolution at 1080p instead. With a smaller 1080p monitor, it's not as blurry to have DLSS enabled even at 1080p.</p><p>The final bit of good news is that I've found my frame rate to be pretty consistent, too. With an RTX 3060 Ti, I get frame rates consistently pushing closer to 100 fps than 60 fps at 1440p with DLSS Quality enabled and using the Balanced preset.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792748156761-g6kvjaygs *, #fv-chart-1792748156761-g6kvjaygs *:before, #fv-chart-1792748156761-g6kvjaygs *:after, #fv-chart-1792748156761-g6kvjaygs-slideshow *, #fv-chart-1792748156761-g6kvjaygs-slideshow *:before, #fv-chart-1792748156761-g6kvjaygs-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792748156761-g6kvjaygs, #fv-chart-1792748156761-g6kvjaygs-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792748156761-g6kvjaygs { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1792748156761-g6kvjaygs .fv-inner-wrapper { color: #1F2937 !important; background-color: #ededed !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792748156761-g6kvjaygs .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792748156761-g6kvjaygs.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792748156761-g6kvjaygs .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-nav-btn.disabled, #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slideshow-select:focus { outline: 2px solid #E33235 !important; border-color: #E33235 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792748156761-g6kvjaygs .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792748156761-g6kvjaygs .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792748156761-g6kvjaygs .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792748156761-g6kvjaygs .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792748156761-g6kvjaygs .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792748156761-g6kvjaygs .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792748156761-g6kvjaygs .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-row, #fv-chart-1792748156761-g6kvjaygs .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792748156761-g6kvjaygs .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792748156761-g6kvjaygs .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792748156761-g6kvjaygs .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792748156761-g6kvjaygs .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792748156761-g6kvjaygs .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1792748156761-g6kvjaygs.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-expand-btn, #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-expand-btn:hover, #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-pie-container, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-stacked-product, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-grouped-bar-product, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-row, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-stacked-product, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-label, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-grouped-product-title, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-label, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-container, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-cluster, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-container, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-x-axis-wrapper, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-x-axis-label-space, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-x-axis-chart-space, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-benchmark-title, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-dropdown-title, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-carousel-nav-btn, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-chart-title, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-chart-subhead, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-header, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select-wrapper, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-vs, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select-container, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-dials-grid, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-dial-title, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792748156761-g6kvjaygs .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-row, #fv-chart-1792748156761-g6kvjaygs .fv-stacked-product, #fv-chart-1792748156761-g6kvjaygs .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-label, #fv-chart-1792748156761-g6kvjaygs .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-container, #fv-chart-1792748156761-g6kvjaygs .fv-bar-cluster { width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792748156761-g6kvjaygs .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-label-space { display: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stl-shop-all-logo, #fv-chart-1792748156761-g6kvjaygs .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792748156761-g6kvjaygs.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Comparing higher to lower detail quality",  "description": "High detail quality on the left, normal on the right. Notice the yellow/orange tree loses all detail in the right-hand image.",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-10-23T09:35:56.761Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Image Comparison",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-10-23T09:35:56.761Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"PC Gamer","logoUrl":"https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png","sliderLogoShape":"square","embedBg":"#ededed","colors":{"primary":"#E33235","secondary":"#FE9F58","accent":"#1CA9C4","background":"#ededed","text":"#1F2937","productColors":["#E33235","#FE9F58","#1CA9C4","#EB6F71","#FFC08B","#66C5D7","#B5282A","#D07F46"]}},"textContent":{"title":"Comparing higher to lower detail quality","subhead":"High detail quality on the left, normal on the right. Notice the yellow/orange tree loses all detail in the right-hand image.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/dgtm3mxTXQVJhTGBoH9uPM.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/xFCK2MB2Laec5Ca5WppqPM.jpg","label1":"High detail quality","label2":"Normal detail quality","showTitle":true,"showSubhead":true}},"slides":[]}</script><div id="fv-chart-1792748156761-g6kvjaygs" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Comparing higher to lower detail quality</h3><p class="fv-chart-subhead">High detail quality on the left, normal on the right. Notice the yellow/orange tree loses all detail in the right-hand image.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1792748156761-g6kvjaygs-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="High detail quality on the left, normal on the right. Notice the yellow/orange tree loses all detail in the right-hand image." data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/xFCK2MB2Laec5Ca5WppqPM.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/xFCK2MB2Laec5Ca5WppqPM.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/dgtm3mxTXQVJhTGBoH9uPM.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/dgtm3mxTXQVJhTGBoH9uPM.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle fv-image-compare-handle-square"><img src="https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">High detail quality</div><div class="fv-image-compare-label fv-image-compare-label-right">Normal detail quality</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792748156761-g6kvjaygs', false); });      } else {        initialize('fv-chart-1792748156761-g6kvjaygs', false);      }    })();      </script></div><p>A couple of final tips. One thing I'd recommend is avoiding the lower presets, and especially the bottom 'Minimum' one, as I found graphical fidelity takes a big hit when dropping that low. Everything is much more crisp at Balanced.</p><p>And finally: if you're okay sacrificing just a small handful of frames here and there, try turning your 'detail quality' setting up to High. I've found this eliminates some of the buggy, blocky trees and shrubbery you occasionally run into, and makes them look like actual trees.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/call-of-duty/call-of-duty-modern-warfare-4-actually-runs-pretty-smoothly-with-activisions-recommended-rtx-3060-ti-graphics-card-and-here-are-the-settings-i-use-to-get-the-best-performance-from-it/</link>
                                                                            <description>
                            <![CDATA[ Though upscaling is somewhat of a requirement if you're at 1440p. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ttt7wGWsmmh5Dtfq9Qede3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/K87Z9XfsywJDw2EBwveyme-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 16:13:25 +0000</pubDate>                                                                                                                                <updated>Fri, 23 Oct 2026 23:08:05 +0000</updated>
                                                                                                                                            <category><![CDATA[Call of Duty]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                    <category><![CDATA[FPS]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/K87Z9XfsywJDw2EBwveyme-1920-80.jpg">
                                                            <media:credit><![CDATA[Activision]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A screenshot of DMZ mode in Call of Duty: Modern Warfare 4, with detail quality and terrain quality set to high.]]></media:description>                                                            <media:text><![CDATA[A screenshot of DMZ mode in Call of Duty: Modern Warfare 4, with detail quality and terrain quality set to high.]]></media:text>
                                <media:title type="plain"><![CDATA[A screenshot of DMZ mode in Call of Duty: Modern Warfare 4, with detail quality and terrain quality set to high.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/K87Z9XfsywJDw2EBwveyme-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I've been having a grand old time playing <a href="https://www.pcgamer.com/games/call-of-duty/call-of-duty-modern-warfare-4-review-in-progress-a-campaign-you-shouldnt-skip/" target="_blank">Call of Duty: Modern Warfare 4</a> with an <a href="https://www.pcgamer.com/hardware/graphics-cards/amd-radeon-rx-9700-xt-review-asus-prime-oc/" target="_blank">RX 9070 XT</a>, but there'll be plenty of people wanting to run the game on older hardware. So, I decided to dust off my old and much-beloved workhorse, the <a href="https://www.pcgamer.com/nvidia-rtx-3060-ti-review-benchmarks-performance/" target="_blank">RTX 3060 Ti</a>, and see how it does in the new Activision shooter. I've been quite pleasantly surprised by the results.</p><p>Which is good news, considering <a href="https://support.activision.com/modern-warfare-4/articles/pc-system-requirements-for-modern-warfare-4" target="_blank">Activision lists</a> this graphics card, alongside the AMD RX 6600 XT and Intel Arc B580, as the 'recommended' ones to "run at 90 fps in multiplayer on High graphics settings."</p><p>I've found this actually pans out, provided you're at 1080p or are fine enabling Quality upscaling at 1440p.</p><h2 class="article-body__section" id="section-rtx-3060-ti-performance-in-cod-mw4"><span>RTX 3060 Ti performance in COD: MW4</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1911px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YCfD5BENn8KFH9od8t5TdT" name="image (4)" alt="A screenshot of COD: MW4, aiming down-range at a target." src="https://cdn.mos.cms.futurecdn.net/YCfD5BENn8KFH9od8t5TdT-1920-80.jpg" mos="" align="middle" fullscreen="" width="1911" height="1075" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><p>As you can see from the chart below, at 1440p native, the game struggles to reach this 90 fps target even on the Minimum preset. And as I noted in my <a href="https://www.pcgamer.com/games/call-of-duty/ive-tested-every-graphics-setting-in-call-of-duty-modern-warfare-4-tweak-these-four-options-for-the-best-performance/" target="_blank">general performance overview</a>—which, by the way, you should read if you want to know which specific settings to alter to improve your frame rate—the Balanced preset offers the best bang for your buck by far, as going up to Ultra lowers your frame rate significantly.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792766477236-lz8qius4a *, #fv-chart-1792766477236-lz8qius4a *:before, #fv-chart-1792766477236-lz8qius4a *:after, #fv-chart-1792766477236-lz8qius4a-slideshow *, #fv-chart-1792766477236-lz8qius4a-slideshow *:before, #fv-chart-1792766477236-lz8qius4a-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792766477236-lz8qius4a, #fv-chart-1792766477236-lz8qius4a-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792766477236-lz8qius4a { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1792766477236-lz8qius4a .fv-inner-wrapper { color: #1F2937 !important; background-color: #ededed !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792766477236-lz8qius4a .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792766477236-lz8qius4a.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792766477236-lz8qius4a.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792766477236-lz8qius4a .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792766477236-lz8qius4a-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1792766477236-lz8qius4a-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792766477236-lz8qius4a-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792766477236-lz8qius4a-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792766477236-lz8qius4a-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792766477236-lz8qius4a-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792766477236-lz8qius4a-slideshow .fv-nav-btn.disabled, #fv-chart-1792766477236-lz8qius4a-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792766477236-lz8qius4a-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792766477236-lz8qius4a-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792766477236-lz8qius4a-slideshow .fv-slideshow-select:focus { outline: 2px solid #E33235 !important; border-color: #E33235 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792766477236-lz8qius4a .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792766477236-lz8qius4a .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792766477236-lz8qius4a .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792766477236-lz8qius4a .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792766477236-lz8qius4a .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792766477236-lz8qius4a .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792766477236-lz8qius4a .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792766477236-lz8qius4a .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792766477236-lz8qius4a .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792766477236-lz8qius4a .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792766477236-lz8qius4a .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792766477236-lz8qius4a .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792766477236-lz8qius4a .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792766477236-lz8qius4a .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792766477236-lz8qius4a .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792766477236-lz8qius4a .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792766477236-lz8qius4a .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792766477236-lz8qius4a .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792766477236-lz8qius4a .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792766477236-lz8qius4a .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792766477236-lz8qius4a .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792766477236-lz8qius4a .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792766477236-lz8qius4a .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792766477236-lz8qius4a .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792766477236-lz8qius4a .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792766477236-lz8qius4a .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792766477236-lz8qius4a .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792766477236-lz8qius4a .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792766477236-lz8qius4a .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792766477236-lz8qius4a .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792766477236-lz8qius4a .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792766477236-lz8qius4a .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792766477236-lz8qius4a .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792766477236-lz8qius4a .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-row, #fv-chart-1792766477236-lz8qius4a .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792766477236-lz8qius4a.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792766477236-lz8qius4a.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792766477236-lz8qius4a.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792766477236-lz8qius4a .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792766477236-lz8qius4a .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792766477236-lz8qius4a .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792766477236-lz8qius4a .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792766477236-lz8qius4a .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792766477236-lz8qius4a .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792766477236-lz8qius4a .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792766477236-lz8qius4a .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792766477236-lz8qius4a .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792766477236-lz8qius4a .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792766477236-lz8qius4a .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792766477236-lz8qius4a .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792766477236-lz8qius4a .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792766477236-lz8qius4a .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792766477236-lz8qius4a.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792766477236-lz8qius4a.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792766477236-lz8qius4a.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792766477236-lz8qius4a .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792766477236-lz8qius4a .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-pie-container, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-row, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-stacked-product, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-grouped-bar-product, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-bar-row, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-stacked-product, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-label, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-grouped-product-title, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-bar-label, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-container, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-cluster, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-bar-container, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-x-axis-wrapper, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-x-axis-label-space, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-x-axis-chart-space, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-benchmark-title, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-dropdown-title, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-carousel-nav-btn, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-chart-title, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-chart-subhead, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-versus-header, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-versus-select-wrapper, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-versus-vs, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-versus-select-container, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-versus-select, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-bar-commentary-inline, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-dials-grid, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-dial-title, #fv-chart-1792766477236-lz8qius4a.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792766477236-lz8qius4a.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792766477236-lz8qius4a .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-row, #fv-chart-1792766477236-lz8qius4a .fv-stacked-product, #fv-chart-1792766477236-lz8qius4a .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-label, #fv-chart-1792766477236-lz8qius4a .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-container, #fv-chart-1792766477236-lz8qius4a .fv-bar-cluster { width: 100% !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792766477236-lz8qius4a .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792766477236-lz8qius4a .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792766477236-lz8qius4a .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-label-space { display: none !important; } #fv-chart-1792766477236-lz8qius4a .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792766477236-lz8qius4a .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792766477236-lz8qius4a .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792766477236-lz8qius4a .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792766477236-lz8qius4a .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792766477236-lz8qius4a .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792766477236-lz8qius4a .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792766477236-lz8qius4a .fv-stl-shop-all-logo, #fv-chart-1792766477236-lz8qius4a .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792766477236-lz8qius4a .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792766477236-lz8qius4a .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792766477236-lz8qius4a .fv-dial-title { font-size: 16px !important; } #fv-chart-1792766477236-lz8qius4a .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792766477236-lz8qius4a.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "COD MW4 preset performance - 1440p - RTX 3060 Ti",  "description": "Frame rates were taken at 1440p native, using an RTX 3060 Ti, Ryzen 7 7800X3D, and 32 GB of DDR5 RAM.",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-10-23T14:41:17.236Z",  "citation": "As with higher-end rigs, using the Balanced preset seems to give the best bang for your buck here, balancing visuals and performance. The RTX 3060 Ti maintains just above 60 fps on average when using the Balanced preset without upscaling.",  "keywords": [    "3060 Ti - Minimum",    "3060 Ti - Basic",    "3060 Ti - Balanced",    "3060 Ti - Ultra",    "3060 Ti - Extreme",    "Call of Duty: Modern Warfare 4",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Balanced – Call of Duty: Modern Warfare 4",      "value": 64,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "Basic – Call of Duty: Modern Warfare 4",      "value": 66,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "Extreme – Call of Duty: Modern Warfare 4",      "value": 43,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "Minimum – Call of Duty: Modern Warfare 4",      "value": 70,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "Ultra – Call of Duty: Modern Warfare 4",      "value": 48,      "unitText": "Avg fps"    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-10-23T14:41:17.236Z","state":{"data":[{"productName":"3060 Ti - Balanced","attribute":"Call of Duty: Modern Warfare 4","value":64,"unit":"Avg fps","multiValues":[{"value":64,"unit":"Avg fps"},{"value":56,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"3060 Ti - Basic","attribute":"Call of Duty: Modern Warfare 4","value":66,"unit":"Avg fps","multiValues":[{"value":66,"unit":"Avg fps"},{"value":59,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"3060 Ti - Extreme","attribute":"Call of Duty: Modern Warfare 4","value":43,"unit":"Avg fps","multiValues":[{"value":43,"unit":"Avg fps"},{"value":36,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"3060 Ti - Minimum","attribute":"Call of Duty: Modern Warfare 4","value":70,"unit":"Avg fps","multiValues":[{"value":70,"unit":"Avg fps"},{"value":59,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"3060 Ti - Ultra","attribute":"Call of Duty: Modern Warfare 4","value":48,"unit":"Avg fps","multiValues":[{"value":48,"unit":"Avg fps"},{"value":43,"unit":"1% low fps"}],"color":"","site":"PC Gamer"}],"products":["3060 Ti - Balanced","3060 Ti - Basic","3060 Ti - Extreme","3060 Ti - Minimum","3060 Ti - Ultra"],"attributes":["Call of Duty: Modern Warfare 4"],"selectedProducts":["3060 Ti - Minimum","3060 Ti - Basic","3060 Ti - Balanced","3060 Ti - Ultra","3060 Ti - Extreme"],"selectedPrimaryProduct":null,"selectedAttributes":["Call of Duty: Modern Warfare 4"],"productColors":[{"productName":"3060 Ti - Balanced","color":"#E33235"},{"productName":"3060 Ti - Basic","color":"#FE9F58"},{"productName":"3060 Ti - Extreme","color":"#1CA9C4"},{"productName":"3060 Ti - Minimum","color":"#EB6F71"},{"productName":"3060 Ti - Ultra","color":"#FFC08B"}],"initialProductColors":[{"productName":"3060 Ti - Balanced","color":"#E33235"},{"productName":"3060 Ti - Basic","color":"#FE9F58"},{"productName":"3060 Ti - Extreme","color":"#1CA9C4"},{"productName":"3060 Ti - Minimum","color":"#EB6F71"},{"productName":"3060 Ti - Ultra","color":"#FFC08B"}],"attributeColors":[],"attributeGroups":[],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"PC Gamer","logoUrl":"https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png","sliderLogoShape":"square","embedBg":"#ededed","colors":{"primary":"#E33235","secondary":"#FE9F58","accent":"#1CA9C4","background":"#ededed","text":"#1F2937","productColors":["#E33235","#FE9F58","#1CA9C4","#EB6F71","#FFC08B","#66C5D7","#B5282A","#D07F46"]}},"textContent":{"title":"COD MW4 preset performance - 1440p - RTX 3060 Ti","subhead":"Frame rates were taken at 1440p native, using an RTX 3060 Ti, Ryzen 7 7800X3D, and 32 GB of DDR5 RAM.","caption":"As with higher-end rigs, using the Balanced preset seems to give the best bang for your buck here, balancing visuals and performance. The RTX 3060 Ti maintains just above 60 fps on average when using the Balanced preset without upscaling.","productNameOverrides":{"3060 Ti - Minimum":"Minimum","3060 Ti - Basic":"Basic","3060 Ti - Balanced":"Balanced","3060 Ti - Ultra":"Ultra","3060 Ti - Extreme":"Extreme"},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1792766477236-lz8qius4a" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">COD MW4 preset performance - 1440p - RTX 3060 Ti</h3><p class="fv-chart-subhead">Frame rates were taken at 1440p native, using an RTX 3060 Ti, Ryzen 7 7800X3D, and 32 GB of DDR5 RAM.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1792766477236-lz8qius4a-bar-Call of Duty: Modern Warfare 4" data-chart-type="Bar" data-title="Call of Duty: Modern Warfare 4" data-subhead="Frame rates were taken at 1440p native, using an RTX 3060 Ti, Ryzen 7 7800X3D, and 32 GB of DDR5 RAM." data-caption="As with higher-end rigs, using the Balanced preset seems to give the best bang for your buck here, balancing visuals and performance. The RTX 3060 Ti maintains just above 60 fps on average when using the Balanced preset without upscaling." style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Call of Duty: Modern Warfare 4</h4><div class="fv-multi-value-legend"><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #E33235;"></div><span>Avg fps</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #FE9F58;"></div><span>1% low fps</span></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Minimum</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 87.5%; background-color: #E33235;" data-target-width="87.5" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">70</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 73.75%; background-color: #FE9F58;" data-target-width="73.75" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">59</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Basic</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 82.5%; background-color: #E33235;" data-target-width="82.5" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">66</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 73.75%; background-color: #FE9F58;" data-target-width="73.75" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">59</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Balanced</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 80%; background-color: #E33235;" data-target-width="80" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">64</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 70%; background-color: #FE9F58;" data-target-width="70" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">56</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Ultra</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 60%; background-color: #E33235;" data-target-width="60" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">48</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 53.75%; background-color: #FE9F58;" data-target-width="53.75" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">43</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Extreme</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 53.75%; background-color: #E33235;" data-target-width="53.75" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">43</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 45%; background-color: #FE9F58;" data-target-width="45" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">36</span></div></div></div></div></div><div class="fv-x-axis-wrapper"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>20</span><span>40</span><span>60</span><span>80</span></div></div></div><table class="sr-only"><caption>Call of Duty: Modern Warfare 4 Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Minimum</td><td>70 Avg fps, 59 1% low fps</td></tr><tr><td>Basic</td><td>66 Avg fps, 59 1% low fps</td></tr><tr><td>Balanced</td><td>64 Avg fps, 56 1% low fps</td></tr><tr><td>Ultra</td><td>48 Avg fps, 43 1% low fps</td></tr><tr><td>Extreme</td><td>43 Avg fps, 36 1% low fps</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: block;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;">As with higher-end rigs, using the Balanced preset seems to give the best bang for your buck here, balancing visuals and performance. The RTX 3060 Ti maintains just above 60 fps on average when using the Balanced preset without upscaling.</span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792766477236-lz8qius4a', false); });      } else {        initialize('fv-chart-1792766477236-lz8qius4a', false);      }    })();      </script></div><p>I captured these frame rates during the same repeated 30-second run in a campaign mission, but I've found they translate pretty well to DMZ, although a few frames are shaved off in that mode, and a few additional are shaved off when looking into the distance across the expansive map.</p><p>The trick to get buttery smooth frame rates with a GPU like the RTX 3060 Ti is to enable DLSS upscaling in Quality mode.</p><p>Enabling Quality upscaling takes frame rates from just above 60 to around 90 or even 100 when using the Balanced preset, if you opt for the older CNN model. I didn't notice much of a difference in visuals between CNN and Transformer models, so I'd be opting for the former just for the extra handful of frames, but either way you're getting something very playable.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792766701537-tgv5kqsc5 *, #fv-chart-1792766701537-tgv5kqsc5 *:before, #fv-chart-1792766701537-tgv5kqsc5 *:after, #fv-chart-1792766701537-tgv5kqsc5-slideshow *, #fv-chart-1792766701537-tgv5kqsc5-slideshow *:before, #fv-chart-1792766701537-tgv5kqsc5-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792766701537-tgv5kqsc5, #fv-chart-1792766701537-tgv5kqsc5-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792766701537-tgv5kqsc5 { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1792766701537-tgv5kqsc5 .fv-inner-wrapper { color: #1F2937 !important; background-color: #ededed !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792766701537-tgv5kqsc5.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792766701537-tgv5kqsc5-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-nav-btn.disabled, #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792766701537-tgv5kqsc5-slideshow .fv-slideshow-select:focus { outline: 2px solid #E33235 !important; border-color: #E33235 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792766701537-tgv5kqsc5 .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792766701537-tgv5kqsc5 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792766701537-tgv5kqsc5 .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792766701537-tgv5kqsc5 .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792766701537-tgv5kqsc5 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-row, #fv-chart-1792766701537-tgv5kqsc5 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792766701537-tgv5kqsc5.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792766701537-tgv5kqsc5.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792766701537-tgv5kqsc5.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792766701537-tgv5kqsc5.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792766701537-tgv5kqsc5.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792766701537-tgv5kqsc5.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792766701537-tgv5kqsc5 .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-pie-container, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-row, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-stacked-product, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-grouped-bar-product, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-bar-row, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-stacked-product, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-label, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-grouped-product-title, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-bar-label, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-container, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-cluster, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-bar-container, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-x-axis-wrapper, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-x-axis-label-space, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-x-axis-chart-space, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-benchmark-title, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-dropdown-title, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-carousel-nav-btn, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-chart-title, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-chart-subhead, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-versus-header, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-versus-select-wrapper, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-versus-vs, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-versus-select-container, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-versus-select, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-bar-commentary-inline, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-dials-grid, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-dial-title, #fv-chart-1792766701537-tgv5kqsc5.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792766701537-tgv5kqsc5.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792766701537-tgv5kqsc5 .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-row, #fv-chart-1792766701537-tgv5kqsc5 .fv-stacked-product, #fv-chart-1792766701537-tgv5kqsc5 .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-label, #fv-chart-1792766701537-tgv5kqsc5 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-container, #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-cluster { width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-label-space { display: none !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-stl-shop-all-logo, #fv-chart-1792766701537-tgv5kqsc5 .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-dial-title { font-size: 16px !important; } #fv-chart-1792766701537-tgv5kqsc5 .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792766701537-tgv5kqsc5.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "DLSS Quality vs native at 1440p",  "description": "This compares playing the game at 1440p native to the two different versions of DLSS upscaling, set to Quality. ",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-10-23T14:45:01.537Z",  "citation": "Enabling DLSS on Quality turns gameplay from playable into a very smooth experience, whether that's using the CNN or Transformer model.",  "keywords": [    "3060 Ti - 1440p - CNN Quality",    "3060 Ti - 1440p - Transformer Quality",    "3060 Ti - Balanced",    "Call of Duty: Modern Warfare 4",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "DLSS CNN Quality – Call of Duty: Modern Warfare 4",      "value": 97,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "DLSS Transformer Quality – Call of Duty: Modern Warfare 4",      "value": 89,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "Native 1440p – Call of Duty: Modern Warfare 4",      "value": 64,      "unitText": "Avg fps"    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-10-23T14:45:01.537Z","state":{"data":[{"productName":"3060 Ti - 1440p - CNN Quality","attribute":"Call of Duty: Modern Warfare 4","value":97,"unit":"Avg fps","multiValues":[{"value":97,"unit":"Avg fps"},{"value":86,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"3060 Ti - 1440p - Transformer Quality","attribute":"Call of Duty: Modern Warfare 4","value":89,"unit":"Avg fps","multiValues":[{"value":89,"unit":"Avg fps"},{"value":78,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"3060 Ti - Balanced","attribute":"Call of Duty: Modern Warfare 4","value":64,"unit":"Avg fps","multiValues":[{"value":64,"unit":"Avg fps"},{"value":56,"unit":"1% low fps"}],"color":"","site":"PC Gamer"}],"products":["3060 Ti - 1440p - CNN Quality","3060 Ti - 1440p - Transformer Quality","3060 Ti - Balanced"],"attributes":["Call of Duty: Modern Warfare 4"],"selectedProducts":["3060 Ti - 1440p - CNN Quality","3060 Ti - 1440p - Transformer Quality","3060 Ti - Balanced"],"selectedPrimaryProduct":null,"selectedAttributes":["Call of Duty: Modern Warfare 4"],"productColors":[{"productName":"3060 Ti - 1440p - CNN Quality","color":"#E33235"},{"productName":"3060 Ti - 1440p - Transformer Quality","color":"#FE9F58"},{"productName":"3060 Ti - Balanced","color":"#1CA9C4"}],"initialProductColors":[{"productName":"3060 Ti - 1440p - CNN Quality","color":"#E33235"},{"productName":"3060 Ti - 1440p - Transformer Quality","color":"#FE9F58"},{"productName":"3060 Ti - Balanced","color":"#1CA9C4"}],"attributeColors":[],"attributeGroups":[],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"PC Gamer","logoUrl":"https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png","sliderLogoShape":"square","embedBg":"#ededed","colors":{"primary":"#E33235","secondary":"#FE9F58","accent":"#1CA9C4","background":"#ededed","text":"#1F2937","productColors":["#E33235","#FE9F58","#1CA9C4","#EB6F71","#FFC08B","#66C5D7","#B5282A","#D07F46"]}},"textContent":{"title":"DLSS Quality vs native at 1440p","subhead":"This compares playing the game at 1440p native to the two different versions of DLSS upscaling, set to Quality. ","caption":"Enabling DLSS on Quality turns gameplay from playable into a very smooth experience, whether that's using the CNN or Transformer model.","productNameOverrides":{"3060 Ti - 1440p - CNN Quality":"DLSS CNN Quality","3060 Ti - 1440p - Transformer Quality":"DLSS Transformer Quality","3060 Ti - Balanced":"Native 1440p"},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1792766701537-tgv5kqsc5" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">DLSS Quality vs native at 1440p</h3><p class="fv-chart-subhead">This compares playing the game at 1440p native to the two different versions of DLSS upscaling, set to Quality. </p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1792766701537-tgv5kqsc5-bar-Call of Duty: Modern Warfare 4" data-chart-type="Bar" data-title="Call of Duty: Modern Warfare 4" data-subhead="This compares playing the game at 1440p native to the two different versions of DLSS upscaling, set to Quality. " data-caption="Enabling DLSS on Quality turns gameplay from playable into a very smooth experience, whether that's using the CNN or Transformer model." style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Call of Duty: Modern Warfare 4</h4><div class="fv-multi-value-legend"><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #E33235;"></div><span>Avg fps</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #FE9F58;"></div><span>1% low fps</span></div></div><div class="fv-bar-row"><div class="fv-bar-label ">DLSS CNN Quality</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 97%; background-color: #E33235;" data-target-width="97" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">97</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 86%; background-color: #FE9F58;" data-target-width="86" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">86</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">DLSS Transformer Quality</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 89%; background-color: #E33235;" data-target-width="89" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">89</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 78%; background-color: #FE9F58;" data-target-width="78" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">78</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Native 1440p</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 64%; background-color: #E33235;" data-target-width="64" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">64</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 56.00000000000001%; background-color: #FE9F58;" data-target-width="56.00000000000001" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">56</span></div></div></div></div></div><div class="fv-x-axis-wrapper"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>25</span><span>50</span><span>75</span><span>100</span></div></div></div><table class="sr-only"><caption>Call of Duty: Modern Warfare 4 Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>DLSS CNN Quality</td><td>97 Avg fps, 86 1% low fps</td></tr><tr><td>DLSS Transformer Quality</td><td>89 Avg fps, 78 1% low fps</td></tr><tr><td>Native 1440p</td><td>64 Avg fps, 56 1% low fps</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: block;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;">Enabling DLSS on Quality turns gameplay from playable into a very smooth experience, whether that's using the CNN or Transformer model.</span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792766701537-tgv5kqsc5', false); });      } else {        initialize('fv-chart-1792766701537-tgv5kqsc5', false);      }    })();      </script></div><p>All of the above is speaking to 1440p, but if you have a 1080p monitor or don't mind dropping to 1080p on your 1440p monitor, you can get some very nice frame rates from a card like the RTX 3060 Ti. As you can see from my final chart below, you can push about 130 fps on average in the campaign if you play at 1080p with DLSS enabled, again on the Balanced preset.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792772623125-cdpk07qu4 *, #fv-chart-1792772623125-cdpk07qu4 *:before, #fv-chart-1792772623125-cdpk07qu4 *:after, #fv-chart-1792772623125-cdpk07qu4-slideshow *, #fv-chart-1792772623125-cdpk07qu4-slideshow *:before, #fv-chart-1792772623125-cdpk07qu4-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792772623125-cdpk07qu4, #fv-chart-1792772623125-cdpk07qu4-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792772623125-cdpk07qu4 { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1792772623125-cdpk07qu4 .fv-inner-wrapper { color: #1F2937 !important; background-color: #ededed !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792772623125-cdpk07qu4.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792772623125-cdpk07qu4.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792772623125-cdpk07qu4-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-nav-btn.disabled, #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792772623125-cdpk07qu4-slideshow .fv-slideshow-select:focus { outline: 2px solid #E33235 !important; border-color: #E33235 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792772623125-cdpk07qu4 .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792772623125-cdpk07qu4 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792772623125-cdpk07qu4 .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792772623125-cdpk07qu4 .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792772623125-cdpk07qu4 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-row, #fv-chart-1792772623125-cdpk07qu4 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792772623125-cdpk07qu4.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792772623125-cdpk07qu4.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792772623125-cdpk07qu4.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792772623125-cdpk07qu4.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792772623125-cdpk07qu4.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792772623125-cdpk07qu4.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792772623125-cdpk07qu4 .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-pie-container, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-row, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-stacked-product, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-grouped-bar-product, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-bar-row, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-stacked-product, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-label, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-grouped-product-title, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-bar-label, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-container, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-cluster, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-bar-container, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-x-axis-wrapper, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-x-axis-label-space, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-x-axis-chart-space, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-benchmark-title, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-dropdown-title, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-carousel-nav-btn, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-chart-title, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-chart-subhead, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-versus-header, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-versus-select-wrapper, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-versus-vs, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-versus-select-container, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-versus-select, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-bar-commentary-inline, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-dials-grid, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-dial-title, #fv-chart-1792772623125-cdpk07qu4.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792772623125-cdpk07qu4.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792772623125-cdpk07qu4 .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-row, #fv-chart-1792772623125-cdpk07qu4 .fv-stacked-product, #fv-chart-1792772623125-cdpk07qu4 .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-label, #fv-chart-1792772623125-cdpk07qu4 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-container, #fv-chart-1792772623125-cdpk07qu4 .fv-bar-cluster { width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792772623125-cdpk07qu4 .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792772623125-cdpk07qu4 .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792772623125-cdpk07qu4 .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-label-space { display: none !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-stl-shop-all-logo, #fv-chart-1792772623125-cdpk07qu4 .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-dial-title { font-size: 16px !important; } #fv-chart-1792772623125-cdpk07qu4 .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792772623125-cdpk07qu4.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Comparing 1440p to 1080p performance",  "description": "This chart compares performance at 1440p to 1080p using an RTX 3060 Ti, with upscaling enabled and disabled.",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-10-23T16:23:43.125Z",  "citation": "1080p with DLSS enabled performs very smoothly, suitable for a 144 Hz or 165 Hz monitor. Playing at 1440p with DLSS enabled gives about the same performance as playing at 1080p native (DLSS disabled).",  "keywords": [    "3060 Ti - Balanced",    "3060 Ti - 1440p - CNN Quality",    "3060 Ti - 1080p native",    "3060 Ti - 1080p - CNN Quality",    "Call of Duty: Modern Warfare 4",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "1080p DLSS Quality (CNN) – Call of Duty: Modern Warfare 4",      "value": 131,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "1080p Native – Call of Duty: Modern Warfare 4",      "value": 92,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "1440p DLSS Quality (CNN) – Call of Duty: Modern Warfare 4",      "value": 97,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "1440p Native – Call of Duty: Modern Warfare 4",      "value": 64,      "unitText": "Avg fps"    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-10-23T16:23:43.125Z","state":{"data":[{"productName":"3060 Ti - 1080p - CNN Quality","attribute":"Call of Duty: Modern Warfare 4","value":131,"unit":"Avg fps","multiValues":[{"value":131,"unit":"Avg fps"},{"value":113,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"3060 Ti - 1080p native","attribute":"Call of Duty: Modern Warfare 4","value":92,"unit":"Avg fps","multiValues":[{"value":92,"unit":"Avg fps"},{"value":81,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"3060 Ti - 1440p - CNN Quality","attribute":"Call of Duty: Modern Warfare 4","value":97,"unit":"Avg fps","multiValues":[{"value":97,"unit":"Avg fps"},{"value":86,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"3060 Ti - Balanced","attribute":"Call of Duty: Modern Warfare 4","value":64,"unit":"Avg fps","multiValues":[{"value":64,"unit":"Avg fps"},{"value":56,"unit":"1% low fps"}],"color":"","site":"PC Gamer"}],"products":["3060 Ti - 1080p - CNN Quality","3060 Ti - 1080p native","3060 Ti - 1440p - CNN Quality","3060 Ti - Balanced"],"attributes":["Call of Duty: Modern Warfare 4"],"selectedProducts":["3060 Ti - Balanced","3060 Ti - 1440p - CNN Quality","3060 Ti - 1080p native","3060 Ti - 1080p - CNN Quality"],"selectedPrimaryProduct":null,"selectedAttributes":["Call of Duty: Modern Warfare 4"],"productColors":[{"productName":"3060 Ti - 1080p - CNN Quality","color":"#E33235"},{"productName":"3060 Ti - 1080p native","color":"#FE9F58"},{"productName":"3060 Ti - 1440p - CNN Quality","color":"#1CA9C4"},{"productName":"3060 Ti - Balanced","color":"#EB6F71"}],"initialProductColors":[{"productName":"3060 Ti - 1080p - CNN Quality","color":"#E33235"},{"productName":"3060 Ti - 1080p native","color":"#FE9F58"},{"productName":"3060 Ti - 1440p - CNN Quality","color":"#1CA9C4"},{"productName":"3060 Ti - Balanced","color":"#EB6F71"}],"attributeColors":[],"attributeGroups":[],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"PC Gamer","logoUrl":"https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png","sliderLogoShape":"square","embedBg":"#ededed","colors":{"primary":"#E33235","secondary":"#FE9F58","accent":"#1CA9C4","background":"#ededed","text":"#1F2937","productColors":["#E33235","#FE9F58","#1CA9C4","#EB6F71","#FFC08B","#66C5D7","#B5282A","#D07F46"]}},"textContent":{"title":"Comparing 1440p to 1080p performance","subhead":"This chart compares performance at 1440p to 1080p using an RTX 3060 Ti, with upscaling enabled and disabled.","caption":"1080p with DLSS enabled performs very smoothly, suitable for a 144 Hz or 165 Hz monitor. Playing at 1440p with DLSS enabled gives about the same performance as playing at 1080p native (DLSS disabled).","productNameOverrides":{"3060 Ti - Balanced":"1440p Native","3060 Ti - 1440p - CNN Quality":"1440p DLSS Quality (CNN)","3060 Ti - 1080p native":"1080p Native","3060 Ti - 1080p - CNN Quality":"1080p DLSS Quality (CNN)"},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1792772623125-cdpk07qu4" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Comparing 1440p to 1080p performance</h3><p class="fv-chart-subhead">This chart compares performance at 1440p to 1080p using an RTX 3060 Ti, with upscaling enabled and disabled.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1792772623125-cdpk07qu4-bar-Call of Duty: Modern Warfare 4" data-chart-type="Bar" data-title="Call of Duty: Modern Warfare 4" data-subhead="This chart compares performance at 1440p to 1080p using an RTX 3060 Ti, with upscaling enabled and disabled." data-caption="1080p with DLSS enabled performs very smoothly, suitable for a 144 Hz or 165 Hz monitor. Playing at 1440p with DLSS enabled gives about the same performance as playing at 1080p native (DLSS disabled)." style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Call of Duty: Modern Warfare 4</h4><div class="fv-multi-value-legend"><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #E33235;"></div><span>Avg fps</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #FE9F58;"></div><span>1% low fps</span></div></div><div class="fv-bar-row"><div class="fv-bar-label ">1440p Native</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 42.66666666666667%; background-color: #E33235;" data-target-width="42.66666666666667" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">64</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 37.333333333333336%; background-color: #FE9F58;" data-target-width="37.333333333333336" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">56</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">1440p DLSS Quality (CNN)</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 64.66666666666666%; background-color: #E33235;" data-target-width="64.66666666666666" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">97</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 57.333333333333336%; background-color: #FE9F58;" data-target-width="57.333333333333336" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">86</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">1080p Native</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 61.33333333333333%; background-color: #E33235;" data-target-width="61.33333333333333" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">92</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 54%; background-color: #FE9F58;" data-target-width="54" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">81</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">1080p DLSS Quality (CNN)</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 87.33333333333333%; background-color: #E33235;" data-target-width="87.33333333333333" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">131</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 75.33333333333333%; background-color: #FE9F58;" data-target-width="75.33333333333333" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">113</span></div></div></div></div></div><div class="fv-x-axis-wrapper"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>37.5</span><span>75</span><span>112.5</span><span>150</span></div></div></div><table class="sr-only"><caption>Call of Duty: Modern Warfare 4 Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>1440p Native</td><td>64 Avg fps, 56 1% low fps</td></tr><tr><td>1440p DLSS Quality (CNN)</td><td>97 Avg fps, 86 1% low fps</td></tr><tr><td>1080p Native</td><td>92 Avg fps, 81 1% low fps</td></tr><tr><td>1080p DLSS Quality (CNN)</td><td>131 Avg fps, 113 1% low fps</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: block;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;">1080p with DLSS enabled performs very smoothly, suitable for a 144 Hz or 165 Hz monitor. Playing at 1440p with DLSS enabled gives about the same performance as playing at 1080p native (DLSS disabled).</span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792772623125-cdpk07qu4', false); });      } else {        initialize('fv-chart-1792772623125-cdpk07qu4', false);      }    })();      </script></div><p>There are two caveats here, though. The first is that I wouldn't recommend doing this if you're on a 27-inch, 1440p monitor because it can look quite blurry. I'd just stick to 1440p with DLSS enabled instead. </p><p>The second caveat is that, in DMZ, I found frame rates to be a little lower than the ones I recorded in my runs of the campaign mission. But I'd still stick to those settings I just described. At 1440p with DLSS enabled in DMZ I get about 80–95 fps, and at 1080p with DLSS enabled I get about 110 fps.</p><h2 class="article-body__section" id="section-the-settings-i-d-use-in-cod-mw2-with-an-rtx-3060-ti"><span>The settings I'd use in COD: MW2 with an RTX 3060 Ti</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1913px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ADf8vRbBtWTiViXXLTEKWT" name="image (5)" alt="A screenshot of the COD: MW4 operator selection screen." src="https://cdn.mos.cms.futurecdn.net/ADf8vRbBtWTiViXXLTEKWT-1920-80.jpg" mos="" align="middle" fullscreen="" width="1913" height="1076" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><p>This is the resolution and upscaling combo setup I'd personally use to actually play the game if I had a 27-inch, 1440p monitor: <strong>1440p resolution, DLSS Quality upscaling (CNN), and the Balanced preset.</strong> If I was using a 24-inch, 1080p monitor, I'd stick to DLSS Quality (CNN) and the Balanced preset, but obviously have the resolution at 1080p instead. With a smaller 1080p monitor, it's not as blurry to have DLSS enabled even at 1080p.</p><p>The final bit of good news is that I've found my frame rate to be pretty consistent, too. With an RTX 3060 Ti, I get frame rates consistently pushing closer to 100 fps than 60 fps at 1440p with DLSS Quality enabled and using the Balanced preset.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792748156761-g6kvjaygs *, #fv-chart-1792748156761-g6kvjaygs *:before, #fv-chart-1792748156761-g6kvjaygs *:after, #fv-chart-1792748156761-g6kvjaygs-slideshow *, #fv-chart-1792748156761-g6kvjaygs-slideshow *:before, #fv-chart-1792748156761-g6kvjaygs-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792748156761-g6kvjaygs, #fv-chart-1792748156761-g6kvjaygs-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792748156761-g6kvjaygs { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1792748156761-g6kvjaygs .fv-inner-wrapper { color: #1F2937 !important; background-color: #ededed !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792748156761-g6kvjaygs .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792748156761-g6kvjaygs.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792748156761-g6kvjaygs .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-nav-btn.disabled, #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slideshow-select:focus { outline: 2px solid #E33235 !important; border-color: #E33235 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792748156761-g6kvjaygs .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792748156761-g6kvjaygs .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792748156761-g6kvjaygs .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792748156761-g6kvjaygs .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792748156761-g6kvjaygs .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792748156761-g6kvjaygs .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792748156761-g6kvjaygs .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-row, #fv-chart-1792748156761-g6kvjaygs .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792748156761-g6kvjaygs .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792748156761-g6kvjaygs .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792748156761-g6kvjaygs .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792748156761-g6kvjaygs .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792748156761-g6kvjaygs .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1792748156761-g6kvjaygs.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-expand-btn, #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-expand-btn:hover, #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-pie-container, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-stacked-product, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-grouped-bar-product, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-row, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-stacked-product, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-label, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-grouped-product-title, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-label, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-container, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-cluster, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-container, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-x-axis-wrapper, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-x-axis-label-space, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-x-axis-chart-space, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-benchmark-title, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-dropdown-title, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-carousel-nav-btn, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-chart-title, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-chart-subhead, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-header, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select-wrapper, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-vs, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select-container, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-dials-grid, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-dial-title, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792748156761-g6kvjaygs .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-row, #fv-chart-1792748156761-g6kvjaygs .fv-stacked-product, #fv-chart-1792748156761-g6kvjaygs .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-label, #fv-chart-1792748156761-g6kvjaygs .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-container, #fv-chart-1792748156761-g6kvjaygs .fv-bar-cluster { width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792748156761-g6kvjaygs .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-label-space { display: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stl-shop-all-logo, #fv-chart-1792748156761-g6kvjaygs .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792748156761-g6kvjaygs.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Comparing higher to lower detail quality",  "description": "High detail quality on the left, normal on the right. Notice the yellow/orange tree loses all detail in the right-hand image.",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-10-23T09:35:56.761Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Image Comparison",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-10-23T09:35:56.761Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"PC Gamer","logoUrl":"https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png","sliderLogoShape":"square","embedBg":"#ededed","colors":{"primary":"#E33235","secondary":"#FE9F58","accent":"#1CA9C4","background":"#ededed","text":"#1F2937","productColors":["#E33235","#FE9F58","#1CA9C4","#EB6F71","#FFC08B","#66C5D7","#B5282A","#D07F46"]}},"textContent":{"title":"Comparing higher to lower detail quality","subhead":"High detail quality on the left, normal on the right. Notice the yellow/orange tree loses all detail in the right-hand image.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/dgtm3mxTXQVJhTGBoH9uPM.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/xFCK2MB2Laec5Ca5WppqPM.jpg","label1":"High detail quality","label2":"Normal detail quality","showTitle":true,"showSubhead":true}},"slides":[]}</script><div id="fv-chart-1792748156761-g6kvjaygs" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Comparing higher to lower detail quality</h3><p class="fv-chart-subhead">High detail quality on the left, normal on the right. Notice the yellow/orange tree loses all detail in the right-hand image.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1792748156761-g6kvjaygs-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="High detail quality on the left, normal on the right. Notice the yellow/orange tree loses all detail in the right-hand image." data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/xFCK2MB2Laec5Ca5WppqPM.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/xFCK2MB2Laec5Ca5WppqPM.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/dgtm3mxTXQVJhTGBoH9uPM.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/dgtm3mxTXQVJhTGBoH9uPM.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle fv-image-compare-handle-square"><img src="https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">High detail quality</div><div class="fv-image-compare-label fv-image-compare-label-right">Normal detail quality</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792748156761-g6kvjaygs', false); });      } else {        initialize('fv-chart-1792748156761-g6kvjaygs', false);      }    })();      </script></div><p>A couple of final tips. One thing I'd recommend is avoiding the lower presets, and especially the bottom 'Minimum' one, as I found graphical fidelity takes a big hit when dropping that low. Everything is much more crisp at Balanced.</p><p>And finally: if you're okay sacrificing just a small handful of frames here and there, try turning your 'detail quality' setting up to High. I've found this eliminates some of the buggy, blocky trees and shrubbery you occasionally run into, and makes them look like actual trees.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I've tested every graphics setting in Call of Duty: Modern Warfare 4—tweak these four options for the best performance ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I'm not usually one for all these fancy graphics; give me more frames, at all costs. But when I booted up <a href="https://www.pcgamer.com/games/call-of-duty/call-of-duty-modern-warfare-4-review-in-progress-a-campaign-you-shouldnt-skip/" target="_blank">Call of Duty: Modern Warfare 4</a>, I have to admit, I was a little reluctant to sacrifice too much in the visual department. Because the game is, indeed, gorgeous despite being a little glitchy with texture pop-ins and flickering in DMZ mode. A more tailored approach was needed. So, I set about testing every single graphics setting in the game, one by one, to see which ones have the biggest impact, and I found there are four main settings to tweak.</p><p>First things first, though, if you just want to get up and going and you're using a mid-range PC, whack it on the Balanced preset, and you'll be fine. If you're using a high-end rig, then you should be fine setting it to the Ultra preset.</p><p><em>Note: All performance figures were calculated by doing the same 30-second run in-game, on Mission 4 of the campaign. I kept all movements and actions as similar as possible in each run I performed.</em></p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792748801715-rowg0zt4v *, #fv-chart-1792748801715-rowg0zt4v *:before, #fv-chart-1792748801715-rowg0zt4v *:after, #fv-chart-1792748801715-rowg0zt4v-slideshow *, #fv-chart-1792748801715-rowg0zt4v-slideshow *:before, #fv-chart-1792748801715-rowg0zt4v-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792748801715-rowg0zt4v, #fv-chart-1792748801715-rowg0zt4v-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792748801715-rowg0zt4v { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1792748801715-rowg0zt4v .fv-inner-wrapper { color: #1F2937 !important; background-color: #ededed !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792748801715-rowg0zt4v .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792748801715-rowg0zt4v.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792748801715-rowg0zt4v.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792748801715-rowg0zt4v .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792748801715-rowg0zt4v-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-nav-btn.disabled, #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-slideshow-select:focus { outline: 2px solid #E33235 !important; border-color: #E33235 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792748801715-rowg0zt4v .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792748801715-rowg0zt4v .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792748801715-rowg0zt4v .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792748801715-rowg0zt4v .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792748801715-rowg0zt4v .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792748801715-rowg0zt4v .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792748801715-rowg0zt4v .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792748801715-rowg0zt4v .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792748801715-rowg0zt4v .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-row, #fv-chart-1792748801715-rowg0zt4v .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792748801715-rowg0zt4v.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748801715-rowg0zt4v.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792748801715-rowg0zt4v.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792748801715-rowg0zt4v .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792748801715-rowg0zt4v .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792748801715-rowg0zt4v .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792748801715-rowg0zt4v .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792748801715-rowg0zt4v .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792748801715-rowg0zt4v .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792748801715-rowg0zt4v.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792748801715-rowg0zt4v.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792748801715-rowg0zt4v.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792748801715-rowg0zt4v .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792748801715-rowg0zt4v .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-pie-container, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-row, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-stacked-product, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-grouped-bar-product, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-bar-row, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-stacked-product, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-label, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-grouped-product-title, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-bar-label, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-container, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-cluster, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-bar-container, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-x-axis-wrapper, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-x-axis-label-space, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-x-axis-chart-space, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-benchmark-title, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-dropdown-title, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-carousel-nav-btn, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-chart-title, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-chart-subhead, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-versus-header, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-versus-select-wrapper, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-versus-vs, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-versus-select-container, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-versus-select, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-commentary-inline, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-dials-grid, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-dial-title, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792748801715-rowg0zt4v .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-row, #fv-chart-1792748801715-rowg0zt4v .fv-stacked-product, #fv-chart-1792748801715-rowg0zt4v .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-label, #fv-chart-1792748801715-rowg0zt4v .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-container, #fv-chart-1792748801715-rowg0zt4v .fv-bar-cluster { width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792748801715-rowg0zt4v .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748801715-rowg0zt4v .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792748801715-rowg0zt4v .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-label-space { display: none !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792748801715-rowg0zt4v .fv-stl-shop-all-logo, #fv-chart-1792748801715-rowg0zt4v .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dial-title { font-size: 16px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792748801715-rowg0zt4v.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Preset performance comparison",  "description": "Comparing game performance at different graphical presets at 1440p, using an RX 9070 XT, Ryzen 7 7800X3D, and 32 GB of DDR5 RAM.",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-10-23T09:46:41.715Z",  "citation": "The biggest gain in performance comes from dropping from Ultra to Balanced. The differences between the other presets aren't so great. All presets net well above 60 fps with a high-end PC, and most sit above 100 fps.",  "keywords": [    "Minimum preset",    "Basic preset",    "Balanced preset",    "Ultra preset",    "Extreme preset",    "Call of Duty: Modern Warfare 4",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Balanced preset – Call of Duty: Modern Warfare 4",      "value": 133,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "Basic preset – Call of Duty: Modern Warfare 4",      "value": 137,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "Extreme preset – Call of Duty: Modern Warfare 4",      "value": 97,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "Minimum preset – Call of Duty: Modern Warfare 4",      "value": 146,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "Ultra preset – Call of Duty: Modern Warfare 4",      "value": 107,      "unitText": "Avg fps"    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-10-23T09:46:41.715Z","state":{"data":[{"productName":"Balanced preset","attribute":"Call of Duty: Modern Warfare 4","value":133,"unit":"Avg fps","multiValues":[{"value":133,"unit":"Avg fps"},{"value":109,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"Basic preset","attribute":"Call of Duty: Modern Warfare 4","value":137,"unit":"Avg fps","multiValues":[{"value":137,"unit":"Avg fps"},{"value":114,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"Extreme preset","attribute":"Call of Duty: Modern Warfare 4","value":97,"unit":"Avg fps","multiValues":[{"value":97,"unit":"Avg fps"},{"value":75,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"Minimum preset","attribute":"Call of Duty: Modern Warfare 4","value":146,"unit":"Avg fps","multiValues":[{"value":146,"unit":"Avg fps"},{"value":119,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"Ultra preset","attribute":"Call of Duty: Modern Warfare 4","value":107,"unit":"Avg fps","multiValues":[{"value":107,"unit":"Avg fps"},{"value":85,"unit":"1% low fps"}],"color":"","site":"PC Gamer"}],"products":["Balanced preset","Basic preset","Extreme preset","Minimum preset","Ultra preset"],"attributes":["Call of Duty: Modern Warfare 4"],"selectedProducts":["Minimum preset","Basic preset","Balanced preset","Ultra preset","Extreme preset"],"selectedPrimaryProduct":null,"selectedAttributes":["Call of Duty: Modern Warfare 4"],"productColors":[{"productName":"Balanced preset","color":"#E33235"},{"productName":"Basic preset","color":"#FE9F58"},{"productName":"Extreme preset","color":"#1CA9C4"},{"productName":"Minimum preset","color":"#EB6F71"},{"productName":"Ultra preset","color":"#FFC08B"}],"initialProductColors":[{"productName":"Balanced preset","color":"#E33235"},{"productName":"Basic preset","color":"#FE9F58"},{"productName":"Extreme preset","color":"#1CA9C4"},{"productName":"Minimum preset","color":"#EB6F71"},{"productName":"Ultra preset","color":"#FFC08B"}],"attributeColors":[],"attributeGroups":[],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"PC Gamer","logoUrl":"https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png","sliderLogoShape":"square","embedBg":"#ededed","colors":{"primary":"#E33235","secondary":"#FE9F58","accent":"#1CA9C4","background":"#ededed","text":"#1F2937","productColors":["#E33235","#FE9F58","#1CA9C4","#EB6F71","#FFC08B","#66C5D7","#B5282A","#D07F46"]}},"textContent":{"title":"Preset performance comparison","subhead":"Comparing game performance at different graphical presets at 1440p, using an RX 9070 XT, Ryzen 7 7800X3D, and 32 GB of DDR5 RAM.","caption":"The biggest gain in performance comes from dropping from Ultra to Balanced. The differences between the other presets aren't so great. All presets net well above 60 fps with a high-end PC, and most sit above 100 fps.","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1792748801715-rowg0zt4v" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Preset performance comparison</h3><p class="fv-chart-subhead">Comparing game performance at different graphical presets at 1440p, using an RX 9070 XT, Ryzen 7 7800X3D, and 32 GB of DDR5 RAM.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1792748801715-rowg0zt4v-bar-Call of Duty: Modern Warfare 4" data-chart-type="Bar" data-title="Call of Duty: Modern Warfare 4" data-subhead="Comparing game performance at different graphical presets at 1440p, using an RX 9070 XT, Ryzen 7 7800X3D, and 32 GB of DDR5 RAM." data-caption="The biggest gain in performance comes from dropping from Ultra to Balanced. The differences between the other presets aren't so great. All presets net well above 60 fps with a high-end PC, and most sit above 100 fps." style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Call of Duty: Modern Warfare 4</h4><div class="fv-multi-value-legend"><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #E33235;"></div><span>Avg fps</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #FE9F58;"></div><span>1% low fps</span></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Minimum preset</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 97.33333333333334%; background-color: #E33235;" data-target-width="97.33333333333334" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">146</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 79.33333333333333%; background-color: #FE9F58;" data-target-width="79.33333333333333" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">119</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Basic preset</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 91.33333333333333%; background-color: #E33235;" data-target-width="91.33333333333333" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">137</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 76%; background-color: #FE9F58;" data-target-width="76" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">114</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Balanced preset</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 88.66666666666667%; background-color: #E33235;" data-target-width="88.66666666666667" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">133</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 72.66666666666667%; background-color: #FE9F58;" data-target-width="72.66666666666667" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">109</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Ultra preset</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 71.33333333333334%; background-color: #E33235;" data-target-width="71.33333333333334" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">107</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 56.666666666666664%; background-color: #FE9F58;" data-target-width="56.666666666666664" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">85</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Extreme preset</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 64.66666666666666%; background-color: #E33235;" data-target-width="64.66666666666666" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">97</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 50%; background-color: #FE9F58;" data-target-width="50" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">75</span></div></div></div></div></div><div class="fv-x-axis-wrapper"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>37.5</span><span>75</span><span>112.5</span><span>150</span></div></div></div><table class="sr-only"><caption>Call of Duty: Modern Warfare 4 Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Minimum preset</td><td>146 Avg fps, 119 1% low fps</td></tr><tr><td>Basic preset</td><td>137 Avg fps, 114 1% low fps</td></tr><tr><td>Balanced preset</td><td>133 Avg fps, 109 1% low fps</td></tr><tr><td>Ultra preset</td><td>107 Avg fps, 85 1% low fps</td></tr><tr><td>Extreme preset</td><td>97 Avg fps, 75 1% low fps</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: block;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;">The biggest gain in performance comes from dropping from Ultra to Balanced. The differences between the other presets aren't so great. All presets net well above 60 fps with a high-end PC, and most sit above 100 fps.</span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792748801715-rowg0zt4v', false); });      } else {        initialize('fv-chart-1792748801715-rowg0zt4v', false);      }    })();      </script></div><p>As you can see from the chart above, apart from enabling upscaling, by far the biggest performance jump comes from dropping from Ultra to Balanced. There's nowhere near as big a difference between Balanced/Basic/Minimum and Ultra/Extreme.</p><p>If you're keen on tinkering a little more, however, your first port of call should be the following four settings:</p><ul><li><strong>Detail quality</strong></li><li><strong>Shadow quality</strong></li><li><strong>Shadow filtering quality</strong></li><li><strong>Terrain quality</strong></li></ul><p>These settings are all found under <strong>Graphics > Quality > Advanced Quality Settings</strong>. The shadow settings obviously affect how shadows look, while the detail and terrain quality settings affect how the ground and small objects look. Increasing terrain quality makes things like ground surface textures appear more, well, textured, and detail quality makes small objects appear more—you guessed it—detailed.</p><p>Here's the difference between (1) normal shadow quality and high shadow filtering quality on the left, and (2) low shadow quality and normal shadow filtering quality on the right:</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792750939279-0vj30ag83 *, #fv-chart-1792750939279-0vj30ag83 *:before, #fv-chart-1792750939279-0vj30ag83 *:after, #fv-chart-1792750939279-0vj30ag83-slideshow *, #fv-chart-1792750939279-0vj30ag83-slideshow *:before, #fv-chart-1792750939279-0vj30ag83-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792750939279-0vj30ag83, #fv-chart-1792750939279-0vj30ag83-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792750939279-0vj30ag83 { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1792750939279-0vj30ag83 .fv-inner-wrapper { color: #1F2937 !important; background-color: #ededed !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792750939279-0vj30ag83 .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792750939279-0vj30ag83.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792750939279-0vj30ag83.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792750939279-0vj30ag83 .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792750939279-0vj30ag83-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1792750939279-0vj30ag83-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792750939279-0vj30ag83-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792750939279-0vj30ag83-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792750939279-0vj30ag83-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792750939279-0vj30ag83-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792750939279-0vj30ag83-slideshow .fv-nav-btn.disabled, #fv-chart-1792750939279-0vj30ag83-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792750939279-0vj30ag83-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792750939279-0vj30ag83-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792750939279-0vj30ag83-slideshow .fv-slideshow-select:focus { outline: 2px solid #E33235 !important; border-color: #E33235 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792750939279-0vj30ag83 .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792750939279-0vj30ag83 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792750939279-0vj30ag83 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792750939279-0vj30ag83 .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792750939279-0vj30ag83 .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792750939279-0vj30ag83 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83 .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792750939279-0vj30ag83 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792750939279-0vj30ag83 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792750939279-0vj30ag83 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-row, #fv-chart-1792750939279-0vj30ag83 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792750939279-0vj30ag83.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792750939279-0vj30ag83.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792750939279-0vj30ag83.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792750939279-0vj30ag83 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792750939279-0vj30ag83 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83 .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792750939279-0vj30ag83 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792750939279-0vj30ag83 .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792750939279-0vj30ag83 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792750939279-0vj30ag83.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792750939279-0vj30ag83.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792750939279-0vj30ag83.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792750939279-0vj30ag83 .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792750939279-0vj30ag83 .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1792750939279-0vj30ag83.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-expand-btn, #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-expand-btn:hover, #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-pie-container, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-row, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-stacked-product, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-grouped-bar-product, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-bar-row, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-stacked-product, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-label, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-grouped-product-title, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-bar-label, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-container, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-cluster, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-bar-container, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-x-axis-wrapper, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-x-axis-label-space, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-x-axis-chart-space, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-benchmark-title, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-dropdown-title, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-carousel-nav-btn, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-chart-title, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-chart-subhead, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-versus-header, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-versus-select-wrapper, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-versus-vs, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-versus-select-container, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-versus-select, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-commentary-inline, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-dials-grid, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-dial-title, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792750939279-0vj30ag83 .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-row, #fv-chart-1792750939279-0vj30ag83 .fv-stacked-product, #fv-chart-1792750939279-0vj30ag83 .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-label, #fv-chart-1792750939279-0vj30ag83 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-container, #fv-chart-1792750939279-0vj30ag83 .fv-bar-cluster { width: 100% !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792750939279-0vj30ag83 .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792750939279-0vj30ag83 .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792750939279-0vj30ag83 .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-label-space { display: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83 .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792750939279-0vj30ag83 .fv-stl-shop-all-logo, #fv-chart-1792750939279-0vj30ag83 .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dial-title { font-size: 16px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792750939279-0vj30ag83.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Comparing higher vs lower shadow settings",  "description": "On the left side, shadow quality is normal and shadow filtering quality is high. On the right, shadow quality is low and shadow filtering quality is normal.",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-10-23T10:22:19.279Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Image Comparison",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-10-23T10:22:19.279Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"PC Gamer","logoUrl":"https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png","sliderLogoShape":"square","embedBg":"#ededed","colors":{"primary":"#E33235","secondary":"#FE9F58","accent":"#1CA9C4","background":"#ededed","text":"#1F2937","productColors":["#E33235","#FE9F58","#1CA9C4","#EB6F71","#FFC08B","#66C5D7","#B5282A","#D07F46"]}},"textContent":{"title":"Comparing higher vs lower shadow settings","subhead":"On the left side, shadow quality is normal and shadow filtering quality is high. On the right, shadow quality is low and shadow filtering quality is normal.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/VFGHJKEKQtvSKV9Aazwrie.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/mojQ2UeT9Bg8R3vbR98nje.jpg","label1":"Normal quality | High filtering","label2":"Low quality | Normal filtering","showTitle":true,"showSubhead":true}},"slides":[]}</script><div id="fv-chart-1792750939279-0vj30ag83" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Comparing higher vs lower shadow settings</h3><p class="fv-chart-subhead">On the left side, shadow quality is normal and shadow filtering quality is high. On the right, shadow quality is low and shadow filtering quality is normal.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1792750939279-0vj30ag83-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="On the left side, shadow quality is normal and shadow filtering quality is high. On the right, shadow quality is low and shadow filtering quality is normal." data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/mojQ2UeT9Bg8R3vbR98nje.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/mojQ2UeT9Bg8R3vbR98nje.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/VFGHJKEKQtvSKV9Aazwrie.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/VFGHJKEKQtvSKV9Aazwrie.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle fv-image-compare-handle-square"><img src="https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Normal quality | High filtering</div><div class="fv-image-compare-label fv-image-compare-label-right">Low quality | Normal filtering</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792750939279-0vj30ag83', false); });      } else {        initialize('fv-chart-1792750939279-0vj30ag83', false);      }    })();      </script></div><p>And here's the difference between (1) high detail quality and high terrain quality on the left, and (2) normal detail quality and medium terrain quality on the right:</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792747557659-s12goipy9 *, #fv-chart-1792747557659-s12goipy9 *:before, #fv-chart-1792747557659-s12goipy9 *:after, #fv-chart-1792747557659-s12goipy9-slideshow *, #fv-chart-1792747557659-s12goipy9-slideshow *:before, #fv-chart-1792747557659-s12goipy9-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792747557659-s12goipy9, #fv-chart-1792747557659-s12goipy9-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792747557659-s12goipy9 { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1792747557659-s12goipy9 .fv-inner-wrapper { color: #1F2937 !important; background-color: #ededed !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792747557659-s12goipy9 .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792747557659-s12goipy9.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792747557659-s12goipy9.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792747557659-s12goipy9 .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792747557659-s12goipy9-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1792747557659-s12goipy9-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792747557659-s12goipy9-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792747557659-s12goipy9-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792747557659-s12goipy9-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792747557659-s12goipy9-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792747557659-s12goipy9-slideshow .fv-nav-btn.disabled, #fv-chart-1792747557659-s12goipy9-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792747557659-s12goipy9-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792747557659-s12goipy9-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792747557659-s12goipy9-slideshow .fv-slideshow-select:focus { outline: 2px solid #E33235 !important; border-color: #E33235 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792747557659-s12goipy9 .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792747557659-s12goipy9 .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792747557659-s12goipy9 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792747557659-s12goipy9 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792747557659-s12goipy9 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792747557659-s12goipy9 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792747557659-s12goipy9 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792747557659-s12goipy9 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792747557659-s12goipy9 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792747557659-s12goipy9 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792747557659-s12goipy9 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792747557659-s12goipy9 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792747557659-s12goipy9 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792747557659-s12goipy9 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792747557659-s12goipy9 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792747557659-s12goipy9 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792747557659-s12goipy9 .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792747557659-s12goipy9 .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792747557659-s12goipy9 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792747557659-s12goipy9 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792747557659-s12goipy9 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792747557659-s12goipy9 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9 .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792747557659-s12goipy9 .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792747557659-s12goipy9 .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792747557659-s12goipy9 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792747557659-s12goipy9 .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792747557659-s12goipy9 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792747557659-s12goipy9 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792747557659-s12goipy9 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792747557659-s12goipy9 .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792747557659-s12goipy9 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792747557659-s12goipy9 .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-row, #fv-chart-1792747557659-s12goipy9 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792747557659-s12goipy9.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792747557659-s12goipy9.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792747557659-s12goipy9.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792747557659-s12goipy9 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792747557659-s12goipy9 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9 .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792747557659-s12goipy9 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792747557659-s12goipy9 .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792747557659-s12goipy9 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792747557659-s12goipy9 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792747557659-s12goipy9 .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792747557659-s12goipy9 .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792747557659-s12goipy9 .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792747557659-s12goipy9 .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792747557659-s12goipy9 .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792747557659-s12goipy9 .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792747557659-s12goipy9.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792747557659-s12goipy9.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792747557659-s12goipy9.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792747557659-s12goipy9 .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792747557659-s12goipy9 .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1792747557659-s12goipy9.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-expand-btn, #fv-chart-1792747557659-s12goipy9 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-expand-btn:hover, #fv-chart-1792747557659-s12goipy9 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-pie-container, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-row, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-stacked-product, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-grouped-bar-product, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-bar-row, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-stacked-product, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-label, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-grouped-product-title, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-bar-label, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-container, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-cluster, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-bar-container, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-x-axis-wrapper, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-x-axis-label-space, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-x-axis-chart-space, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-benchmark-title, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-dropdown-title, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-carousel-nav-btn, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-chart-title, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-chart-subhead, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-versus-header, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-versus-select-wrapper, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-versus-vs, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-versus-select-container, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-versus-select, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-commentary-inline, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-dials-grid, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-dial-title, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792747557659-s12goipy9.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792747557659-s12goipy9 .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-row, #fv-chart-1792747557659-s12goipy9 .fv-stacked-product, #fv-chart-1792747557659-s12goipy9 .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-label, #fv-chart-1792747557659-s12goipy9 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-container, #fv-chart-1792747557659-s12goipy9 .fv-bar-cluster { width: 100% !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792747557659-s12goipy9 .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792747557659-s12goipy9 .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792747557659-s12goipy9 .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-label-space { display: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792747557659-s12goipy9 .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792747557659-s12goipy9 .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792747557659-s12goipy9 .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792747557659-s12goipy9 .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792747557659-s12goipy9 .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792747557659-s12goipy9 .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9 .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792747557659-s12goipy9 .fv-stl-shop-all-logo, #fv-chart-1792747557659-s12goipy9 .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9 .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-dial-title { font-size: 16px !important; } #fv-chart-1792747557659-s12goipy9 .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792747557659-s12goipy9.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Comparing higher vs lower detail/terrain settings",  "description": "High detail quality and terrain quality on the left, normal/medium detail and terrain quality on the right.",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-10-23T09:25:57.659Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Image Comparison",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-10-23T09:25:57.659Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"PC Gamer","logoUrl":"https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png","sliderLogoShape":"square","embedBg":"#ededed","colors":{"primary":"#E33235","secondary":"#FE9F58","accent":"#1CA9C4","background":"#ededed","text":"#1F2937","productColors":["#E33235","#FE9F58","#1CA9C4","#EB6F71","#FFC08B","#66C5D7","#B5282A","#D07F46"]}},"textContent":{"title":"Comparing higher vs lower detail/terrain settings","subhead":"High detail quality and terrain quality on the left, normal/medium detail and terrain quality on the right.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/K87Z9XfsywJDw2EBwveyme.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/6aM4bVx6k22jyvTpZSV2ne.jpg","label1":"Higher detail and terrain quality","label2":"Lower detail and terrain quality","showTitle":true,"showSubhead":true}},"slides":[]}</script><div id="fv-chart-1792747557659-s12goipy9" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Comparing higher vs lower detail/terrain settings</h3><p class="fv-chart-subhead">High detail quality and terrain quality on the left, normal/medium detail and terrain quality on the right.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1792747557659-s12goipy9-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="High detail quality and terrain quality on the left, normal/medium detail and terrain quality on the right." data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/6aM4bVx6k22jyvTpZSV2ne.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/6aM4bVx6k22jyvTpZSV2ne.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/K87Z9XfsywJDw2EBwveyme.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/K87Z9XfsywJDw2EBwveyme.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle fv-image-compare-handle-square"><img src="https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Higher detail and terrain quality</div><div class="fv-image-compare-label fv-image-compare-label-right">Lower detail and terrain quality</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792747557659-s12goipy9', false); });      } else {        initialize('fv-chart-1792747557659-s12goipy9', false);      }    })();      </script></div><p>As you can see, the game looks far from awful even with these settings lowered, though the difference isn't unnoticeable. If you're looking to gain some extra frames, though, I'd definitely consider trying out lowering these settings. As you can see from the chart below, you gain a big chunk of performance by dropping both the shadow and detail settings.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792749069069-besqqjcfr *, #fv-chart-1792749069069-besqqjcfr *:before, #fv-chart-1792749069069-besqqjcfr *:after, #fv-chart-1792749069069-besqqjcfr-slideshow *, #fv-chart-1792749069069-besqqjcfr-slideshow *:before, #fv-chart-1792749069069-besqqjcfr-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792749069069-besqqjcfr, #fv-chart-1792749069069-besqqjcfr-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792749069069-besqqjcfr { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1792749069069-besqqjcfr .fv-inner-wrapper { color: #1F2937 !important; background-color: #ededed !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792749069069-besqqjcfr .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792749069069-besqqjcfr.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792749069069-besqqjcfr.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792749069069-besqqjcfr .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792749069069-besqqjcfr-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1792749069069-besqqjcfr-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792749069069-besqqjcfr-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792749069069-besqqjcfr-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792749069069-besqqjcfr-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792749069069-besqqjcfr-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792749069069-besqqjcfr-slideshow .fv-nav-btn.disabled, #fv-chart-1792749069069-besqqjcfr-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792749069069-besqqjcfr-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792749069069-besqqjcfr-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792749069069-besqqjcfr-slideshow .fv-slideshow-select:focus { outline: 2px solid #E33235 !important; border-color: #E33235 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792749069069-besqqjcfr .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792749069069-besqqjcfr .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792749069069-besqqjcfr .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792749069069-besqqjcfr .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792749069069-besqqjcfr .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792749069069-besqqjcfr .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792749069069-besqqjcfr .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792749069069-besqqjcfr .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792749069069-besqqjcfr .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792749069069-besqqjcfr .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792749069069-besqqjcfr .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792749069069-besqqjcfr .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792749069069-besqqjcfr .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792749069069-besqqjcfr .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792749069069-besqqjcfr .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792749069069-besqqjcfr .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792749069069-besqqjcfr .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792749069069-besqqjcfr .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792749069069-besqqjcfr .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792749069069-besqqjcfr .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792749069069-besqqjcfr .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792749069069-besqqjcfr .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792749069069-besqqjcfr .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792749069069-besqqjcfr .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792749069069-besqqjcfr .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792749069069-besqqjcfr .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792749069069-besqqjcfr .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792749069069-besqqjcfr .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792749069069-besqqjcfr .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792749069069-besqqjcfr .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792749069069-besqqjcfr .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792749069069-besqqjcfr .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792749069069-besqqjcfr .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792749069069-besqqjcfr .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-row, #fv-chart-1792749069069-besqqjcfr .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792749069069-besqqjcfr.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792749069069-besqqjcfr.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792749069069-besqqjcfr.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792749069069-besqqjcfr .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792749069069-besqqjcfr .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792749069069-besqqjcfr .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792749069069-besqqjcfr .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792749069069-besqqjcfr .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792749069069-besqqjcfr .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792749069069-besqqjcfr .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792749069069-besqqjcfr .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792749069069-besqqjcfr .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792749069069-besqqjcfr .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792749069069-besqqjcfr .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792749069069-besqqjcfr .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792749069069-besqqjcfr .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792749069069-besqqjcfr .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792749069069-besqqjcfr.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792749069069-besqqjcfr.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792749069069-besqqjcfr.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792749069069-besqqjcfr .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792749069069-besqqjcfr .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-pie-container, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-row, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-stacked-product, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-grouped-bar-product, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-bar-row, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-stacked-product, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-label, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-grouped-product-title, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-bar-label, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-container, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-cluster, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-bar-container, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-x-axis-wrapper, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-x-axis-label-space, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-x-axis-chart-space, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-benchmark-title, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-dropdown-title, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-carousel-nav-btn, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-chart-title, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-chart-subhead, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-versus-header, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-versus-select-wrapper, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-versus-vs, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-versus-select-container, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-versus-select, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-commentary-inline, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-dials-grid, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-dial-title, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792749069069-besqqjcfr .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-row, #fv-chart-1792749069069-besqqjcfr .fv-stacked-product, #fv-chart-1792749069069-besqqjcfr .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-label, #fv-chart-1792749069069-besqqjcfr .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-container, #fv-chart-1792749069069-besqqjcfr .fv-bar-cluster { width: 100% !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792749069069-besqqjcfr .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792749069069-besqqjcfr .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792749069069-besqqjcfr .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-label-space { display: none !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792749069069-besqqjcfr .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792749069069-besqqjcfr .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792749069069-besqqjcfr .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792749069069-besqqjcfr .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792749069069-besqqjcfr .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792749069069-besqqjcfr .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792749069069-besqqjcfr .fv-stl-shop-all-logo, #fv-chart-1792749069069-besqqjcfr .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-dial-title { font-size: 16px !important; } #fv-chart-1792749069069-besqqjcfr .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792749069069-besqqjcfr.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Performance gain lowering four key settings",  "description": "This compares frame rate at the Ultra preset to frame rate with just the four settings listed above lowered down to what they are at the Balanced preset.",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-10-23T09:51:09.070Z",  "citation": "By lowering just these four settings, you get a sizeable increase in performance.",  "keywords": [    "Ultra preset",    "Four settings lowered",    "Call of Duty: Modern Warfare 4",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Four settings lowered – Call of Duty: Modern Warfare 4",      "value": 124,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "Ultra preset – Call of Duty: Modern Warfare 4",      "value": 107,      "unitText": "Avg fps"    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-10-23T09:51:09.070Z","state":{"data":[{"productName":"Four settings lowered","attribute":"Call of Duty: Modern Warfare 4","value":124,"unit":"Avg fps","multiValues":[{"value":124,"unit":"Avg fps"},{"value":101,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"Ultra preset","attribute":"Call of Duty: Modern Warfare 4","value":107,"unit":"Avg fps","multiValues":[{"value":107,"unit":"Avg fps"},{"value":85,"unit":"1% low fps"}],"color":"","site":"PC Gamer"}],"products":["Four settings lowered","Ultra preset"],"attributes":["Call of Duty: Modern Warfare 4"],"selectedProducts":["Ultra preset","Four settings lowered"],"selectedPrimaryProduct":null,"selectedAttributes":["Call of Duty: Modern Warfare 4"],"productColors":[{"productName":"Four settings lowered","color":"#E33235"},{"productName":"Ultra preset","color":"#FE9F58"}],"initialProductColors":[{"productName":"Four settings lowered","color":"#E33235"},{"productName":"Ultra preset","color":"#FE9F58"}],"attributeColors":[],"attributeGroups":[],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"PC Gamer","logoUrl":"https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png","sliderLogoShape":"square","embedBg":"#ededed","colors":{"primary":"#E33235","secondary":"#FE9F58","accent":"#1CA9C4","background":"#ededed","text":"#1F2937","productColors":["#E33235","#FE9F58","#1CA9C4","#EB6F71","#FFC08B","#66C5D7","#B5282A","#D07F46"]}},"textContent":{"title":"Performance gain lowering four key settings","subhead":"This compares frame rate at the Ultra preset to frame rate with just the four settings listed above lowered down to what they are at the Balanced preset.","caption":"By lowering just these four settings, you get a sizeable increase in performance.","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1792749069069-besqqjcfr" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Performance gain lowering four key settings</h3><p class="fv-chart-subhead">This compares frame rate at the Ultra preset to frame rate with just the four settings listed above lowered down to what they are at the Balanced preset.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1792749069069-besqqjcfr-bar-Call of Duty: Modern Warfare 4" data-chart-type="Bar" data-title="Call of Duty: Modern Warfare 4" data-subhead="This compares frame rate at the Ultra preset to frame rate with just the four settings listed above lowered down to what they are at the Balanced preset." data-caption="By lowering just these four settings, you get a sizeable increase in performance." style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Call of Duty: Modern Warfare 4</h4><div class="fv-multi-value-legend"><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #E33235;"></div><span>Avg fps</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #FE9F58;"></div><span>1% low fps</span></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Ultra preset</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 71.33333333333334%; background-color: #E33235;" data-target-width="71.33333333333334" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">107</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 56.666666666666664%; background-color: #FE9F58;" data-target-width="56.666666666666664" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">85</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Four settings lowered</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 82.66666666666667%; background-color: #E33235;" data-target-width="82.66666666666667" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">124</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 67.33333333333333%; background-color: #FE9F58;" data-target-width="67.33333333333333" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">101</span></div></div></div></div></div><div class="fv-x-axis-wrapper"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>37.5</span><span>75</span><span>112.5</span><span>150</span></div></div></div><table class="sr-only"><caption>Call of Duty: Modern Warfare 4 Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Ultra preset</td><td>107 Avg fps, 85 1% low fps</td></tr><tr><td>Four settings lowered</td><td>124 Avg fps, 101 1% low fps</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: block;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;">By lowering just these four settings, you get a sizeable increase in performance.</span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792749069069-besqqjcfr', false); });      } else {        initialize('fv-chart-1792749069069-besqqjcfr', false);      }    })();      </script></div><p>You might want to steer clear of detail quality if you don't want anything buggy going on. I found that dropping detail quality below high makes the occasional tree look blocky and unfinished even when at a moderate difference. You can see the difference in the image comparison below. For my part, I don't mind it too much because most trees and other details are completely fine. </p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792748156761-g6kvjaygs *, #fv-chart-1792748156761-g6kvjaygs *:before, #fv-chart-1792748156761-g6kvjaygs *:after, #fv-chart-1792748156761-g6kvjaygs-slideshow *, #fv-chart-1792748156761-g6kvjaygs-slideshow *:before, #fv-chart-1792748156761-g6kvjaygs-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792748156761-g6kvjaygs, #fv-chart-1792748156761-g6kvjaygs-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792748156761-g6kvjaygs { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1792748156761-g6kvjaygs .fv-inner-wrapper { color: #1F2937 !important; background-color: #ededed !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792748156761-g6kvjaygs .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792748156761-g6kvjaygs.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792748156761-g6kvjaygs .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-nav-btn.disabled, #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slideshow-select:focus { outline: 2px solid #E33235 !important; border-color: #E33235 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792748156761-g6kvjaygs .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792748156761-g6kvjaygs .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792748156761-g6kvjaygs .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792748156761-g6kvjaygs .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792748156761-g6kvjaygs .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792748156761-g6kvjaygs .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792748156761-g6kvjaygs .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-row, #fv-chart-1792748156761-g6kvjaygs .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792748156761-g6kvjaygs .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792748156761-g6kvjaygs .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792748156761-g6kvjaygs .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792748156761-g6kvjaygs .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792748156761-g6kvjaygs .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1792748156761-g6kvjaygs.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-expand-btn, #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-expand-btn:hover, #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-pie-container, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-stacked-product, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-grouped-bar-product, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-row, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-stacked-product, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-label, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-grouped-product-title, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-label, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-container, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-cluster, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-container, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-x-axis-wrapper, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-x-axis-label-space, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-x-axis-chart-space, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-benchmark-title, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-dropdown-title, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-carousel-nav-btn, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-chart-title, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-chart-subhead, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-header, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select-wrapper, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-vs, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select-container, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-dials-grid, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-dial-title, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792748156761-g6kvjaygs .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-row, #fv-chart-1792748156761-g6kvjaygs .fv-stacked-product, #fv-chart-1792748156761-g6kvjaygs .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-label, #fv-chart-1792748156761-g6kvjaygs .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-container, #fv-chart-1792748156761-g6kvjaygs .fv-bar-cluster { width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792748156761-g6kvjaygs .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-label-space { display: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stl-shop-all-logo, #fv-chart-1792748156761-g6kvjaygs .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792748156761-g6kvjaygs.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Comparing higher to lower detail quality",  "description": "High detail quality on the left, normal on the right. Notice the yellow/orange tree loses all detail in the right-hand image.",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-10-23T09:35:56.761Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Image Comparison",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-10-23T09:35:56.761Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"PC Gamer","logoUrl":"https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png","sliderLogoShape":"square","embedBg":"#ededed","colors":{"primary":"#E33235","secondary":"#FE9F58","accent":"#1CA9C4","background":"#ededed","text":"#1F2937","productColors":["#E33235","#FE9F58","#1CA9C4","#EB6F71","#FFC08B","#66C5D7","#B5282A","#D07F46"]}},"textContent":{"title":"Comparing higher to lower detail quality","subhead":"High detail quality on the left, normal on the right. Notice the yellow/orange tree loses all detail in the right-hand image.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/dgtm3mxTXQVJhTGBoH9uPM.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/xFCK2MB2Laec5Ca5WppqPM.jpg","label1":"High detail quality","label2":"Normal detail quality","showTitle":true,"showSubhead":true}},"slides":[]}</script><div id="fv-chart-1792748156761-g6kvjaygs" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Comparing higher to lower detail quality</h3><p class="fv-chart-subhead">High detail quality on the left, normal on the right. Notice the yellow/orange tree loses all detail in the right-hand image.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1792748156761-g6kvjaygs-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="High detail quality on the left, normal on the right. Notice the yellow/orange tree loses all detail in the right-hand image." data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/xFCK2MB2Laec5Ca5WppqPM.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/xFCK2MB2Laec5Ca5WppqPM.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/dgtm3mxTXQVJhTGBoH9uPM.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/dgtm3mxTXQVJhTGBoH9uPM.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle fv-image-compare-handle-square"><img src="https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">High detail quality</div><div class="fv-image-compare-label fv-image-compare-label-right">Normal detail quality</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792748156761-g6kvjaygs', false); });      } else {        initialize('fv-chart-1792748156761-g6kvjaygs', false);      }    })();      </script></div><p>All this being said, though, upscaling throws a spanner in the works. With upscaling enabled, I found the performance gain to be nowhere near as big when lowering these settings. Instead of the big jump you see above, it pushed me from about 150 fps to about 160–165 fps in DMZ mode using an AMD Radeon RX 9070 XT.</p><p>Now, as I said at the start, I am a bit of a frame-head—I love upping my frame rate for online shooters. So for my money, given the game looks far from bad with these settings lowered, for DMZ and multiplayer, I think I'd keep the four settings low enough by enabling the Balanced preset, then drop down to 1080p with my 400 Hz monitor, enable Quality upscaling, and get headshotting.</p><p>For the campaign, though, and presumably in general for most gamers who aren't massive frame-heads like me (yes, I'm trying to make the term stick), I'd say it's worth keeping the three or four settings above ramped up to what they are on the Ultra preset and instead just enabling Quality upscaling, if your rig can handle it. I'd prefer the nicer shadows avoiding the very slight and occasional loss of crispness that comes with upscaling.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/call-of-duty/ive-tested-every-graphics-setting-in-call-of-duty-modern-warfare-4-tweak-these-four-options-for-the-best-performance/</link>
                                                                            <description>
                            <![CDATA[ Upscaling can also help a bunch, of course. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">i6xpCFRmhnWgQsiE7TztAZ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/YCfD5BENn8KFH9od8t5TdT-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 10:29:20 +0000</pubDate>                                                                                                                                <updated>Fri, 23 Oct 2026 10:29:26 +0000</updated>
                                                                                                                                            <category><![CDATA[Call of Duty]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                    <category><![CDATA[FPS]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/YCfD5BENn8KFH9od8t5TdT-1920-80.jpg">
                                                            <media:credit><![CDATA[Activision]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A screenshot of COD: MW4, aiming down-range at a target.]]></media:description>                                                            <media:text><![CDATA[A screenshot of COD: MW4, aiming down-range at a target.]]></media:text>
                                <media:title type="plain"><![CDATA[A screenshot of COD: MW4, aiming down-range at a target.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/YCfD5BENn8KFH9od8t5TdT-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I'm not usually one for all these fancy graphics; give me more frames, at all costs. But when I booted up <a href="https://www.pcgamer.com/games/call-of-duty/call-of-duty-modern-warfare-4-review-in-progress-a-campaign-you-shouldnt-skip/" target="_blank">Call of Duty: Modern Warfare 4</a>, I have to admit, I was a little reluctant to sacrifice too much in the visual department. Because the game is, indeed, gorgeous despite being a little glitchy with texture pop-ins and flickering in DMZ mode. A more tailored approach was needed. So, I set about testing every single graphics setting in the game, one by one, to see which ones have the biggest impact, and I found there are four main settings to tweak.</p><p>First things first, though, if you just want to get up and going and you're using a mid-range PC, whack it on the Balanced preset, and you'll be fine. If you're using a high-end rig, then you should be fine setting it to the Ultra preset.</p><p><em>Note: All performance figures were calculated by doing the same 30-second run in-game, on Mission 4 of the campaign. I kept all movements and actions as similar as possible in each run I performed.</em></p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792748801715-rowg0zt4v *, #fv-chart-1792748801715-rowg0zt4v *:before, #fv-chart-1792748801715-rowg0zt4v *:after, #fv-chart-1792748801715-rowg0zt4v-slideshow *, #fv-chart-1792748801715-rowg0zt4v-slideshow *:before, #fv-chart-1792748801715-rowg0zt4v-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792748801715-rowg0zt4v, #fv-chart-1792748801715-rowg0zt4v-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792748801715-rowg0zt4v { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1792748801715-rowg0zt4v .fv-inner-wrapper { color: #1F2937 !important; background-color: #ededed !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792748801715-rowg0zt4v .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792748801715-rowg0zt4v.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792748801715-rowg0zt4v.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792748801715-rowg0zt4v .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792748801715-rowg0zt4v-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-nav-btn.disabled, #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792748801715-rowg0zt4v-slideshow .fv-slideshow-select:focus { outline: 2px solid #E33235 !important; border-color: #E33235 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792748801715-rowg0zt4v .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792748801715-rowg0zt4v .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792748801715-rowg0zt4v .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792748801715-rowg0zt4v .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792748801715-rowg0zt4v .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792748801715-rowg0zt4v .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792748801715-rowg0zt4v .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792748801715-rowg0zt4v .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792748801715-rowg0zt4v .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-row, #fv-chart-1792748801715-rowg0zt4v .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792748801715-rowg0zt4v.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748801715-rowg0zt4v.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792748801715-rowg0zt4v.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792748801715-rowg0zt4v .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792748801715-rowg0zt4v .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792748801715-rowg0zt4v .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792748801715-rowg0zt4v .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792748801715-rowg0zt4v .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792748801715-rowg0zt4v .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792748801715-rowg0zt4v.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792748801715-rowg0zt4v.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792748801715-rowg0zt4v.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792748801715-rowg0zt4v .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792748801715-rowg0zt4v .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-pie-container, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-row, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-stacked-product, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-grouped-bar-product, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-bar-row, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-stacked-product, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-label, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-grouped-product-title, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-bar-label, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-container, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-cluster, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-bar-container, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-x-axis-wrapper, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-x-axis-label-space, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-x-axis-chart-space, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-benchmark-title, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-dropdown-title, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-carousel-nav-btn, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-chart-title, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-chart-subhead, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-versus-header, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-versus-select-wrapper, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-versus-vs, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-versus-select-container, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-versus-select, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-bar-commentary-inline, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-dials-grid, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-dial-title, #fv-chart-1792748801715-rowg0zt4v.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792748801715-rowg0zt4v.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792748801715-rowg0zt4v .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-row, #fv-chart-1792748801715-rowg0zt4v .fv-stacked-product, #fv-chart-1792748801715-rowg0zt4v .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-label, #fv-chart-1792748801715-rowg0zt4v .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-container, #fv-chart-1792748801715-rowg0zt4v .fv-bar-cluster { width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792748801715-rowg0zt4v .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748801715-rowg0zt4v .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792748801715-rowg0zt4v .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-label-space { display: none !important; } #fv-chart-1792748801715-rowg0zt4v .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792748801715-rowg0zt4v .fv-stl-shop-all-logo, #fv-chart-1792748801715-rowg0zt4v .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792748801715-rowg0zt4v .fv-dial-title { font-size: 16px !important; } #fv-chart-1792748801715-rowg0zt4v .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792748801715-rowg0zt4v.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Preset performance comparison",  "description": "Comparing game performance at different graphical presets at 1440p, using an RX 9070 XT, Ryzen 7 7800X3D, and 32 GB of DDR5 RAM.",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-10-23T09:46:41.715Z",  "citation": "The biggest gain in performance comes from dropping from Ultra to Balanced. The differences between the other presets aren't so great. All presets net well above 60 fps with a high-end PC, and most sit above 100 fps.",  "keywords": [    "Minimum preset",    "Basic preset",    "Balanced preset",    "Ultra preset",    "Extreme preset",    "Call of Duty: Modern Warfare 4",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Balanced preset – Call of Duty: Modern Warfare 4",      "value": 133,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "Basic preset – Call of Duty: Modern Warfare 4",      "value": 137,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "Extreme preset – Call of Duty: Modern Warfare 4",      "value": 97,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "Minimum preset – Call of Duty: Modern Warfare 4",      "value": 146,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "Ultra preset – Call of Duty: Modern Warfare 4",      "value": 107,      "unitText": "Avg fps"    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-10-23T09:46:41.715Z","state":{"data":[{"productName":"Balanced preset","attribute":"Call of Duty: Modern Warfare 4","value":133,"unit":"Avg fps","multiValues":[{"value":133,"unit":"Avg fps"},{"value":109,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"Basic preset","attribute":"Call of Duty: Modern Warfare 4","value":137,"unit":"Avg fps","multiValues":[{"value":137,"unit":"Avg fps"},{"value":114,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"Extreme preset","attribute":"Call of Duty: Modern Warfare 4","value":97,"unit":"Avg fps","multiValues":[{"value":97,"unit":"Avg fps"},{"value":75,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"Minimum preset","attribute":"Call of Duty: Modern Warfare 4","value":146,"unit":"Avg fps","multiValues":[{"value":146,"unit":"Avg fps"},{"value":119,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"Ultra preset","attribute":"Call of Duty: Modern Warfare 4","value":107,"unit":"Avg fps","multiValues":[{"value":107,"unit":"Avg fps"},{"value":85,"unit":"1% low fps"}],"color":"","site":"PC Gamer"}],"products":["Balanced preset","Basic preset","Extreme preset","Minimum preset","Ultra preset"],"attributes":["Call of Duty: Modern Warfare 4"],"selectedProducts":["Minimum preset","Basic preset","Balanced preset","Ultra preset","Extreme preset"],"selectedPrimaryProduct":null,"selectedAttributes":["Call of Duty: Modern Warfare 4"],"productColors":[{"productName":"Balanced preset","color":"#E33235"},{"productName":"Basic preset","color":"#FE9F58"},{"productName":"Extreme preset","color":"#1CA9C4"},{"productName":"Minimum preset","color":"#EB6F71"},{"productName":"Ultra preset","color":"#FFC08B"}],"initialProductColors":[{"productName":"Balanced preset","color":"#E33235"},{"productName":"Basic preset","color":"#FE9F58"},{"productName":"Extreme preset","color":"#1CA9C4"},{"productName":"Minimum preset","color":"#EB6F71"},{"productName":"Ultra preset","color":"#FFC08B"}],"attributeColors":[],"attributeGroups":[],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"PC Gamer","logoUrl":"https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png","sliderLogoShape":"square","embedBg":"#ededed","colors":{"primary":"#E33235","secondary":"#FE9F58","accent":"#1CA9C4","background":"#ededed","text":"#1F2937","productColors":["#E33235","#FE9F58","#1CA9C4","#EB6F71","#FFC08B","#66C5D7","#B5282A","#D07F46"]}},"textContent":{"title":"Preset performance comparison","subhead":"Comparing game performance at different graphical presets at 1440p, using an RX 9070 XT, Ryzen 7 7800X3D, and 32 GB of DDR5 RAM.","caption":"The biggest gain in performance comes from dropping from Ultra to Balanced. The differences between the other presets aren't so great. All presets net well above 60 fps with a high-end PC, and most sit above 100 fps.","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1792748801715-rowg0zt4v" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Preset performance comparison</h3><p class="fv-chart-subhead">Comparing game performance at different graphical presets at 1440p, using an RX 9070 XT, Ryzen 7 7800X3D, and 32 GB of DDR5 RAM.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1792748801715-rowg0zt4v-bar-Call of Duty: Modern Warfare 4" data-chart-type="Bar" data-title="Call of Duty: Modern Warfare 4" data-subhead="Comparing game performance at different graphical presets at 1440p, using an RX 9070 XT, Ryzen 7 7800X3D, and 32 GB of DDR5 RAM." data-caption="The biggest gain in performance comes from dropping from Ultra to Balanced. The differences between the other presets aren't so great. All presets net well above 60 fps with a high-end PC, and most sit above 100 fps." style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Call of Duty: Modern Warfare 4</h4><div class="fv-multi-value-legend"><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #E33235;"></div><span>Avg fps</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #FE9F58;"></div><span>1% low fps</span></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Minimum preset</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 97.33333333333334%; background-color: #E33235;" data-target-width="97.33333333333334" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">146</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 79.33333333333333%; background-color: #FE9F58;" data-target-width="79.33333333333333" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">119</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Basic preset</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 91.33333333333333%; background-color: #E33235;" data-target-width="91.33333333333333" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">137</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 76%; background-color: #FE9F58;" data-target-width="76" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">114</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Balanced preset</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 88.66666666666667%; background-color: #E33235;" data-target-width="88.66666666666667" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">133</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 72.66666666666667%; background-color: #FE9F58;" data-target-width="72.66666666666667" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">109</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Ultra preset</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 71.33333333333334%; background-color: #E33235;" data-target-width="71.33333333333334" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">107</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 56.666666666666664%; background-color: #FE9F58;" data-target-width="56.666666666666664" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">85</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Extreme preset</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 64.66666666666666%; background-color: #E33235;" data-target-width="64.66666666666666" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">97</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 50%; background-color: #FE9F58;" data-target-width="50" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">75</span></div></div></div></div></div><div class="fv-x-axis-wrapper"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>37.5</span><span>75</span><span>112.5</span><span>150</span></div></div></div><table class="sr-only"><caption>Call of Duty: Modern Warfare 4 Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Minimum preset</td><td>146 Avg fps, 119 1% low fps</td></tr><tr><td>Basic preset</td><td>137 Avg fps, 114 1% low fps</td></tr><tr><td>Balanced preset</td><td>133 Avg fps, 109 1% low fps</td></tr><tr><td>Ultra preset</td><td>107 Avg fps, 85 1% low fps</td></tr><tr><td>Extreme preset</td><td>97 Avg fps, 75 1% low fps</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: block;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;">The biggest gain in performance comes from dropping from Ultra to Balanced. The differences between the other presets aren't so great. All presets net well above 60 fps with a high-end PC, and most sit above 100 fps.</span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792748801715-rowg0zt4v', false); });      } else {        initialize('fv-chart-1792748801715-rowg0zt4v', false);      }    })();      </script></div><p>As you can see from the chart above, apart from enabling upscaling, by far the biggest performance jump comes from dropping from Ultra to Balanced. There's nowhere near as big a difference between Balanced/Basic/Minimum and Ultra/Extreme.</p><p>If you're keen on tinkering a little more, however, your first port of call should be the following four settings:</p><ul><li><strong>Detail quality</strong></li><li><strong>Shadow quality</strong></li><li><strong>Shadow filtering quality</strong></li><li><strong>Terrain quality</strong></li></ul><p>These settings are all found under <strong>Graphics > Quality > Advanced Quality Settings</strong>. The shadow settings obviously affect how shadows look, while the detail and terrain quality settings affect how the ground and small objects look. Increasing terrain quality makes things like ground surface textures appear more, well, textured, and detail quality makes small objects appear more—you guessed it—detailed.</p><p>Here's the difference between (1) normal shadow quality and high shadow filtering quality on the left, and (2) low shadow quality and normal shadow filtering quality on the right:</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792750939279-0vj30ag83 *, #fv-chart-1792750939279-0vj30ag83 *:before, #fv-chart-1792750939279-0vj30ag83 *:after, #fv-chart-1792750939279-0vj30ag83-slideshow *, #fv-chart-1792750939279-0vj30ag83-slideshow *:before, #fv-chart-1792750939279-0vj30ag83-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792750939279-0vj30ag83, #fv-chart-1792750939279-0vj30ag83-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792750939279-0vj30ag83 { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1792750939279-0vj30ag83 .fv-inner-wrapper { color: #1F2937 !important; background-color: #ededed !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792750939279-0vj30ag83 .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792750939279-0vj30ag83.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792750939279-0vj30ag83.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792750939279-0vj30ag83 .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792750939279-0vj30ag83-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1792750939279-0vj30ag83-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792750939279-0vj30ag83-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792750939279-0vj30ag83-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792750939279-0vj30ag83-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792750939279-0vj30ag83-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792750939279-0vj30ag83-slideshow .fv-nav-btn.disabled, #fv-chart-1792750939279-0vj30ag83-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792750939279-0vj30ag83-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792750939279-0vj30ag83-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792750939279-0vj30ag83-slideshow .fv-slideshow-select:focus { outline: 2px solid #E33235 !important; border-color: #E33235 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792750939279-0vj30ag83 .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792750939279-0vj30ag83 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792750939279-0vj30ag83 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792750939279-0vj30ag83 .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792750939279-0vj30ag83 .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792750939279-0vj30ag83 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83 .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792750939279-0vj30ag83 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792750939279-0vj30ag83 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792750939279-0vj30ag83 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-row, #fv-chart-1792750939279-0vj30ag83 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792750939279-0vj30ag83.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792750939279-0vj30ag83.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792750939279-0vj30ag83.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792750939279-0vj30ag83 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792750939279-0vj30ag83 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83 .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792750939279-0vj30ag83 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792750939279-0vj30ag83 .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792750939279-0vj30ag83 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792750939279-0vj30ag83.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792750939279-0vj30ag83.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792750939279-0vj30ag83.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792750939279-0vj30ag83 .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792750939279-0vj30ag83 .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1792750939279-0vj30ag83.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-expand-btn, #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-expand-btn:hover, #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1792750939279-0vj30ag83 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-pie-container, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-row, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-stacked-product, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-grouped-bar-product, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-bar-row, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-stacked-product, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-label, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-grouped-product-title, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-bar-label, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-container, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-cluster, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-bar-container, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-x-axis-wrapper, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-x-axis-label-space, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-x-axis-chart-space, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-benchmark-title, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-dropdown-title, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-carousel-nav-btn, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-chart-title, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-chart-subhead, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-versus-header, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-versus-select-wrapper, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-versus-vs, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-versus-select-container, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-versus-select, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-bar-commentary-inline, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-dials-grid, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-dial-title, #fv-chart-1792750939279-0vj30ag83.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792750939279-0vj30ag83.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792750939279-0vj30ag83 .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-row, #fv-chart-1792750939279-0vj30ag83 .fv-stacked-product, #fv-chart-1792750939279-0vj30ag83 .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-label, #fv-chart-1792750939279-0vj30ag83 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-container, #fv-chart-1792750939279-0vj30ag83 .fv-bar-cluster { width: 100% !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792750939279-0vj30ag83 .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792750939279-0vj30ag83 .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792750939279-0vj30ag83 .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-label-space { display: none !important; } #fv-chart-1792750939279-0vj30ag83 .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83 .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83 .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792750939279-0vj30ag83 .fv-stl-shop-all-logo, #fv-chart-1792750939279-0vj30ag83 .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792750939279-0vj30ag83 .fv-dial-title { font-size: 16px !important; } #fv-chart-1792750939279-0vj30ag83 .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792750939279-0vj30ag83.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Comparing higher vs lower shadow settings",  "description": "On the left side, shadow quality is normal and shadow filtering quality is high. On the right, shadow quality is low and shadow filtering quality is normal.",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-10-23T10:22:19.279Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Image Comparison",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-10-23T10:22:19.279Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"PC Gamer","logoUrl":"https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png","sliderLogoShape":"square","embedBg":"#ededed","colors":{"primary":"#E33235","secondary":"#FE9F58","accent":"#1CA9C4","background":"#ededed","text":"#1F2937","productColors":["#E33235","#FE9F58","#1CA9C4","#EB6F71","#FFC08B","#66C5D7","#B5282A","#D07F46"]}},"textContent":{"title":"Comparing higher vs lower shadow settings","subhead":"On the left side, shadow quality is normal and shadow filtering quality is high. On the right, shadow quality is low and shadow filtering quality is normal.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/VFGHJKEKQtvSKV9Aazwrie.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/mojQ2UeT9Bg8R3vbR98nje.jpg","label1":"Normal quality | High filtering","label2":"Low quality | Normal filtering","showTitle":true,"showSubhead":true}},"slides":[]}</script><div id="fv-chart-1792750939279-0vj30ag83" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Comparing higher vs lower shadow settings</h3><p class="fv-chart-subhead">On the left side, shadow quality is normal and shadow filtering quality is high. On the right, shadow quality is low and shadow filtering quality is normal.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1792750939279-0vj30ag83-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="On the left side, shadow quality is normal and shadow filtering quality is high. On the right, shadow quality is low and shadow filtering quality is normal." data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/mojQ2UeT9Bg8R3vbR98nje.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/mojQ2UeT9Bg8R3vbR98nje.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/VFGHJKEKQtvSKV9Aazwrie.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/VFGHJKEKQtvSKV9Aazwrie.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle fv-image-compare-handle-square"><img src="https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Normal quality | High filtering</div><div class="fv-image-compare-label fv-image-compare-label-right">Low quality | Normal filtering</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792750939279-0vj30ag83', false); });      } else {        initialize('fv-chart-1792750939279-0vj30ag83', false);      }    })();      </script></div><p>And here's the difference between (1) high detail quality and high terrain quality on the left, and (2) normal detail quality and medium terrain quality on the right:</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792747557659-s12goipy9 *, #fv-chart-1792747557659-s12goipy9 *:before, #fv-chart-1792747557659-s12goipy9 *:after, #fv-chart-1792747557659-s12goipy9-slideshow *, #fv-chart-1792747557659-s12goipy9-slideshow *:before, #fv-chart-1792747557659-s12goipy9-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792747557659-s12goipy9, #fv-chart-1792747557659-s12goipy9-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792747557659-s12goipy9 { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1792747557659-s12goipy9 .fv-inner-wrapper { color: #1F2937 !important; background-color: #ededed !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792747557659-s12goipy9 .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792747557659-s12goipy9.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792747557659-s12goipy9.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792747557659-s12goipy9 .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792747557659-s12goipy9-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1792747557659-s12goipy9-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792747557659-s12goipy9-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792747557659-s12goipy9-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792747557659-s12goipy9-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792747557659-s12goipy9-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792747557659-s12goipy9-slideshow .fv-nav-btn.disabled, #fv-chart-1792747557659-s12goipy9-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792747557659-s12goipy9-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792747557659-s12goipy9-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792747557659-s12goipy9-slideshow .fv-slideshow-select:focus { outline: 2px solid #E33235 !important; border-color: #E33235 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792747557659-s12goipy9 .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792747557659-s12goipy9 .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792747557659-s12goipy9 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792747557659-s12goipy9 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792747557659-s12goipy9 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792747557659-s12goipy9 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792747557659-s12goipy9 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792747557659-s12goipy9 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792747557659-s12goipy9 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792747557659-s12goipy9 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792747557659-s12goipy9 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792747557659-s12goipy9 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792747557659-s12goipy9 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792747557659-s12goipy9 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792747557659-s12goipy9 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792747557659-s12goipy9 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792747557659-s12goipy9 .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792747557659-s12goipy9 .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792747557659-s12goipy9 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792747557659-s12goipy9 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792747557659-s12goipy9 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792747557659-s12goipy9 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9 .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792747557659-s12goipy9 .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792747557659-s12goipy9 .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792747557659-s12goipy9 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792747557659-s12goipy9 .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792747557659-s12goipy9 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792747557659-s12goipy9 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792747557659-s12goipy9 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792747557659-s12goipy9 .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792747557659-s12goipy9 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792747557659-s12goipy9 .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-row, #fv-chart-1792747557659-s12goipy9 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792747557659-s12goipy9.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792747557659-s12goipy9.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792747557659-s12goipy9.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792747557659-s12goipy9 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792747557659-s12goipy9 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9 .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792747557659-s12goipy9 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792747557659-s12goipy9 .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792747557659-s12goipy9 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792747557659-s12goipy9 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792747557659-s12goipy9 .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792747557659-s12goipy9 .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792747557659-s12goipy9 .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792747557659-s12goipy9 .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792747557659-s12goipy9 .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792747557659-s12goipy9 .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792747557659-s12goipy9.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792747557659-s12goipy9.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792747557659-s12goipy9.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792747557659-s12goipy9 .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792747557659-s12goipy9 .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1792747557659-s12goipy9.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-expand-btn, #fv-chart-1792747557659-s12goipy9 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-expand-btn:hover, #fv-chart-1792747557659-s12goipy9 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1792747557659-s12goipy9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-pie-container, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-row, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-stacked-product, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-grouped-bar-product, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-bar-row, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-stacked-product, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-label, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-grouped-product-title, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-bar-label, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-container, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-cluster, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-bar-container, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-x-axis-wrapper, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-x-axis-label-space, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-x-axis-chart-space, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-benchmark-title, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-dropdown-title, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-carousel-nav-btn, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-chart-title, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-chart-subhead, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-versus-header, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-versus-select-wrapper, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-versus-vs, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-versus-select-container, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-versus-select, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792747557659-s12goipy9.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-bar-commentary-inline, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-dials-grid, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-dial-title, #fv-chart-1792747557659-s12goipy9.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792747557659-s12goipy9.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792747557659-s12goipy9.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792747557659-s12goipy9 .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-row, #fv-chart-1792747557659-s12goipy9 .fv-stacked-product, #fv-chart-1792747557659-s12goipy9 .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-label, #fv-chart-1792747557659-s12goipy9 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-container, #fv-chart-1792747557659-s12goipy9 .fv-bar-cluster { width: 100% !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792747557659-s12goipy9 .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792747557659-s12goipy9 .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792747557659-s12goipy9 .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-label-space { display: none !important; } #fv-chart-1792747557659-s12goipy9 .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792747557659-s12goipy9 .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792747557659-s12goipy9 .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792747557659-s12goipy9 .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792747557659-s12goipy9 .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792747557659-s12goipy9 .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792747557659-s12goipy9 .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9 .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9 .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792747557659-s12goipy9 .fv-stl-shop-all-logo, #fv-chart-1792747557659-s12goipy9 .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792747557659-s12goipy9 .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792747557659-s12goipy9 .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792747557659-s12goipy9 .fv-dial-title { font-size: 16px !important; } #fv-chart-1792747557659-s12goipy9 .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792747557659-s12goipy9.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Comparing higher vs lower detail/terrain settings",  "description": "High detail quality and terrain quality on the left, normal/medium detail and terrain quality on the right.",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-10-23T09:25:57.659Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Image Comparison",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-10-23T09:25:57.659Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"PC Gamer","logoUrl":"https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png","sliderLogoShape":"square","embedBg":"#ededed","colors":{"primary":"#E33235","secondary":"#FE9F58","accent":"#1CA9C4","background":"#ededed","text":"#1F2937","productColors":["#E33235","#FE9F58","#1CA9C4","#EB6F71","#FFC08B","#66C5D7","#B5282A","#D07F46"]}},"textContent":{"title":"Comparing higher vs lower detail/terrain settings","subhead":"High detail quality and terrain quality on the left, normal/medium detail and terrain quality on the right.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/K87Z9XfsywJDw2EBwveyme.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/6aM4bVx6k22jyvTpZSV2ne.jpg","label1":"Higher detail and terrain quality","label2":"Lower detail and terrain quality","showTitle":true,"showSubhead":true}},"slides":[]}</script><div id="fv-chart-1792747557659-s12goipy9" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Comparing higher vs lower detail/terrain settings</h3><p class="fv-chart-subhead">High detail quality and terrain quality on the left, normal/medium detail and terrain quality on the right.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1792747557659-s12goipy9-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="High detail quality and terrain quality on the left, normal/medium detail and terrain quality on the right." data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/6aM4bVx6k22jyvTpZSV2ne.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/6aM4bVx6k22jyvTpZSV2ne.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/K87Z9XfsywJDw2EBwveyme.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/K87Z9XfsywJDw2EBwveyme.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle fv-image-compare-handle-square"><img src="https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Higher detail and terrain quality</div><div class="fv-image-compare-label fv-image-compare-label-right">Lower detail and terrain quality</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792747557659-s12goipy9', false); });      } else {        initialize('fv-chart-1792747557659-s12goipy9', false);      }    })();      </script></div><p>As you can see, the game looks far from awful even with these settings lowered, though the difference isn't unnoticeable. If you're looking to gain some extra frames, though, I'd definitely consider trying out lowering these settings. As you can see from the chart below, you gain a big chunk of performance by dropping both the shadow and detail settings.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792749069069-besqqjcfr *, #fv-chart-1792749069069-besqqjcfr *:before, #fv-chart-1792749069069-besqqjcfr *:after, #fv-chart-1792749069069-besqqjcfr-slideshow *, #fv-chart-1792749069069-besqqjcfr-slideshow *:before, #fv-chart-1792749069069-besqqjcfr-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792749069069-besqqjcfr, #fv-chart-1792749069069-besqqjcfr-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792749069069-besqqjcfr { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1792749069069-besqqjcfr .fv-inner-wrapper { color: #1F2937 !important; background-color: #ededed !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792749069069-besqqjcfr .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792749069069-besqqjcfr.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792749069069-besqqjcfr.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792749069069-besqqjcfr .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792749069069-besqqjcfr-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1792749069069-besqqjcfr-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792749069069-besqqjcfr-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792749069069-besqqjcfr-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792749069069-besqqjcfr-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792749069069-besqqjcfr-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792749069069-besqqjcfr-slideshow .fv-nav-btn.disabled, #fv-chart-1792749069069-besqqjcfr-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792749069069-besqqjcfr-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792749069069-besqqjcfr-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792749069069-besqqjcfr-slideshow .fv-slideshow-select:focus { outline: 2px solid #E33235 !important; border-color: #E33235 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792749069069-besqqjcfr .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792749069069-besqqjcfr .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792749069069-besqqjcfr .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792749069069-besqqjcfr .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792749069069-besqqjcfr .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792749069069-besqqjcfr .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792749069069-besqqjcfr .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792749069069-besqqjcfr .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792749069069-besqqjcfr .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792749069069-besqqjcfr .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792749069069-besqqjcfr .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792749069069-besqqjcfr .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792749069069-besqqjcfr .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792749069069-besqqjcfr .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792749069069-besqqjcfr .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792749069069-besqqjcfr .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792749069069-besqqjcfr .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792749069069-besqqjcfr .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792749069069-besqqjcfr .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792749069069-besqqjcfr .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792749069069-besqqjcfr .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792749069069-besqqjcfr .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792749069069-besqqjcfr .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792749069069-besqqjcfr .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792749069069-besqqjcfr .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792749069069-besqqjcfr .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792749069069-besqqjcfr .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792749069069-besqqjcfr .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792749069069-besqqjcfr .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792749069069-besqqjcfr .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792749069069-besqqjcfr .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792749069069-besqqjcfr .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792749069069-besqqjcfr .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792749069069-besqqjcfr .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-row, #fv-chart-1792749069069-besqqjcfr .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792749069069-besqqjcfr.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792749069069-besqqjcfr.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792749069069-besqqjcfr.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792749069069-besqqjcfr .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792749069069-besqqjcfr .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792749069069-besqqjcfr .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792749069069-besqqjcfr .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792749069069-besqqjcfr .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792749069069-besqqjcfr .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792749069069-besqqjcfr .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792749069069-besqqjcfr .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792749069069-besqqjcfr .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792749069069-besqqjcfr .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792749069069-besqqjcfr .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792749069069-besqqjcfr .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792749069069-besqqjcfr .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792749069069-besqqjcfr .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792749069069-besqqjcfr.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792749069069-besqqjcfr.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792749069069-besqqjcfr.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792749069069-besqqjcfr .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792749069069-besqqjcfr .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-pie-container, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-row, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-stacked-product, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-grouped-bar-product, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-bar-row, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-stacked-product, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-label, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-grouped-product-title, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-bar-label, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-container, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-cluster, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-bar-container, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-x-axis-wrapper, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-x-axis-label-space, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-x-axis-chart-space, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-benchmark-title, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-dropdown-title, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-carousel-nav-btn, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-chart-title, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-chart-subhead, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-versus-header, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-versus-select-wrapper, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-versus-vs, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-versus-select-container, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-versus-select, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-bar-commentary-inline, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-dials-grid, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-dial-title, #fv-chart-1792749069069-besqqjcfr.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792749069069-besqqjcfr.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792749069069-besqqjcfr .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-row, #fv-chart-1792749069069-besqqjcfr .fv-stacked-product, #fv-chart-1792749069069-besqqjcfr .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-label, #fv-chart-1792749069069-besqqjcfr .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-container, #fv-chart-1792749069069-besqqjcfr .fv-bar-cluster { width: 100% !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792749069069-besqqjcfr .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792749069069-besqqjcfr .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792749069069-besqqjcfr .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-label-space { display: none !important; } #fv-chart-1792749069069-besqqjcfr .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792749069069-besqqjcfr .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792749069069-besqqjcfr .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792749069069-besqqjcfr .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792749069069-besqqjcfr .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792749069069-besqqjcfr .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792749069069-besqqjcfr .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792749069069-besqqjcfr .fv-stl-shop-all-logo, #fv-chart-1792749069069-besqqjcfr .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792749069069-besqqjcfr .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792749069069-besqqjcfr .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792749069069-besqqjcfr .fv-dial-title { font-size: 16px !important; } #fv-chart-1792749069069-besqqjcfr .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792749069069-besqqjcfr.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Performance gain lowering four key settings",  "description": "This compares frame rate at the Ultra preset to frame rate with just the four settings listed above lowered down to what they are at the Balanced preset.",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-10-23T09:51:09.070Z",  "citation": "By lowering just these four settings, you get a sizeable increase in performance.",  "keywords": [    "Ultra preset",    "Four settings lowered",    "Call of Duty: Modern Warfare 4",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Four settings lowered – Call of Duty: Modern Warfare 4",      "value": 124,      "unitText": "Avg fps"    },    {      "@type": "PropertyValue",      "name": "Ultra preset – Call of Duty: Modern Warfare 4",      "value": 107,      "unitText": "Avg fps"    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-10-23T09:51:09.070Z","state":{"data":[{"productName":"Four settings lowered","attribute":"Call of Duty: Modern Warfare 4","value":124,"unit":"Avg fps","multiValues":[{"value":124,"unit":"Avg fps"},{"value":101,"unit":"1% low fps"}],"color":"","site":"PC Gamer"},{"productName":"Ultra preset","attribute":"Call of Duty: Modern Warfare 4","value":107,"unit":"Avg fps","multiValues":[{"value":107,"unit":"Avg fps"},{"value":85,"unit":"1% low fps"}],"color":"","site":"PC Gamer"}],"products":["Four settings lowered","Ultra preset"],"attributes":["Call of Duty: Modern Warfare 4"],"selectedProducts":["Ultra preset","Four settings lowered"],"selectedPrimaryProduct":null,"selectedAttributes":["Call of Duty: Modern Warfare 4"],"productColors":[{"productName":"Four settings lowered","color":"#E33235"},{"productName":"Ultra preset","color":"#FE9F58"}],"initialProductColors":[{"productName":"Four settings lowered","color":"#E33235"},{"productName":"Ultra preset","color":"#FE9F58"}],"attributeColors":[],"attributeGroups":[],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"PC Gamer","logoUrl":"https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png","sliderLogoShape":"square","embedBg":"#ededed","colors":{"primary":"#E33235","secondary":"#FE9F58","accent":"#1CA9C4","background":"#ededed","text":"#1F2937","productColors":["#E33235","#FE9F58","#1CA9C4","#EB6F71","#FFC08B","#66C5D7","#B5282A","#D07F46"]}},"textContent":{"title":"Performance gain lowering four key settings","subhead":"This compares frame rate at the Ultra preset to frame rate with just the four settings listed above lowered down to what they are at the Balanced preset.","caption":"By lowering just these four settings, you get a sizeable increase in performance.","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1792749069069-besqqjcfr" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Performance gain lowering four key settings</h3><p class="fv-chart-subhead">This compares frame rate at the Ultra preset to frame rate with just the four settings listed above lowered down to what they are at the Balanced preset.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1792749069069-besqqjcfr-bar-Call of Duty: Modern Warfare 4" data-chart-type="Bar" data-title="Call of Duty: Modern Warfare 4" data-subhead="This compares frame rate at the Ultra preset to frame rate with just the four settings listed above lowered down to what they are at the Balanced preset." data-caption="By lowering just these four settings, you get a sizeable increase in performance." style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Call of Duty: Modern Warfare 4</h4><div class="fv-multi-value-legend"><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #E33235;"></div><span>Avg fps</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #FE9F58;"></div><span>1% low fps</span></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Ultra preset</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 71.33333333333334%; background-color: #E33235;" data-target-width="71.33333333333334" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">107</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 56.666666666666664%; background-color: #FE9F58;" data-target-width="56.666666666666664" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">85</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Four settings lowered</div><div class="fv-bar-container fv-multi-bar-container"><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 82.66666666666667%; background-color: #E33235;" data-target-width="82.66666666666667" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">124</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 67.33333333333333%; background-color: #FE9F58;" data-target-width="67.33333333333333" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">101</span></div></div></div></div></div><div class="fv-x-axis-wrapper"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>37.5</span><span>75</span><span>112.5</span><span>150</span></div></div></div><table class="sr-only"><caption>Call of Duty: Modern Warfare 4 Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Ultra preset</td><td>107 Avg fps, 85 1% low fps</td></tr><tr><td>Four settings lowered</td><td>124 Avg fps, 101 1% low fps</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: block;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;">By lowering just these four settings, you get a sizeable increase in performance.</span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792749069069-besqqjcfr', false); });      } else {        initialize('fv-chart-1792749069069-besqqjcfr', false);      }    })();      </script></div><p>You might want to steer clear of detail quality if you don't want anything buggy going on. I found that dropping detail quality below high makes the occasional tree look blocky and unfinished even when at a moderate difference. You can see the difference in the image comparison below. For my part, I don't mind it too much because most trees and other details are completely fine. </p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792748156761-g6kvjaygs *, #fv-chart-1792748156761-g6kvjaygs *:before, #fv-chart-1792748156761-g6kvjaygs *:after, #fv-chart-1792748156761-g6kvjaygs-slideshow *, #fv-chart-1792748156761-g6kvjaygs-slideshow *:before, #fv-chart-1792748156761-g6kvjaygs-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792748156761-g6kvjaygs, #fv-chart-1792748156761-g6kvjaygs-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792748156761-g6kvjaygs { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1792748156761-g6kvjaygs .fv-inner-wrapper { color: #1F2937 !important; background-color: #ededed !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792748156761-g6kvjaygs .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792748156761-g6kvjaygs.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792748156761-g6kvjaygs .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-nav-btn.disabled, #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792748156761-g6kvjaygs-slideshow .fv-slideshow-select:focus { outline: 2px solid #E33235 !important; border-color: #E33235 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792748156761-g6kvjaygs .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792748156761-g6kvjaygs .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792748156761-g6kvjaygs .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792748156761-g6kvjaygs .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792748156761-g6kvjaygs .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792748156761-g6kvjaygs .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792748156761-g6kvjaygs .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-row, #fv-chart-1792748156761-g6kvjaygs .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792748156761-g6kvjaygs .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792748156761-g6kvjaygs .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792748156761-g6kvjaygs .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792748156761-g6kvjaygs.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792748156761-g6kvjaygs .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792748156761-g6kvjaygs .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1792748156761-g6kvjaygs.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-expand-btn, #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-expand-btn:hover, #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1792748156761-g6kvjaygs .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-pie-container, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-stacked-product, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-grouped-bar-product, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-row, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-stacked-product, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-label, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-grouped-product-title, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-label, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-container, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-cluster, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-container, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-x-axis-wrapper, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-x-axis-label-space, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-x-axis-chart-space, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-benchmark-title, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-dropdown-title, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-carousel-nav-btn, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-chart-title, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-chart-subhead, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-header, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select-wrapper, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-vs, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select-container, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-versus-select, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-dials-grid, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-dial-title, #fv-chart-1792748156761-g6kvjaygs.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792748156761-g6kvjaygs.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792748156761-g6kvjaygs .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-row, #fv-chart-1792748156761-g6kvjaygs .fv-stacked-product, #fv-chart-1792748156761-g6kvjaygs .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-label, #fv-chart-1792748156761-g6kvjaygs .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-container, #fv-chart-1792748156761-g6kvjaygs .fv-bar-cluster { width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792748156761-g6kvjaygs .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792748156761-g6kvjaygs .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-label-space { display: none !important; } #fv-chart-1792748156761-g6kvjaygs .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stl-shop-all-logo, #fv-chart-1792748156761-g6kvjaygs .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792748156761-g6kvjaygs .fv-dial-title { font-size: 16px !important; } #fv-chart-1792748156761-g6kvjaygs .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792748156761-g6kvjaygs.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Comparing higher to lower detail quality",  "description": "High detail quality on the left, normal on the right. Notice the yellow/orange tree loses all detail in the right-hand image.",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-10-23T09:35:56.761Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Image Comparison",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-10-23T09:35:56.761Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"PC Gamer","logoUrl":"https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png","sliderLogoShape":"square","embedBg":"#ededed","colors":{"primary":"#E33235","secondary":"#FE9F58","accent":"#1CA9C4","background":"#ededed","text":"#1F2937","productColors":["#E33235","#FE9F58","#1CA9C4","#EB6F71","#FFC08B","#66C5D7","#B5282A","#D07F46"]}},"textContent":{"title":"Comparing higher to lower detail quality","subhead":"High detail quality on the left, normal on the right. Notice the yellow/orange tree loses all detail in the right-hand image.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/dgtm3mxTXQVJhTGBoH9uPM.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/xFCK2MB2Laec5Ca5WppqPM.jpg","label1":"High detail quality","label2":"Normal detail quality","showTitle":true,"showSubhead":true}},"slides":[]}</script><div id="fv-chart-1792748156761-g6kvjaygs" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Comparing higher to lower detail quality</h3><p class="fv-chart-subhead">High detail quality on the left, normal on the right. Notice the yellow/orange tree loses all detail in the right-hand image.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1792748156761-g6kvjaygs-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="High detail quality on the left, normal on the right. Notice the yellow/orange tree loses all detail in the right-hand image." data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/xFCK2MB2Laec5Ca5WppqPM.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/xFCK2MB2Laec5Ca5WppqPM.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/dgtm3mxTXQVJhTGBoH9uPM.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/dgtm3mxTXQVJhTGBoH9uPM.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle fv-image-compare-handle-square"><img src="https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">High detail quality</div><div class="fv-image-compare-label fv-image-compare-label-right">Normal detail quality</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792748156761-g6kvjaygs', false); });      } else {        initialize('fv-chart-1792748156761-g6kvjaygs', false);      }    })();      </script></div><p>All this being said, though, upscaling throws a spanner in the works. With upscaling enabled, I found the performance gain to be nowhere near as big when lowering these settings. Instead of the big jump you see above, it pushed me from about 150 fps to about 160–165 fps in DMZ mode using an AMD Radeon RX 9070 XT.</p><p>Now, as I said at the start, I am a bit of a frame-head—I love upping my frame rate for online shooters. So for my money, given the game looks far from bad with these settings lowered, for DMZ and multiplayer, I think I'd keep the four settings low enough by enabling the Balanced preset, then drop down to 1080p with my 400 Hz monitor, enable Quality upscaling, and get headshotting.</p><p>For the campaign, though, and presumably in general for most gamers who aren't massive frame-heads like me (yes, I'm trying to make the term stick), I'd say it's worth keeping the three or four settings above ramped up to what they are on the Ultra preset and instead just enabling Quality upscaling, if your rig can handle it. I'd prefer the nicer shadows avoiding the very slight and occasional loss of crispness that comes with upscaling.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Half-Life 3 re-re-re-confirmed: A Valve dev just said 'HLX' out loud ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Get ready to start talking about Half-Life 3 again, folks, because it's that time of year: Winter is closing in, The Game Awards are coming, and somebody at Valve said "HLX."</p><p>HLX, for those who haven't been following along, is a rumored codename for Half-Life 3, or Half-Life something, the near-mythical new Half-Life game that Valve may or may not be working on. </p><p>It first appeared in early 2024 as part of a <a href="https://www.pcgamer.com/data-strings-in-the-latest-counter-strike-2-update-hint-at-two-new-valve-games-and-one-of-them-might-just-be-half-life-related/" target="_blank">data string inside a Counter-Strike 2 update</a> that bore a very strong resemblance to "HLVR," Valve's codename for Half-Life: Alyx—a revelation that had PC Gamer contributor Rick Lane "vibrating with excitement."</p><p>Sadly for Rick, nothing came of it: No new Half-Life game, 3 or otherwise, followed, and HLX was filed away with all the other myriad <a href="https://www.pcgamer.com/half-life-3-unconfirmed-every-rumor-hoax-and-leak-in-one-place/" target="_blank">Half-Life 3 rumors, hoaxes, and leaks</a>. That is, until Valve composer and audio artist Mike Morasky brought it up completely out of the blue during a <a href="https://www.gamesoundcon.com/speakers" target="_blank">GameSoundCon</a> panel on "Valve's Approach to an Open and Flexible Audio Engine."</p><p>In response to a question about managing voice counts—essentially the maximum number of sounds that can play simultaneously—Morasky touched on some of the variables involved, before mentioning the role played by Valve's HDR system in optimizing audio. "Deadlock has their own version of HDR," Morasky says. "HLX has its own version, and so on and so forth."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2113313815110770690"><p lang="en" dir="ltr">We have the first mention of HLX by a Valve employee.HLX files today. I'm working as quickly as I can. https://t.co/LhFBNOP1CU<a href="https://twitter.com/cantworkitout/status/2113313815110770690">October 22, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Adding fuel to the fire, co-panelist David Feise, seated next to Morasky, immediately turned to him after the HLX comment and whispered "nice work," or possibly "nice one," obviously suggesting, <em>hey man, you're not supposed to talk about that.</em> Feise then quickly puts an end to the answer as Morasky laughs nervously, saying Groups, which Morasky had been talking about leading up to the HLX remark, "is its own one-hour talk, so come talk to us about that afterwards."</p><p>There's no question that Morasky said HLX, and that Feise reacted. In fact, at the end of the panel Feise leaned in and said, "Good job, you only said HLX once." Because this isn't the first time he's done it: Morasky appeared oh-so-close to <a href="https://www.reddit.com/r/HalfLife/comments/1p8k2ce/michael_morasky_dropping_hints_of_hlx/?share_id=KF1sS5crzUvgbA8WA-ZIF" target="_blank">saying "HLX"</a> in 2025, although he was able to catch himself midway and shift gears, awkwardly, to "Alyx."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2113342715756978245"><p lang="en" dir="ltr">- "good job you only said HLX once" - "I DID?" https://t.co/gb8vxACxIi<a href="https://twitter.com/cantworkitout/status/2113342715756978245">October 22, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>So HLX does seem to be a thing, but exactly what type of thing is anyone's guess. Maybe he's tripping over Half-Life: Alyx, or referring to some bit of internal tech, or maybe the whole thing is all just a put-on—Valve devs having a little fun with us. Or maybe it really is Half-Life 3! Nobody knows.</p><p>It is interesting, though, that PC Gamer editor Tyler Wilde—a man who does not indulge in the frivolity of baseless rumor and speculation—said in 2025, as the previous round of Half-Life 3 rumors was heating up, that he does think Valve <a href="https://www.pcgamer.com/games/fps/half-life-3-rumors-poll-2025/" target="_blank">is working on a new Half-Life game</a> (although not necessary Half-Life 3), and that "it's not unreasonable to believe that a new Half-Life game will be announced within the next year or so." Here we are, a year later—and a year closer? We'll see.</p><p>"Valve's Approach to an Open and Flexible Audio Engine" panel can be seen in full on <a href="https://vimeo.com/1234454770" target="_blank">Vimeo</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><div class="product"><a data-dimension112="0f18940a-ce55-11f1-997b-8b1d4f89da74" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="0f18940a-ce55-11f1-997b-8b1d4f89da74" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/half-life-3-re-re-re-confirmed-a-valve-dev-just-said-hlx-out-loud/</link>
                                                                            <description>
                            <![CDATA[ There's no mistaking it this time—he said it. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">adVZgkXrniRob8Bcg8yZYk</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/G4mqGiKszXBcPamKudfwRA-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 20:16:39 +0000</pubDate>                                                                                                                                <updated>Fri, 23 Oct 2026 00:15:25 +0000</updated>
                                                                                                                                            <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                <author><![CDATA[ andy.chalk@pcgamer.com (Andy Chalk) ]]></author>                    <dc:creator><![CDATA[ Andy Chalk ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/hkTeZoDeGrvhQZtrNGPkbB-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/G4mqGiKszXBcPamKudfwRA-1920-80.png">
                                                            <media:credit><![CDATA[null]]></media:credit>
                                                                                                                                                                                                                                                                                                                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/G4mqGiKszXBcPamKudfwRA-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Get ready to start talking about Half-Life 3 again, folks, because it's that time of year: Winter is closing in, The Game Awards are coming, and somebody at Valve said "HLX."</p><p>HLX, for those who haven't been following along, is a rumored codename for Half-Life 3, or Half-Life something, the near-mythical new Half-Life game that Valve may or may not be working on. </p><p>It first appeared in early 2024 as part of a <a href="https://www.pcgamer.com/data-strings-in-the-latest-counter-strike-2-update-hint-at-two-new-valve-games-and-one-of-them-might-just-be-half-life-related/" target="_blank">data string inside a Counter-Strike 2 update</a> that bore a very strong resemblance to "HLVR," Valve's codename for Half-Life: Alyx—a revelation that had PC Gamer contributor Rick Lane "vibrating with excitement."</p><p>Sadly for Rick, nothing came of it: No new Half-Life game, 3 or otherwise, followed, and HLX was filed away with all the other myriad <a href="https://www.pcgamer.com/half-life-3-unconfirmed-every-rumor-hoax-and-leak-in-one-place/" target="_blank">Half-Life 3 rumors, hoaxes, and leaks</a>. That is, until Valve composer and audio artist Mike Morasky brought it up completely out of the blue during a <a href="https://www.gamesoundcon.com/speakers" target="_blank">GameSoundCon</a> panel on "Valve's Approach to an Open and Flexible Audio Engine."</p><p>In response to a question about managing voice counts—essentially the maximum number of sounds that can play simultaneously—Morasky touched on some of the variables involved, before mentioning the role played by Valve's HDR system in optimizing audio. "Deadlock has their own version of HDR," Morasky says. "HLX has its own version, and so on and so forth."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2113313815110770690"><p lang="en" dir="ltr">We have the first mention of HLX by a Valve employee.HLX files today. I'm working as quickly as I can. https://t.co/LhFBNOP1CU<a href="https://twitter.com/cantworkitout/status/2113313815110770690">October 22, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Adding fuel to the fire, co-panelist David Feise, seated next to Morasky, immediately turned to him after the HLX comment and whispered "nice work," or possibly "nice one," obviously suggesting, <em>hey man, you're not supposed to talk about that.</em> Feise then quickly puts an end to the answer as Morasky laughs nervously, saying Groups, which Morasky had been talking about leading up to the HLX remark, "is its own one-hour talk, so come talk to us about that afterwards."</p><p>There's no question that Morasky said HLX, and that Feise reacted. In fact, at the end of the panel Feise leaned in and said, "Good job, you only said HLX once." Because this isn't the first time he's done it: Morasky appeared oh-so-close to <a href="https://www.reddit.com/r/HalfLife/comments/1p8k2ce/michael_morasky_dropping_hints_of_hlx/?share_id=KF1sS5crzUvgbA8WA-ZIF" target="_blank">saying "HLX"</a> in 2025, although he was able to catch himself midway and shift gears, awkwardly, to "Alyx."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2113342715756978245"><p lang="en" dir="ltr">- "good job you only said HLX once" - "I DID?" https://t.co/gb8vxACxIi<a href="https://twitter.com/cantworkitout/status/2113342715756978245">October 22, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>So HLX does seem to be a thing, but exactly what type of thing is anyone's guess. Maybe he's tripping over Half-Life: Alyx, or referring to some bit of internal tech, or maybe the whole thing is all just a put-on—Valve devs having a little fun with us. Or maybe it really is Half-Life 3! Nobody knows.</p><p>It is interesting, though, that PC Gamer editor Tyler Wilde—a man who does not indulge in the frivolity of baseless rumor and speculation—said in 2025, as the previous round of Half-Life 3 rumors was heating up, that he does think Valve <a href="https://www.pcgamer.com/games/fps/half-life-3-rumors-poll-2025/" target="_blank">is working on a new Half-Life game</a> (although not necessary Half-Life 3), and that "it's not unreasonable to believe that a new Half-Life game will be announced within the next year or so." Here we are, a year later—and a year closer? We'll see.</p><p>"Valve's Approach to an Open and Flexible Audio Engine" panel can be seen in full on <a href="https://vimeo.com/1234454770" target="_blank">Vimeo</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><div class="product"><a data-dimension112="0f18940a-ce55-11f1-997b-8b1d4f89da74" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="0f18940a-ce55-11f1-997b-8b1d4f89da74" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ EA has reportedly put DICE and Respawn to work on a new Star Wars: Battlefront game ]]></title>
                                                                                                <dc:content><![CDATA[ <p>In spite of a bloodletting that saw the <a href="https://www.pcgamer.com/gaming-industry/rip-bioware-ea-has-shut-down-the-legendary-rpg-developer/">end of BioWare</a>—a lion in winter, sure, but still a studio with a rich legacy—and around 400 employees laid off, EA seemingly still has videogame irons in the fire. Per a report from <a href="https://variety.com/2026/digital/news/ea-layoffs-bioware-shutting-down-respawn-dice-star-wars-battlefront-3-1236918715/" target="_blank">Variety</a>, the corporation is working on a new Battlefront game, said to be in the hands of Respawn and DICE.</p><p>This is not officially confirmed, of course. In its <a href="https://www.ea.com/news/building-eas-next-chapter">gore-flecked letter</a> to staff and rubber-neckers in the wake of yesterday's BioWare news, EA only said that its future involved "bringing together our Respawn and DICE studios to collaborate on a future project." </p><p>This, it boasted, would allow it to "balance our resources, and leverage the technology to deliver a shooter portfolio that unlocks growth." Which certainly gets me excited about things to come.</p><p>Nevertheless, multiple sources tell Variety that the "future project" is, indeed, a third Battlefront. Which is probably a good idea, in all fairness. I don't think either of the previous two modern Battlefront games have quite lit the world on fire—in fact, the second one's lootboxes were so bad it sparked an uproar that made it all the way to the <a href="https://www.pcgamer.com/belgiums-gambling-commission-rules-against-loot-boxes-in-overwatch-fifa-18-and-csgo/">Belgian Gambling Commission</a>—but the notion of a big boisterous shooter filled with Star Wars stuff feels like something that <em>could</em> be pretty cool, right?</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><p>And hey, Respawn's done a good job on those Star Wars Jedi games to the point that we all now go around referring to them as the 'Star Wars Jedi' games like that's not an absurdly bad name. Meanwhile, DICE rather pleased our resident FPS czar Morgan Park with Battlefield 6; he scored it 82% in his <a href="https://www.pcgamer.com/games/fps/battlefield-6-review/">Battlefield 6 review</a> and called it "automatically one of the best shooters of the year." So sure, sign me up to see what the two can do with a Battlefront game together.</p><div class="product"><a data-dimension112="87032bf2-ce2c-11f1-b71a-0f049e01c0de" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="87032bf2-ce2c-11f1-b71a-0f049e01c0de" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/ea-has-reportedly-put-dice-and-respawn-to-work-on-a-new-star-wars-battlefront-game/</link>
                                                                            <description>
                            <![CDATA[ It will unlock growth, which I'm pretty excited about. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ZUaoazZSYjmvvWgk3xHjKG</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/hMSBjCVZkxKW6r4YRnkhiP-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 15:23:33 +0000</pubDate>                                                                                                                                <updated>Thu, 22 Oct 2026 18:42:55 +0000</updated>
                                                                                                                                            <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                <author><![CDATA[ joshua.wolens@futurenet.com (Joshua Wolens) ]]></author>                    <dc:creator><![CDATA[ Joshua Wolens ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/oYajqiFjn2Rwz4msxoLFyP-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;&lt;br&gt;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/hMSBjCVZkxKW6r4YRnkhiP-1920-80.jpg">
                                                            <media:credit><![CDATA[null]]></media:credit>
                                                                                                                                                                                                                                                                                                                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/hMSBjCVZkxKW6r4YRnkhiP-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>In spite of a bloodletting that saw the <a href="https://www.pcgamer.com/gaming-industry/rip-bioware-ea-has-shut-down-the-legendary-rpg-developer/">end of BioWare</a>—a lion in winter, sure, but still a studio with a rich legacy—and around 400 employees laid off, EA seemingly still has videogame irons in the fire. Per a report from <a href="https://variety.com/2026/digital/news/ea-layoffs-bioware-shutting-down-respawn-dice-star-wars-battlefront-3-1236918715/" target="_blank">Variety</a>, the corporation is working on a new Battlefront game, said to be in the hands of Respawn and DICE.</p><p>This is not officially confirmed, of course. In its <a href="https://www.ea.com/news/building-eas-next-chapter">gore-flecked letter</a> to staff and rubber-neckers in the wake of yesterday's BioWare news, EA only said that its future involved "bringing together our Respawn and DICE studios to collaborate on a future project." </p><p>This, it boasted, would allow it to "balance our resources, and leverage the technology to deliver a shooter portfolio that unlocks growth." Which certainly gets me excited about things to come.</p><p>Nevertheless, multiple sources tell Variety that the "future project" is, indeed, a third Battlefront. Which is probably a good idea, in all fairness. I don't think either of the previous two modern Battlefront games have quite lit the world on fire—in fact, the second one's lootboxes were so bad it sparked an uproar that made it all the way to the <a href="https://www.pcgamer.com/belgiums-gambling-commission-rules-against-loot-boxes-in-overwatch-fifa-18-and-csgo/">Belgian Gambling Commission</a>—but the notion of a big boisterous shooter filled with Star Wars stuff feels like something that <em>could</em> be pretty cool, right?</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><p>And hey, Respawn's done a good job on those Star Wars Jedi games to the point that we all now go around referring to them as the 'Star Wars Jedi' games like that's not an absurdly bad name. Meanwhile, DICE rather pleased our resident FPS czar Morgan Park with Battlefield 6; he scored it 82% in his <a href="https://www.pcgamer.com/games/fps/battlefield-6-review/">Battlefield 6 review</a> and called it "automatically one of the best shooters of the year." So sure, sign me up to see what the two can do with a Battlefront game together.</p><div class="product"><a data-dimension112="87032bf2-ce2c-11f1-b71a-0f049e01c0de" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="87032bf2-ce2c-11f1-b71a-0f049e01c0de" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ How to clear a compound in Modern Warfare 4 DMZ ]]></title>
                                                                                                <dc:content><![CDATA[ <figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1322px;"><p class="vanilla-image-block" style="padding-top:56.20%;"><img id="uAVNusCmrBTPgwByLfuGYM" name="dmz-clear-a-compound-1" alt="Modern Warfare 4 DMZ - Compound" src="https://cdn.mos.cms.futurecdn.net/uAVNusCmrBTPgwByLfuGYM-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1322" height="743" attribution="" endorsement="" class="inline expandable" /><a href='https://cdn.mos.cms.futurecdn.net/uAVNusCmrBTPgwByLfuGYM-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">There are some easy open compounds in Daesong Ridge in the south </span><span class="credit" itemprop="copyrightHolder">(Image credit: Infinity Ward)</span></figcaption></figure><p>Clearing a compound is one of the early orders you'll have to complete when you arrive in <a href="https://www.pcgamer.com/call-of-duty-modern-warfare-4/" target="_blank">Modern Warfare 4</a>'s DMZ mode, and it requires you to assault a mini enemy stronghold.</p><p>Compounds are marked with the little tent and flag symbols on the map, though they vary in difficulty, and some of them require keys to open. If you're looking for an easy one to complete, I recommend the two in Daesong Ridge in the south of the map. These army camps are open, so they're easy to access, and they don't have too many enemies. To clear a compound you need to:</p><ul><li>Kill every enemy in the compound—your current progress is represented by the percentage bar on the left, though it counts up instead of down.</li><li>When you kill the last enemy in the stronghold, make sure to pick up the Medical Extraction Intel they drop and extract it to complete the order.</li></ul><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/qYLZ9z4SX4g6FWBe8uzbrM-1920-80.jpg" alt="Modern Warfare 4 DMZ - Clearing a compound" /><figcaption>Your progress clearing the compound is shown on the left side<small role="credit">Infinity Ward</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FAoqQqYyNeTjQrgRZo8YqM-1920-80.jpg" alt="Modern Warfare 4 DMZ - Medical item" /><figcaption>Make sure to grab the Medical Extraction Intel from the last soldier you kill for the order<small role="credit">Infinity Ward</small></figcaption></figure></figure><p>If you can't find the last enemies, they may be stuck in something, so search around, or just make some noise to attract their attention, or if all else fails, find another compound.</p><p>While you're in the compound, don't forget to loot any safes you find for some decent valuables—in the army camps, these are in the tower and in the main building, though the smaller barracks also have lockers and containers with loot.</p><div class="product"><a data-dimension112="679421ba-ce07-11f1-ba0d-a39a18a9383a" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="679421ba-ce07-11f1-ba0d-a39a18a9383a" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/call-of-duty/dmz-clear-a-compound-no-one-left/</link>
                                                                            <description>
                            <![CDATA[ Complete the No One Left order. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">rEMtWA2AXTYBNi4nQwvhSL</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/puRh9PgaH6xDQExD4HsSbM-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 11:10:00 +0000</pubDate>                                                                                                                                <updated>Thu, 22 Oct 2026 11:10:51 +0000</updated>
                                                                                                                                            <category><![CDATA[Call of Duty]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                    <category><![CDATA[FPS]]></category>
                                                                                                                    <dc:creator><![CDATA[ Sean Martin ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/rw7hUY3Y2mxZJtwx3ePdwF-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/puRh9PgaH6xDQExD4HsSbM-1920-80.jpg">
                                                            <media:credit><![CDATA[Infinity Ward]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Modern Warfare 4 DMZ - Clear a compound]]></media:description>                                                            <media:text><![CDATA[Modern Warfare 4 DMZ - Clear a compound]]></media:text>
                                <media:title type="plain"><![CDATA[Modern Warfare 4 DMZ - Clear a compound]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/puRh9PgaH6xDQExD4HsSbM-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1322px;"><p class="vanilla-image-block" style="padding-top:56.20%;"><img id="uAVNusCmrBTPgwByLfuGYM" name="dmz-clear-a-compound-1" alt="Modern Warfare 4 DMZ - Compound" src="https://cdn.mos.cms.futurecdn.net/uAVNusCmrBTPgwByLfuGYM-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1322" height="743" attribution="" endorsement="" class="inline expandable" /><a href='https://cdn.mos.cms.futurecdn.net/uAVNusCmrBTPgwByLfuGYM-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">There are some easy open compounds in Daesong Ridge in the south </span><span class="credit" itemprop="copyrightHolder">(Image credit: Infinity Ward)</span></figcaption></figure><p>Clearing a compound is one of the early orders you'll have to complete when you arrive in <a href="https://www.pcgamer.com/call-of-duty-modern-warfare-4/" target="_blank">Modern Warfare 4</a>'s DMZ mode, and it requires you to assault a mini enemy stronghold.</p><p>Compounds are marked with the little tent and flag symbols on the map, though they vary in difficulty, and some of them require keys to open. If you're looking for an easy one to complete, I recommend the two in Daesong Ridge in the south of the map. These army camps are open, so they're easy to access, and they don't have too many enemies. To clear a compound you need to:</p><ul><li>Kill every enemy in the compound—your current progress is represented by the percentage bar on the left, though it counts up instead of down.</li><li>When you kill the last enemy in the stronghold, make sure to pick up the Medical Extraction Intel they drop and extract it to complete the order.</li></ul><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/qYLZ9z4SX4g6FWBe8uzbrM-1920-80.jpg" alt="Modern Warfare 4 DMZ - Clearing a compound" /><figcaption>Your progress clearing the compound is shown on the left side<small role="credit">Infinity Ward</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FAoqQqYyNeTjQrgRZo8YqM-1920-80.jpg" alt="Modern Warfare 4 DMZ - Medical item" /><figcaption>Make sure to grab the Medical Extraction Intel from the last soldier you kill for the order<small role="credit">Infinity Ward</small></figcaption></figure></figure><p>If you can't find the last enemies, they may be stuck in something, so search around, or just make some noise to attract their attention, or if all else fails, find another compound.</p><p>While you're in the compound, don't forget to loot any safes you find for some decent valuables—in the army camps, these are in the tower and in the main building, though the smaller barracks also have lockers and containers with loot.</p><div class="product"><a data-dimension112="679421ba-ce07-11f1-ba0d-a39a18a9383a" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="679421ba-ce07-11f1-ba0d-a39a18a9383a" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ How to get electronic sensors in Modern Warfare 4 DMZ ]]></title>
                                                                                                <dc:content><![CDATA[ <figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/4NctiPfB7CDUYGjf5fh7Fe-1920-80.jpg" alt="DMZ electronic sensors" /><figcaption>You can find electronic sensors lying around in buildings, but particularly apartments<small role="credit">Infinity Ward</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4NbEPGMzgtn2CuGRw2kwFe-1920-80.jpg" alt="DMZ electronic sensors in a bag" /><figcaption>And in certain containers<small role="credit">Infinity Ward</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/7JBbxgknejHx9AppfJVMFe-1920-80.jpg" alt="DMZ electronic sensors in a PC" /><figcaption>You can also search PCs for them<small role="credit">Infinity Ward</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/pUw3y5bYHYsEAR9n6Beovd-1920-80.jpg" alt="DMZ electronic sensors" /><figcaption>I got all ten of mine in Hanrim Village in the north, but any packed area of buildings should work<small role="credit">Infinity Ward</small></figcaption></figure></figure><p>You'll need electronic sensors in <a href="https://www.pcgamer.com/call-of-duty-modern-warfare-4/" target="_blank">Modern Warfare 4</a>'s DMZ mode to upgrade your starting stash, which quickly runs out of space after the first couple of matches. Unlike rigid synthetics, the other material you need, you likely won't find enough electronic sensors without looking in the right place.</p><p>The best places to get electronic sensors are:</p><ul><li>Inside buildings, but particularly apartments and apartment blocks. I found quite a few as loose items or inside bags.</li><li>Inside computers. If you spot a computer, open it up and take a look.</li><li>While there are residential buildings all over the map, I had the most luck in Hanrin Village in the north, where one run south along the road gave me all ten sensors I needed.</li></ul><p>The good thing about apartment buildings is that they also usually have a lot of rigid synthetics, so you can kill two birds with one stone. So, search buildings, computers, and make sure to bring a blue, medium backpack so you can secure slot what you do find, and still progress to that upgrade even if you don't manage to exfil.</p><div class="product"><a data-dimension112="5b79a6e4-ce01-11f1-ade3-738b2ee92f7f" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="5b79a6e4-ce01-11f1-ade3-738b2ee92f7f" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/call-of-duty/dmz-electronic-sensors-location/</link>
                                                                            <description>
                            <![CDATA[ One of two materials you'll need to expand your stash. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">yKd997MR3WGV9SU6DU9vHJ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/dQxXi738t9kDCNLUpeZcAe-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 10:26:58 +0000</pubDate>                                                                                                                                <updated>Thu, 22 Oct 2026 10:58:33 +0000</updated>
                                                                                                                                            <category><![CDATA[Call of Duty]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                    <category><![CDATA[FPS]]></category>
                                                                                                                    <dc:creator><![CDATA[ Sean Martin ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/rw7hUY3Y2mxZJtwx3ePdwF-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/dQxXi738t9kDCNLUpeZcAe-1920-80.jpg">
                                                            <media:credit><![CDATA[Infinity Ward]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[DMZ electronic sensors - Soldiers]]></media:description>                                                            <media:text><![CDATA[DMZ electronic sensors - Soldiers]]></media:text>
                                <media:title type="plain"><![CDATA[DMZ electronic sensors - Soldiers]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/dQxXi738t9kDCNLUpeZcAe-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/4NctiPfB7CDUYGjf5fh7Fe-1920-80.jpg" alt="DMZ electronic sensors" /><figcaption>You can find electronic sensors lying around in buildings, but particularly apartments<small role="credit">Infinity Ward</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4NbEPGMzgtn2CuGRw2kwFe-1920-80.jpg" alt="DMZ electronic sensors in a bag" /><figcaption>And in certain containers<small role="credit">Infinity Ward</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/7JBbxgknejHx9AppfJVMFe-1920-80.jpg" alt="DMZ electronic sensors in a PC" /><figcaption>You can also search PCs for them<small role="credit">Infinity Ward</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/pUw3y5bYHYsEAR9n6Beovd-1920-80.jpg" alt="DMZ electronic sensors" /><figcaption>I got all ten of mine in Hanrim Village in the north, but any packed area of buildings should work<small role="credit">Infinity Ward</small></figcaption></figure></figure><p>You'll need electronic sensors in <a href="https://www.pcgamer.com/call-of-duty-modern-warfare-4/" target="_blank">Modern Warfare 4</a>'s DMZ mode to upgrade your starting stash, which quickly runs out of space after the first couple of matches. Unlike rigid synthetics, the other material you need, you likely won't find enough electronic sensors without looking in the right place.</p><p>The best places to get electronic sensors are:</p><ul><li>Inside buildings, but particularly apartments and apartment blocks. I found quite a few as loose items or inside bags.</li><li>Inside computers. If you spot a computer, open it up and take a look.</li><li>While there are residential buildings all over the map, I had the most luck in Hanrin Village in the north, where one run south along the road gave me all ten sensors I needed.</li></ul><p>The good thing about apartment buildings is that they also usually have a lot of rigid synthetics, so you can kill two birds with one stone. So, search buildings, computers, and make sure to bring a blue, medium backpack so you can secure slot what you do find, and still progress to that upgrade even if you don't manage to exfil.</p><div class="product"><a data-dimension112="5b79a6e4-ce01-11f1-ade3-738b2ee92f7f" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="5b79a6e4-ce01-11f1-ade3-738b2ee92f7f" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Holy crap, they're making Serious Sam: The Third Encounter ]]></title>
                                                                                                <dc:content><![CDATA[ <p>It took almost 25 years to happen, but <a href="https://store.steampowered.com/app/459920/Serious_Sam_The_Third_Encounter/" target="_blank">Serious Sam: The Third Encounter</a> is finally, actually happening. Croteam and Devolver Digital revealed today that a proper new game in the Serious Sam series is now in the early stages of development.</p><p>Serious Sam: The Third Encounter will actually be the seventh mainline game in the series, thanks to its oddball naming scheme and twisted timeline. Here's how the whole thing breaks down:</p><ul><li><strong>Serious Sam: The First Encounter (2001)</strong></li><li><strong>Serious Sam: The Second Encounter (2002)</strong></li><li><strong>Serious Sam 2 (2005)</strong></li><li><strong>Serious Sam 3: BFE (2011)</strong></li><li><strong>Serious Sam 4 (2020)</strong></li><li><strong>Serious Sam: Siberian Mayhem (2022)</strong></li></ul><p>I won't pretend to understand this messy continuity, except that each game is sort of a chapter in the story of Serious Sam, which honestly isn't so much a 'story' as it is an excuse to shoot friggin' <em>huge </em>numbers of guys and make the occasional phone call to an all-conquering intergalactic menace named Mental. </p><p>That said, Croteam wants everyone to know that The Third Encounter picks up where The Second Encounter left off, so I hope you were paying attention to how it wrapped up 24 years ago: "Not a side story. A true continuation. This time Sam is going to strike Mental's Horde at its heart, and he’s deadly serious about it."</p><p>What matters, though, is that this is seriously Serious Sam: "The only thing standing between you and thousands of enemies is your weapon, and the only thing that matters is who pulls the trigger first." That's what I'm here for, baby.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/YLaTMaSX4ZE" allowfullscreen=""></iframe></div></div><p>I can't help wondering if that emphasis on old school Sam doesn't arise at least in part from <a href="https://www.pcgamer.com/games/roguelike/serious-sam-shatterverse-brings-together-25-years-of-sam-in-an-absurd-bloodsoaked-roguelite/" target="_blank">Serious Sam: Shatterverse</a>, the recently-released co-op roguelite shooter developed by Behaviour Interactive. I played some of it in pre-release and quite frankly, it wasn't very good. (Yes, yes, <a href="https://www.pcgamer.com/games/fps/serious-sam-is-being-turned-into-a-run-based-roguelite-multiplayer-shooter-later-this-year-and-seriously-this-one-might-not-suck/" target="_blank">I was wrong</a>. It happens.) Bugs were a serious issue at launch but the underlying gameplay is a bigger problem: levels are small and constrained, enemy numbers are underwhelming, and the weapons, limited by the game's progression system, are just boring.</p><p>Serious Sam 4 didn't really knock my socks off either, to be honest (I never got over them dropping the <a href="https://www.pcgamer.com/serious-sam-4-planet-badass-has-a-teaser-trailer/" target="_blank">Planet Badass</a> subtitle), so I'm really looking forward to getting back to the old ways with a new game—one that's just me, a bunch of stupid guns, and zillions of dudes to point them at, as God intended.</p><p>Ah, but it's going to be a while before I get to pull that Looney Tunes-style cannon out of my pocket and blast giant lizardmen into sticky bits with it: Croteam noted, with emphasis, that Serious Sam: The Third Encounter is in "early development," so don't expect it to show up anytime soon. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><div class="product"><a data-dimension112="b8a89d62-cdab-11f1-adab-2db903167077" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="b8a89d62-cdab-11f1-adab-2db903167077" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/holy-crap-theyre-making-serious-sam-the-third-encounter/</link>
                                                                            <description>
                            <![CDATA[ I've been waiting a quarter-century for this. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">DQR9GFgcHnEJms3EAB7pra</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/tkfnHjrqia3q7vTGtgBdz4-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 00:12:03 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                <author><![CDATA[ andy.chalk@pcgamer.com (Andy Chalk) ]]></author>                    <dc:creator><![CDATA[ Andy Chalk ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/hkTeZoDeGrvhQZtrNGPkbB-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/tkfnHjrqia3q7vTGtgBdz4-1920-80.jpg">
                                                            <media:credit><![CDATA[Croteam]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Serious Sam]]></media:description>                                                            <media:text><![CDATA[Serious Sam]]></media:text>
                                <media:title type="plain"><![CDATA[Serious Sam]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/tkfnHjrqia3q7vTGtgBdz4-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It took almost 25 years to happen, but <a href="https://store.steampowered.com/app/459920/Serious_Sam_The_Third_Encounter/" target="_blank">Serious Sam: The Third Encounter</a> is finally, actually happening. Croteam and Devolver Digital revealed today that a proper new game in the Serious Sam series is now in the early stages of development.</p><p>Serious Sam: The Third Encounter will actually be the seventh mainline game in the series, thanks to its oddball naming scheme and twisted timeline. Here's how the whole thing breaks down:</p><ul><li><strong>Serious Sam: The First Encounter (2001)</strong></li><li><strong>Serious Sam: The Second Encounter (2002)</strong></li><li><strong>Serious Sam 2 (2005)</strong></li><li><strong>Serious Sam 3: BFE (2011)</strong></li><li><strong>Serious Sam 4 (2020)</strong></li><li><strong>Serious Sam: Siberian Mayhem (2022)</strong></li></ul><p>I won't pretend to understand this messy continuity, except that each game is sort of a chapter in the story of Serious Sam, which honestly isn't so much a 'story' as it is an excuse to shoot friggin' <em>huge </em>numbers of guys and make the occasional phone call to an all-conquering intergalactic menace named Mental. </p><p>That said, Croteam wants everyone to know that The Third Encounter picks up where The Second Encounter left off, so I hope you were paying attention to how it wrapped up 24 years ago: "Not a side story. A true continuation. This time Sam is going to strike Mental's Horde at its heart, and he’s deadly serious about it."</p><p>What matters, though, is that this is seriously Serious Sam: "The only thing standing between you and thousands of enemies is your weapon, and the only thing that matters is who pulls the trigger first." That's what I'm here for, baby.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/YLaTMaSX4ZE" allowfullscreen=""></iframe></div></div><p>I can't help wondering if that emphasis on old school Sam doesn't arise at least in part from <a href="https://www.pcgamer.com/games/roguelike/serious-sam-shatterverse-brings-together-25-years-of-sam-in-an-absurd-bloodsoaked-roguelite/" target="_blank">Serious Sam: Shatterverse</a>, the recently-released co-op roguelite shooter developed by Behaviour Interactive. I played some of it in pre-release and quite frankly, it wasn't very good. (Yes, yes, <a href="https://www.pcgamer.com/games/fps/serious-sam-is-being-turned-into-a-run-based-roguelite-multiplayer-shooter-later-this-year-and-seriously-this-one-might-not-suck/" target="_blank">I was wrong</a>. It happens.) Bugs were a serious issue at launch but the underlying gameplay is a bigger problem: levels are small and constrained, enemy numbers are underwhelming, and the weapons, limited by the game's progression system, are just boring.</p><p>Serious Sam 4 didn't really knock my socks off either, to be honest (I never got over them dropping the <a href="https://www.pcgamer.com/serious-sam-4-planet-badass-has-a-teaser-trailer/" target="_blank">Planet Badass</a> subtitle), so I'm really looking forward to getting back to the old ways with a new game—one that's just me, a bunch of stupid guns, and zillions of dudes to point them at, as God intended.</p><p>Ah, but it's going to be a while before I get to pull that Looney Tunes-style cannon out of my pocket and blast giant lizardmen into sticky bits with it: Croteam noted, with emphasis, that Serious Sam: The Third Encounter is in "early development," so don't expect it to show up anytime soon. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><div class="product"><a data-dimension112="b8a89d62-cdab-11f1-adab-2db903167077" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="b8a89d62-cdab-11f1-adab-2db903167077" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Modern Warfare 4 players declare 'broken' on DMZ perk that lets you self-revive after full death ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Call of Duty: Modern Warfare 4's big extraction mode DMZ has been out for one day, so it's a bit early to make sweeping declarations about balance, but even I'm raising an eyebrow at an operator trait that the internet is already calling broken.</p><p>That's "broken" in the "so overpowered it shouldn't exist" way, not the "literally doesn't work way," though when you see Possum in action, it does give the impression of a bug. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:700px;"><p class="vanilla-image-block" style="padding-top:23.57%;"><img id="Ls3VyDL9Kqj43oXratbfod" name="possum" alt="Possum" src="https://cdn.mos.cms.futurecdn.net/Ls3VyDL9Kqj43oXratbfod-1920-80.jpg" mos="" align="middle" fullscreen="" width="700" height="165" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Possum: Allows a self revive into last stand from death, storing health to maximum, once per match </span><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p>As someone who's been around the extraction shooter block, it's a very powerful trump card. It doesn't take that long to get, either: If you beeline straight to it on the Warfighter skill tree, you can do it in a handful of matches. </p><p>To be clear, this is not the same as reviving yourself during the DBNO (down but not out) state, which anyone can do from level 1: Possum means you can be a cold, dead, lootable body, and then suddenly spring back to life. </p><p>I'm not surprised folks are panicky about the prospect of playing around lobbies full of Possum players. There's already one clip circulating (per <a href="https://x.com/xFleXy_/status/2112694957077057597?s=20">xFleXy_</a> on X) of someone fully killing a player, turning their back to fight other nearby enemies, then getting shot in the back by the guy they <em>just</em> killed.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2112694957077057597"><p lang="en" dir="ltr">Umm I kill &amp; finish the guy in the white skin and then he suddenly pops up and kills me??? @InfinityWard @CallofDutyCM https://t.co/XFrgD6MRCI<a href="https://twitter.com/cantworkitout/status/2112694957077057597">October 20, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>That's the nightmare scenario, though the perk has drawbacks that xFleXy could've exploited if they'd known Possum existed. The self-revive isn't quick, and once it's done they still have to pick themselves up from DBNO with a tourniquet. If the killer is paying attention when that first step happens, they can easily end them for good before they stand back up.</p><p>I reckon Infinity Ward didn't envision folks using the perk to instantly turn the table on a lost fight. Per the name, you're likely meant to sit still, play dead, then self-revive after your corpse has been picked clean and the killers have moved on. You lose some stuff, but you escape with your operator (which can be expensive to replace). Call of Duty YouTuber <a href="https://x.com/JGODYT/status/2112968680648909291?s=20">JGOD </a>demonstrated this use case in his own video.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2112968680648909291"><p lang="en" dir="ltr">1st time using the Possum Trait in DMZ🟢Waited 3 minutes for the players to move on🟢They dropped a 2 plate while looting my Free Kit🟢Then Exfilled https://t.co/SHFgd2gJv1<a href="https://twitter.com/cantworkitout/status/2112968680648909291">October 21, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>In those terms, a trait like Possum is a great fit for DMZ, which is <a href="https://www.pcgamer.com/games/call-of-duty/call-of-duty-modern-warfare-4-review-in-progress-a-campaign-you-shouldnt-skip/">designed not to be as punishing as other extraction shooters</a>. The problem is its execution: Players who just won a fight should not always have to worry that their victim is going to stand back up and kill them. Maybe using Possum should make more noise in the moment, or require a long wait (like 5 to 10 minutes) to use. Infinity Ward needs to underline how bad of an idea it is to use while enemies are around, or in lieu of that, <strong>players need a way to burn bodies</strong>.</p><figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/DMZ/comments/1xb2zly/possum_seems_very_op_in_pvp_fights">Possum seems very OP in PvP fights.</a><figcaption><cite> from <a href="https://www.reddit.com/r/DMZ">r/DMZ</a></cite></figcaption></blockquote></figure><script async="" src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p>"Burn bodies," in this context, refers to Hunt: Showdown, the other extraction shooter with this exact ability. That game's Possum, called Necromancer, works the same way, except that others have the option to set your corpse on fire and wait for a sound cue that confirms "this guy ain't getting up." It's a great bit of balance, because it puts the onus on the killer to already have a molotov cocktail on-hand, look for another way to start a fire, or leave your corpse and accept you may come back. Sometimes Necromancer saves your bacon, sometimes not.</p><p>Whatever the eventual solution is, I expect Infinity Ward to react soon. </p><div class="product"><a data-dimension112="0e08b946-cd97-11f1-8a85-33303c64f19b" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="0e08b946-cd97-11f1-8a85-33303c64f19b" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/call-of-duty/modern-warfare-4-players-declare-broken-on-dmz-perk-that-lets-you-self-revive-after-full-death/</link>
                                                                            <description>
                            <![CDATA[ Some hate that you can't know an enemy's truly dead in DMZ. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">9LEWPVZ6QnK9udWN68RdQY</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/VNjGhQEhtfgu6qq3TAsP8E-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 21 Oct 2026 21:36:47 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Call of Duty]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                    <category><![CDATA[FPS]]></category>
                                                                                                                    <dc:creator><![CDATA[ Morgan Park ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/VVB5GCgA3xLhkX8FVAWw5D-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/VNjGhQEhtfgu6qq3TAsP8E-1920-80.jpg">
                                                            <media:credit><![CDATA[Activision]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Modern Warfare 4 DMZ]]></media:description>                                                            <media:text><![CDATA[Modern Warfare 4 DMZ]]></media:text>
                                <media:title type="plain"><![CDATA[Modern Warfare 4 DMZ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/VNjGhQEhtfgu6qq3TAsP8E-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Call of Duty: Modern Warfare 4's big extraction mode DMZ has been out for one day, so it's a bit early to make sweeping declarations about balance, but even I'm raising an eyebrow at an operator trait that the internet is already calling broken.</p><p>That's "broken" in the "so overpowered it shouldn't exist" way, not the "literally doesn't work way," though when you see Possum in action, it does give the impression of a bug. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:700px;"><p class="vanilla-image-block" style="padding-top:23.57%;"><img id="Ls3VyDL9Kqj43oXratbfod" name="possum" alt="Possum" src="https://cdn.mos.cms.futurecdn.net/Ls3VyDL9Kqj43oXratbfod-1920-80.jpg" mos="" align="middle" fullscreen="" width="700" height="165" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Possum: Allows a self revive into last stand from death, storing health to maximum, once per match </span><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p>As someone who's been around the extraction shooter block, it's a very powerful trump card. It doesn't take that long to get, either: If you beeline straight to it on the Warfighter skill tree, you can do it in a handful of matches. </p><p>To be clear, this is not the same as reviving yourself during the DBNO (down but not out) state, which anyone can do from level 1: Possum means you can be a cold, dead, lootable body, and then suddenly spring back to life. </p><p>I'm not surprised folks are panicky about the prospect of playing around lobbies full of Possum players. There's already one clip circulating (per <a href="https://x.com/xFleXy_/status/2112694957077057597?s=20">xFleXy_</a> on X) of someone fully killing a player, turning their back to fight other nearby enemies, then getting shot in the back by the guy they <em>just</em> killed.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2112694957077057597"><p lang="en" dir="ltr">Umm I kill &amp; finish the guy in the white skin and then he suddenly pops up and kills me??? @InfinityWard @CallofDutyCM https://t.co/XFrgD6MRCI<a href="https://twitter.com/cantworkitout/status/2112694957077057597">October 20, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>That's the nightmare scenario, though the perk has drawbacks that xFleXy could've exploited if they'd known Possum existed. The self-revive isn't quick, and once it's done they still have to pick themselves up from DBNO with a tourniquet. If the killer is paying attention when that first step happens, they can easily end them for good before they stand back up.</p><p>I reckon Infinity Ward didn't envision folks using the perk to instantly turn the table on a lost fight. Per the name, you're likely meant to sit still, play dead, then self-revive after your corpse has been picked clean and the killers have moved on. You lose some stuff, but you escape with your operator (which can be expensive to replace). Call of Duty YouTuber <a href="https://x.com/JGODYT/status/2112968680648909291?s=20">JGOD </a>demonstrated this use case in his own video.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2112968680648909291"><p lang="en" dir="ltr">1st time using the Possum Trait in DMZ🟢Waited 3 minutes for the players to move on🟢They dropped a 2 plate while looting my Free Kit🟢Then Exfilled https://t.co/SHFgd2gJv1<a href="https://twitter.com/cantworkitout/status/2112968680648909291">October 21, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>In those terms, a trait like Possum is a great fit for DMZ, which is <a href="https://www.pcgamer.com/games/call-of-duty/call-of-duty-modern-warfare-4-review-in-progress-a-campaign-you-shouldnt-skip/">designed not to be as punishing as other extraction shooters</a>. The problem is its execution: Players who just won a fight should not always have to worry that their victim is going to stand back up and kill them. Maybe using Possum should make more noise in the moment, or require a long wait (like 5 to 10 minutes) to use. Infinity Ward needs to underline how bad of an idea it is to use while enemies are around, or in lieu of that, <strong>players need a way to burn bodies</strong>.</p><figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/DMZ/comments/1xb2zly/possum_seems_very_op_in_pvp_fights">Possum seems very OP in PvP fights.</a><figcaption><cite> from <a href="https://www.reddit.com/r/DMZ">r/DMZ</a></cite></figcaption></blockquote></figure><script async="" src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p>"Burn bodies," in this context, refers to Hunt: Showdown, the other extraction shooter with this exact ability. That game's Possum, called Necromancer, works the same way, except that others have the option to set your corpse on fire and wait for a sound cue that confirms "this guy ain't getting up." It's a great bit of balance, because it puts the onus on the killer to already have a molotov cocktail on-hand, look for another way to start a fire, or leave your corpse and accept you may come back. Sometimes Necromancer saves your bacon, sometimes not.</p><p>Whatever the eventual solution is, I expect Infinity Ward to react soon. </p><div class="product"><a data-dimension112="0e08b946-cd97-11f1-8a85-33303c64f19b" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="0e08b946-cd97-11f1-8a85-33303c64f19b" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ How to find a dynamic op phone in DMZ in Modern Warfare 4 ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Got a confusing order about finding a "dynamic op phone" in Modern Warfare 4 DMZ? You're not alone there: I've played around 15 hours of DMZ so far and this is the only objective that has genuinely confused me.</p><p>The good news is the answer is simpler than it sounds. The whole order is really just a tutorial for DMZ's free roam option, demonstrating how to lay low and complete contracts.</p><h2 id="where-to-find-a-dynamic-op-phone-in-dmz">Where to find a dynamic op phone in DMZ</h2><p>The page four order that asks you to "Collect a dynamic op phone in Cheongun Village" is really just asking you to pick up and complete a dynamic op. <strong>Dynamic ops are any of the missions marked by green satellite phone shapes on the map.</strong></p><p>Since the order calls for starting one from Cheongun Village, the quickest way to do this is to enter a DMZ match through free roam (the third option on the deploy screen). This ensures that you won't have a dynamic op or story mission already assigned when the match starts, as you won't be able to start another until that one is finished.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PxyoRBiswr94HjPLq6kBYA" name="dynamic ops dmz" alt="Dynamic Ops phone DMZ" src="https://cdn.mos.cms.futurecdn.net/PxyoRBiswr94HjPLq6kBYA-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p>So just get to Cheongun Village as quickly as possible—it's at the northwest corner of the South Korea part of Hajin, near the casino and hospital—and find one of those green markers. You can ping one to find it quickly, but they also make a distinct beeping sound that you can follow to the phone. They look like this:</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gkmw8t6Gs6poueoNRhJgTi" name="20261021122028_1" alt="Dynamic Op Phone DMZ" src="https://cdn.mos.cms.futurecdn.net/gkmw8t6Gs6poueoNRhJgTi-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p><strong>Be sure to actually complete the dynamic op to finish the rest of the order, or you'll have to do the first step again</strong>. If you want to finish the whole page of orders in one run, then you'll also want do the following while you're at it:</p><ul><li>Craft a suppressor, a throwing knife, medium backpack, and two-plate armor vest</li><li>Bring a silenced gun (cheapest is a pistol)</li><li>Using the suppressed gun, kill eight enemies without taking damage</li></ul><div class="product"><a data-dimension112="a921dcbc-cd8a-11f1-acc2-0559e399fe9e" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="a921dcbc-cd8a-11f1-acc2-0559e399fe9e" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/call-of-duty/dynamic-op-phone-dmz/</link>
                                                                            <description>
                            <![CDATA[ It's way simpler than it sounds. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">bmy8yQHVPrU558mbshH8TY</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/siVK265pVnjz4JwL8oF2PE-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 21 Oct 2026 20:06:55 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Call of Duty]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                    <category><![CDATA[FPS]]></category>
                                                                                                                    <dc:creator><![CDATA[ Morgan Park ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/VVB5GCgA3xLhkX8FVAWw5D-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/siVK265pVnjz4JwL8oF2PE-1920-80.jpg">
                                                            <media:credit><![CDATA[Activision]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Modern Warfare 4 DMZ]]></media:description>                                                            <media:text><![CDATA[Modern Warfare 4 DMZ]]></media:text>
                                <media:title type="plain"><![CDATA[Modern Warfare 4 DMZ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/siVK265pVnjz4JwL8oF2PE-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Got a confusing order about finding a "dynamic op phone" in Modern Warfare 4 DMZ? You're not alone there: I've played around 15 hours of DMZ so far and this is the only objective that has genuinely confused me.</p><p>The good news is the answer is simpler than it sounds. The whole order is really just a tutorial for DMZ's free roam option, demonstrating how to lay low and complete contracts.</p><h2 id="where-to-find-a-dynamic-op-phone-in-dmz">Where to find a dynamic op phone in DMZ</h2><p>The page four order that asks you to "Collect a dynamic op phone in Cheongun Village" is really just asking you to pick up and complete a dynamic op. <strong>Dynamic ops are any of the missions marked by green satellite phone shapes on the map.</strong></p><p>Since the order calls for starting one from Cheongun Village, the quickest way to do this is to enter a DMZ match through free roam (the third option on the deploy screen). This ensures that you won't have a dynamic op or story mission already assigned when the match starts, as you won't be able to start another until that one is finished.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PxyoRBiswr94HjPLq6kBYA" name="dynamic ops dmz" alt="Dynamic Ops phone DMZ" src="https://cdn.mos.cms.futurecdn.net/PxyoRBiswr94HjPLq6kBYA-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p>So just get to Cheongun Village as quickly as possible—it's at the northwest corner of the South Korea part of Hajin, near the casino and hospital—and find one of those green markers. You can ping one to find it quickly, but they also make a distinct beeping sound that you can follow to the phone. They look like this:</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gkmw8t6Gs6poueoNRhJgTi" name="20261021122028_1" alt="Dynamic Op Phone DMZ" src="https://cdn.mos.cms.futurecdn.net/gkmw8t6Gs6poueoNRhJgTi-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p><strong>Be sure to actually complete the dynamic op to finish the rest of the order, or you'll have to do the first step again</strong>. If you want to finish the whole page of orders in one run, then you'll also want do the following while you're at it:</p><ul><li>Craft a suppressor, a throwing knife, medium backpack, and two-plate armor vest</li><li>Bring a silenced gun (cheapest is a pistol)</li><li>Using the suppressed gun, kill eight enemies without taking damage</li></ul><div class="product"><a data-dimension112="a921dcbc-cd8a-11f1-acc2-0559e399fe9e" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="a921dcbc-cd8a-11f1-acc2-0559e399fe9e" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Don't get hit with the BIOS update hammer for COD MW4 like my colleagues—here's how to ensure you can play multiplayer and DMZ ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you're itching to get your pupils up against <a href="https://www.pcgamer.com/games/call-of-duty/call-of-duty-modern-warfare-4-review-in-progress-a-campaign-you-shouldnt-skip" target="_blank">Call of Duty: Modern Warfare 4</a> on PC at launch on Friday, you should probably double-check your system is up to date. We've already had a couple of colleagues here flung against the wall of requirements with the new COD, requiring a BIOS update to play online.</p><p>That's because <a href="https://support.activision.com/articles/trusted-platform-module-and-secure-boot" target="_blank">Activision explains</a> that both TPM 2.0 and Secure Boot are required to play any online game mode (multiplayer or DMZ). More specifically, though, you must have a new enough version of PTT (Platform Trust Technology) for Intel systems, and fTPM (Firmware Trusted Platform Module) for AMD ones.</p><p>Secure Boot and TPM requirements themselves are part of the toolkit that many modern online games use to keep cheaters out. We've seen <a href="https://www.pcgamer.com/hardware/battlefield-6-requires-secure-boot-to-run-and-its-coming-to-more-games-soon-including-call-of-duty-black-ops-7-heres-what-it-is-why-linux-gamers-are-mad-about-it-and-how-to-enable-it/" target="_blank">requirements for both</a>, for instance, to play Battlefield 6. Secure Boot is what gives your firmware and kernel themselves signatures to ensure they are legit, and the TPM helps verify that everything boots up in order with no extra, malicious software or firmware thrust into the boot process. Intel PTT and AMD fTPM are implementations of TPM.</p><p>The key confusion with COD MW4 is that just having Secure Boot and TPM 2.0 doesn't seem to be enough on its own—old versions of PTT or fTPM won't work.</p><p>Activision says that, <a href="https://support.activision.com/articles/trusted-platform-module-and-secure-boot#:~:text=If%20your%20Manufacturer%20Version%20is%20INTC%20302.12.*.*%20or%20INTC%20303.12.*.*%2C%20where%20*%20represents%20any%20number%2C%20your%20motherboard%20may%20require%20a%20firmware%20update." target="_blank">for Intel systems</a>, if your TPM version is some form of 302.1.2.X or 303.1.2.X (where X can be anything), your motherboard may require a firmware update. </p><p><a href="https://support.activision.com/articles/trusted-platform-module-and-secure-boot#:~:text=AMD%20motherboards%20with%20a%20Manufacturer%20Version%203.*.0.*%20(Figure%2011)%2C%20where%20*%20represents%20any%20number%2C%20are%20not%20compatible%20with%20applicable%20Call%20of%20Duty%20games%20and%20require%20a%20firmware%20update%20to%20meet%20compliance." target="_blank">For AMD ones</a>, 3.X.0.X versions aren't compatible and will require a firmware update.</p><p>To update either PTT or fTPM, you need to update your BIOS.</p><p>To check your TPM version, press Win+R and run 'tpm.msc'. It should show you your version under 'TPM Manufacturer Information' at the bottom. If your TPM info window says one of those aforementioned versions you'll need to update your BIOS. </p><p>Bear in mind that this isn't just a problem with very old CPUs, as we've had two colleagues here at PC Gamer run into the issue despite running an Intel Core i5 12400KF and AMD Ryzen 5 5800X, respectively. Though they have admitted their BIOS versions were many years old.</p><p>If you've not updated your BIOS in a very long time, it's probably a good idea to do so before COD drops. One can fix vulnerabilities and even sometimes resolve pretty serious stability and longevity issues, as was the case with Intel's 14th Gen chips a few years back. </p><h2 class="article-body__section" id="section-how-to-update-your-bios"><span>How to update your BIOS</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1911px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YCfD5BENn8KFH9od8t5TdT" name="image (4)" alt="A screenshot of COD: MW4, aiming down-range at a target." src="https://cdn.mos.cms.futurecdn.net/YCfD5BENn8KFH9od8t5TdT-1920-80.jpg" mos="" align="middle" fullscreen="" width="1911" height="1075" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><ol start="1"><li><strong>Download the most recent stable version for your specific motherboard from its manufacturer's website. </strong></li><li><strong>Store it on a USB drive and plug that directly into your motherboard at the back of your PC</strong></li><li><strong>Reboot and head into your BIOS. </strong></li><li><strong>Find your BIOS update section</strong></li><li><strong>Choose to do a local/offline install</strong></li><li><strong>Select your newly downloaded BIOS file to install from.</strong></li></ol><p>Oh, and then back away slowly, and don't trip over that power cable while it installs. Kidding, it'll be fine—just take your time and do everything by the book.</p><p>If you're struggling to actually get into your BIOS via the traditional Del/F2 route—if your monitor stays black during POST for example—then you can hold down the Shift key while you restart your PC from the Windows shutdown menu. This will boot into a start menu that will allow you to go into an advanced options screen that lets you boot into your UEFI BIOS.</p><h2 class="article-body__section" id="section-how-to-get-set-up-after-your-bios-update"><span>How to get set up after your BIOS update</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="FWTAmnRbksM8Lg3gqrnMUM" name="modern-warfare-4-release-times" alt="Modern Warfare 4 release times - Soldiers on a helicopter" src="https://cdn.mos.cms.futurecdn.net/FWTAmnRbksM8Lg3gqrnMUM-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><p>Bear in mind that updating your BIOS resets everything, so you might need to adjust some settings to get things back how they were.</p><p>Most important, given the reason we're doing all this, is checking you have Secure Boot, TPM, and PTT/fTPM enabled. These settings will usually be found in a Security or Boot section, but the exact location will depend on your motherboard and BIOS.</p><p>You'll also want to check your memory profile, which adjusts your RAM speed and timings. If you have a specific one you selected previously, you'll have to find that again, but for most people simply enabling XMP (for Intel) or EXPO (for AMD) will do, as these should get your RAM running at faster timings. Most BIOSes should have an obvious toggle for this, though you might have to navigate to a page containing your memory settings.</p><p>You might also want to adjust your fan profiles if you prefer a manual curve. It will be worth checking your primary boot drive is recognised and set with first boot priority, too. And lastly, you should check Resizable BAR (ReBAR) is enabled, which is usually found in Advanced or PCIe menus.</p><p>Once all is in order, you can boot up into Windows and, with any luck, get into COD without issue.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/call-of-duty/dont-get-hit-with-the-bios-update-hammer-for-cod-mw4-like-my-colleagues-heres-how-to-ensure-you-can-play-multiplayer-and-dmz/</link>
                                                                            <description>
                            <![CDATA[ TPM and Secure Boot requirements strike again. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">fuLVqZPDd6qztEN2c7oHkV</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ADf8vRbBtWTiViXXLTEKWT-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 21 Oct 2026 15:55:30 +0000</pubDate>                                                                                                                                <updated>Wed, 21 Oct 2026 21:41:01 +0000</updated>
                                                                                                                                            <category><![CDATA[Call of Duty]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                    <category><![CDATA[FPS]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob got his hands on a gaming PC for the first time when he was about 12 years old. He swiftly realised the local PC repair store had ripped him off with his build and vowed never to let another soul build his rig again. With this vow, Jacob the hardware junkie was born. Since then, Jacob&#039;s led a double-life as part-hardware geek, part-philosophy nerd, first working as a Hardware Writer for PCGamesN in 2020, then working towards a PhD in Philosophy for a few years while freelancing on the side for sites such as TechRadar, Pocket-lint, and yours truly, PC Gamer. Eventually, he gave up the ruthless mercenary life to join the world&#039;s #1 PC Gaming site full-time. It&#039;s definitely not an ego thing, he assures us.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/ADf8vRbBtWTiViXXLTEKWT-1920-80.jpg">
                                                            <media:credit><![CDATA[Activision]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A screenshot of the COD: MW4 operator selection screen.]]></media:description>                                                            <media:text><![CDATA[A screenshot of the COD: MW4 operator selection screen.]]></media:text>
                                <media:title type="plain"><![CDATA[A screenshot of the COD: MW4 operator selection screen.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ADf8vRbBtWTiViXXLTEKWT-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you're itching to get your pupils up against <a href="https://www.pcgamer.com/games/call-of-duty/call-of-duty-modern-warfare-4-review-in-progress-a-campaign-you-shouldnt-skip" target="_blank">Call of Duty: Modern Warfare 4</a> on PC at launch on Friday, you should probably double-check your system is up to date. We've already had a couple of colleagues here flung against the wall of requirements with the new COD, requiring a BIOS update to play online.</p><p>That's because <a href="https://support.activision.com/articles/trusted-platform-module-and-secure-boot" target="_blank">Activision explains</a> that both TPM 2.0 and Secure Boot are required to play any online game mode (multiplayer or DMZ). More specifically, though, you must have a new enough version of PTT (Platform Trust Technology) for Intel systems, and fTPM (Firmware Trusted Platform Module) for AMD ones.</p><p>Secure Boot and TPM requirements themselves are part of the toolkit that many modern online games use to keep cheaters out. We've seen <a href="https://www.pcgamer.com/hardware/battlefield-6-requires-secure-boot-to-run-and-its-coming-to-more-games-soon-including-call-of-duty-black-ops-7-heres-what-it-is-why-linux-gamers-are-mad-about-it-and-how-to-enable-it/" target="_blank">requirements for both</a>, for instance, to play Battlefield 6. Secure Boot is what gives your firmware and kernel themselves signatures to ensure they are legit, and the TPM helps verify that everything boots up in order with no extra, malicious software or firmware thrust into the boot process. Intel PTT and AMD fTPM are implementations of TPM.</p><p>The key confusion with COD MW4 is that just having Secure Boot and TPM 2.0 doesn't seem to be enough on its own—old versions of PTT or fTPM won't work.</p><p>Activision says that, <a href="https://support.activision.com/articles/trusted-platform-module-and-secure-boot#:~:text=If%20your%20Manufacturer%20Version%20is%20INTC%20302.12.*.*%20or%20INTC%20303.12.*.*%2C%20where%20*%20represents%20any%20number%2C%20your%20motherboard%20may%20require%20a%20firmware%20update." target="_blank">for Intel systems</a>, if your TPM version is some form of 302.1.2.X or 303.1.2.X (where X can be anything), your motherboard may require a firmware update. </p><p><a href="https://support.activision.com/articles/trusted-platform-module-and-secure-boot#:~:text=AMD%20motherboards%20with%20a%20Manufacturer%20Version%203.*.0.*%20(Figure%2011)%2C%20where%20*%20represents%20any%20number%2C%20are%20not%20compatible%20with%20applicable%20Call%20of%20Duty%20games%20and%20require%20a%20firmware%20update%20to%20meet%20compliance." target="_blank">For AMD ones</a>, 3.X.0.X versions aren't compatible and will require a firmware update.</p><p>To update either PTT or fTPM, you need to update your BIOS.</p><p>To check your TPM version, press Win+R and run 'tpm.msc'. It should show you your version under 'TPM Manufacturer Information' at the bottom. If your TPM info window says one of those aforementioned versions you'll need to update your BIOS. </p><p>Bear in mind that this isn't just a problem with very old CPUs, as we've had two colleagues here at PC Gamer run into the issue despite running an Intel Core i5 12400KF and AMD Ryzen 5 5800X, respectively. Though they have admitted their BIOS versions were many years old.</p><p>If you've not updated your BIOS in a very long time, it's probably a good idea to do so before COD drops. One can fix vulnerabilities and even sometimes resolve pretty serious stability and longevity issues, as was the case with Intel's 14th Gen chips a few years back. </p><h2 class="article-body__section" id="section-how-to-update-your-bios"><span>How to update your BIOS</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1911px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YCfD5BENn8KFH9od8t5TdT" name="image (4)" alt="A screenshot of COD: MW4, aiming down-range at a target." src="https://cdn.mos.cms.futurecdn.net/YCfD5BENn8KFH9od8t5TdT-1920-80.jpg" mos="" align="middle" fullscreen="" width="1911" height="1075" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><ol start="1"><li><strong>Download the most recent stable version for your specific motherboard from its manufacturer's website. </strong></li><li><strong>Store it on a USB drive and plug that directly into your motherboard at the back of your PC</strong></li><li><strong>Reboot and head into your BIOS. </strong></li><li><strong>Find your BIOS update section</strong></li><li><strong>Choose to do a local/offline install</strong></li><li><strong>Select your newly downloaded BIOS file to install from.</strong></li></ol><p>Oh, and then back away slowly, and don't trip over that power cable while it installs. Kidding, it'll be fine—just take your time and do everything by the book.</p><p>If you're struggling to actually get into your BIOS via the traditional Del/F2 route—if your monitor stays black during POST for example—then you can hold down the Shift key while you restart your PC from the Windows shutdown menu. This will boot into a start menu that will allow you to go into an advanced options screen that lets you boot into your UEFI BIOS.</p><h2 class="article-body__section" id="section-how-to-get-set-up-after-your-bios-update"><span>How to get set up after your BIOS update</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="FWTAmnRbksM8Lg3gqrnMUM" name="modern-warfare-4-release-times" alt="Modern Warfare 4 release times - Soldiers on a helicopter" src="https://cdn.mos.cms.futurecdn.net/FWTAmnRbksM8Lg3gqrnMUM-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision)</span></figcaption></figure><p>Bear in mind that updating your BIOS resets everything, so you might need to adjust some settings to get things back how they were.</p><p>Most important, given the reason we're doing all this, is checking you have Secure Boot, TPM, and PTT/fTPM enabled. These settings will usually be found in a Security or Boot section, but the exact location will depend on your motherboard and BIOS.</p><p>You'll also want to check your memory profile, which adjusts your RAM speed and timings. If you have a specific one you selected previously, you'll have to find that again, but for most people simply enabling XMP (for Intel) or EXPO (for AMD) will do, as these should get your RAM running at faster timings. Most BIOSes should have an obvious toggle for this, though you might have to navigate to a page containing your memory settings.</p><p>You might also want to adjust your fan profiles if you prefer a manual curve. It will be worth checking your primary boot drive is recognised and set with first boot priority, too. And lastly, you should check Resizable BAR (ReBAR) is enabled, which is usually found in Advanced or PCIe menus.</p><p>Once all is in order, you can boot up into Windows and, with any luck, get into COD without issue.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Overwatch's director discusses why King's Row is so iconic, but admits that 'every single map in the game gets a vote' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>After Team 4 added map voting to <a href="https://www.pcgamer.com/uk/overwatch/">Overwatch</a> one thing became crystal clear: everyone wants to say they're a free thinker who doesn't follow the crowd until King's Row turns up, and then it's a landslide. </p><p>King's Row is widely considered to be the best map in Overwatch, I certainly think so. It's one of the few maps that's fun to play on defense and attack, as it doesn't seem overly weighted to either side, at least not until the very end. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2QutxU4Ad4pJWKkyfNgAu" name="Map_KingsRow" alt="Map_KingsRow" src="https://cdn.mos.cms.futurecdn.net/2QutxU4Ad4pJWKkyfNgAu-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blizzard Entertainment)</span></figcaption></figure><p>"There's high ground there, but there's not oppressive high ground," Aaron Keller, game director of Overwatch explained to me after I asked him what, in his mind, made this such an iconic map. "There's areas for a lot of different heroes to do their things. It's fairly tight and close, so you're not going to get out of the action for too long.</p><p>"Another thing that I think about a lot with King's Row—sorry this could go on for a really long time—I think that there's something about being able to play through most of the space in a map that I think is just more satisfying for both teams. It can feel really good to hold a team at spawn, but you don't want that every game. You want to feel like it's a close [game]."  </p><p>As someone who mostly plays support heroes and has put a hell of a lot of time into Ana I can tell you that King's Row is my favourite map thanks to all of its clear sightlines and the fact that tanks never stray too far away from the payload, although the mid stretch can get a bit dicey at times. What I love the most, however, is how you're almost always coming face to face with the enemy providing "big team fight moments" the whole way through the map. But not everyone will agree with me.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="CAFbWN6bqsH97gKvX2yM74" name="The_Plan_-_5_bmp_jpgcopy.jpg" alt="Roadhog and Junkrat" src="https://cdn.mos.cms.futurecdn.net/CAFbWN6bqsH97gKvX2yM74-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blizzard)</span></figcaption></figure><p>"I do think sometimes there can be a sort of agreement that happens as more people vote for King's Row," Keller says. "It just starts to get some momentum there." There are a good deal of people who either vote with what the group wants or just don't vote at all, but every so often players go against the grain. </p><p>"Every single map in the game gets a vote," Keller says. "For some people Clash or 2CP is their favourite mode in Overwatch. Even though we think that there's some issues with them, but I think the playerbase is more varied than we think sometimes." I don't doubt that some people love 2CP. Even I wouldn't say I minded it much, although its second objective had some serious issues, which was one of the reasons as to why it ended up getting pulled from the map rotation. </p><p>I'm not sure whether Team 4 has tried to recreate the magic that they captured with King's Row, although Neon Junction sort of feels like it but in reverse. But that's alright, because there's plenty of other good maps to be enjoyed, although I know where my voting allegiances lie. </p><div class="product"><a data-dimension112="5587b0da-cca5-11f1-98c1-bf12a4bfe320" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="5587b0da-cca5-11f1-98c1-bf12a4bfe320" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/overwatchs-director-discusses-why-kings-row-is-so-iconic-but-admits-that-every-single-map-in-the-game-gets-a-vote/</link>
                                                                            <description>
                            <![CDATA[ What's the best map in Overwatch? And why is it King's Row? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Lxz8RHQ8tKNrMycA2AMJg9</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/5sdLNAMP5KhGxtUQqZ2K53-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 20 Oct 2026 16:44:14 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Elie Gould ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/5HPuSiRgqza2PQESSqE7gG-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Elie is a news writer with an unhealthy love of horror games—even though their greatest fear is being chased. When they&#039;re not screaming or hiding, there&#039;s a good chance you&#039;ll find them testing their metal in metroidvanias or just admiring their Pokemon TCG collection. Elie has previously worked at TechRadar Gaming as a staff writer and studied at JOMEC in International Journalism and Documentaries – spending their free time filming short docs about Smash Bros. or any indie game that crossed their path.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/5sdLNAMP5KhGxtUQqZ2K53-1920-80.jpg">
                                                            <media:credit><![CDATA[Blizzard]]></media:credit>
                                                                                                                                                                                                                                                                                                                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/5sdLNAMP5KhGxtUQqZ2K53-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>After Team 4 added map voting to <a href="https://www.pcgamer.com/uk/overwatch/">Overwatch</a> one thing became crystal clear: everyone wants to say they're a free thinker who doesn't follow the crowd until King's Row turns up, and then it's a landslide. </p><p>King's Row is widely considered to be the best map in Overwatch, I certainly think so. It's one of the few maps that's fun to play on defense and attack, as it doesn't seem overly weighted to either side, at least not until the very end. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2QutxU4Ad4pJWKkyfNgAu" name="Map_KingsRow" alt="Map_KingsRow" src="https://cdn.mos.cms.futurecdn.net/2QutxU4Ad4pJWKkyfNgAu-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blizzard Entertainment)</span></figcaption></figure><p>"There's high ground there, but there's not oppressive high ground," Aaron Keller, game director of Overwatch explained to me after I asked him what, in his mind, made this such an iconic map. "There's areas for a lot of different heroes to do their things. It's fairly tight and close, so you're not going to get out of the action for too long.</p><p>"Another thing that I think about a lot with King's Row—sorry this could go on for a really long time—I think that there's something about being able to play through most of the space in a map that I think is just more satisfying for both teams. It can feel really good to hold a team at spawn, but you don't want that every game. You want to feel like it's a close [game]."  </p><p>As someone who mostly plays support heroes and has put a hell of a lot of time into Ana I can tell you that King's Row is my favourite map thanks to all of its clear sightlines and the fact that tanks never stray too far away from the payload, although the mid stretch can get a bit dicey at times. What I love the most, however, is how you're almost always coming face to face with the enemy providing "big team fight moments" the whole way through the map. But not everyone will agree with me.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="CAFbWN6bqsH97gKvX2yM74" name="The_Plan_-_5_bmp_jpgcopy.jpg" alt="Roadhog and Junkrat" src="https://cdn.mos.cms.futurecdn.net/CAFbWN6bqsH97gKvX2yM74-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blizzard)</span></figcaption></figure><p>"I do think sometimes there can be a sort of agreement that happens as more people vote for King's Row," Keller says. "It just starts to get some momentum there." There are a good deal of people who either vote with what the group wants or just don't vote at all, but every so often players go against the grain. </p><p>"Every single map in the game gets a vote," Keller says. "For some people Clash or 2CP is their favourite mode in Overwatch. Even though we think that there's some issues with them, but I think the playerbase is more varied than we think sometimes." I don't doubt that some people love 2CP. Even I wouldn't say I minded it much, although its second objective had some serious issues, which was one of the reasons as to why it ended up getting pulled from the map rotation. </p><p>I'm not sure whether Team 4 has tried to recreate the magic that they captured with King's Row, although Neon Junction sort of feels like it but in reverse. But that's alright, because there's plenty of other good maps to be enjoyed, although I know where my voting allegiances lie. </p><div class="product"><a data-dimension112="5587b0da-cca5-11f1-98c1-bf12a4bfe320" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="5587b0da-cca5-11f1-98c1-bf12a4bfe320" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'We f**ked up': 1 day into Wardogs Season 2, the Blue team bribery bonus is being dropped ]]></title>
                                                                                                <dc:content><![CDATA[ <p>One day into <a href="https://www.pcgamer.com/wardogs/" target="_blank">Wardogs</a> Season 2, Bulkhead Interactive has decided to scrap the bribery plan it <a href="https://www.pcgamer.com/games/fps/wardogs-will-bribe-players-with-cash-and-xp-to-pick-blue-team-in-season-2/" target="_blank">announced last week</a> as a way to help convince players to join the Blue team. The problem isn't that the plan didn't work—it actually worked far too well.</p><h2 id="the-plan">THE PLAN:</h2><ul><li><em>"Lonestar cash and XP bonus. Season 2 only. New Bakurani spawn." </em></li><li><em>"We're looking at how we can help the win rate of a certain team." -Bulkhead CEO Joe Brammer (via "Road to Season 2" devlog) </em></li></ul><h2 id="the-reality">THE REALITY:</h2><ul><li><em>"We were wrong. We fucked up," Brammer admitted in a new video (via RPS). </em></li><li><em>Blue team is now winning "by far, the most," Brammer said, even though the actual boosts are not terribly substantial: 5% Lonestar cash and 2.5% XP.</em></li><li><em>"Median" players didn't get much from those percentages, but Bulkhead found that "top tier" players were seeing significant boosts</em></li><li><em>Bottom line: it's gone.</em></li></ul><p>"We're removing the Blue XP bonus, the cash bonus. We were wrong," Brammer said. Bulkhead co-founder Howard Philpott added that the studio thought Blue team bonus might work out this way, but said "I don't think we expected it to be this much of a swing."</p><p>I can't say I'm terribly surprised by the outcome. I'm not a Wardogs player, but I have been around long enough to know how these things go: If you dangle a competitive edge in front of gamers, they're going to jump for it. Percentage boosts are especially risky because they're performance-based and so much more likely to go spinning out of control, especially in the hands of, as Brammer put it, "tryhards." </p><p>And it's not just the extra XP and cash being earned that's a problem: Philpott said the bonus is also "impacting people joining games and starting games," presumably because if they can't be a Blue, they'll leave and try their luck with another game.</p><p>(Quick side note: I'm not a fan of the term 'tryhard.' Of course I'm trying hard! Why wouldn't I be? My nephew called me a tryhard once and I told him that maybe if he tried harder he wouldn't get his ass kicked so hard. He was 12 and I got some disapproving looks from other people at the Christmas party, but I stand by it.)</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2110837820554178620"><p lang="en" dir="ltr">We're holding our hands up and we got a few things wrong.We are pushing a backend update: ▫️Removing Blue Cash &amp; XP Bonus▫️Driver Progression Fixes▫️Fixing Driver Exploit Preventing lots of players from accessing tanks too early▫️Coming Soon: Limited Mode Servers (No Power Weapons &amp; Vehicles)Full details in the video here:<a href="https://twitter.com/cantworkitout/status/2110837820554178620">October 15, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>PC Gamer's Morgan Park, who is a Wardogs guy, also made the call when this plan was unveiled last week: "XP and cash bribes are a drastic move, but should have a real impact. It's unclear how big these boosts will be, but I expect Blue will instantly become the most popular team by a wide margin in Season 2." </p><p>Predictable as this outcome was, I don't see it as a particularly egregious misstep. Brammer called it an "experiment," and sometimes that's what you have to do—and the early stages of a massively popular videogame with teething issues can definitely be one of those times. Brammer also noted that other changes aimed at rebalancing things, including new spawns on the Bakurani map, have proven effective and will remain.</p><p>Alongside the removal of the Blue team bribery, Bulkhead is also fixing issues with driver progression, and is fixing a driver exploit that's letting players access tanks too quickly: Players who are "very clearly" taking advantage of the exploit (less than 1,000 in total, according to Brammer) will be given a 24-hour ban from the game and have their cash and XP wiped.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><div class="product"><a data-dimension112="24ccf5c2-c999-11f1-84fe-091d39e23898" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="24ccf5c2-c999-11f1-84fe-091d39e23898" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/we-f-ked-up-1-day-into-wardogs-season-2-the-blue-team-bribery-bonus-is-being-dropped/</link>
                                                                            <description>
                            <![CDATA[ Bulkhead's effort to make life better for the Blues worked a little too well. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">eWCfuPJeEyv34gntdUTdfk</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/k5RibPxese5kZiSt4xZbiV-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 16 Oct 2026 19:42:52 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                <author><![CDATA[ andy.chalk@pcgamer.com (Andy Chalk) ]]></author>                    <dc:creator><![CDATA[ Andy Chalk ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/hkTeZoDeGrvhQZtrNGPkbB-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/k5RibPxese5kZiSt4xZbiV-1920-80.jpg">
                                                            <media:credit><![CDATA[Bulkhead Interactive]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Wardogs devs holding their hands up and admitting they got it wrong]]></media:description>                                                            <media:text><![CDATA[Wardogs devs holding their hands up and admitting they got it wrong]]></media:text>
                                <media:title type="plain"><![CDATA[Wardogs devs holding their hands up and admitting they got it wrong]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/k5RibPxese5kZiSt4xZbiV-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>One day into <a href="https://www.pcgamer.com/wardogs/" target="_blank">Wardogs</a> Season 2, Bulkhead Interactive has decided to scrap the bribery plan it <a href="https://www.pcgamer.com/games/fps/wardogs-will-bribe-players-with-cash-and-xp-to-pick-blue-team-in-season-2/" target="_blank">announced last week</a> as a way to help convince players to join the Blue team. The problem isn't that the plan didn't work—it actually worked far too well.</p><h2 id="the-plan">THE PLAN:</h2><ul><li><em>"Lonestar cash and XP bonus. Season 2 only. New Bakurani spawn." </em></li><li><em>"We're looking at how we can help the win rate of a certain team." -Bulkhead CEO Joe Brammer (via "Road to Season 2" devlog) </em></li></ul><h2 id="the-reality">THE REALITY:</h2><ul><li><em>"We were wrong. We fucked up," Brammer admitted in a new video (via RPS). </em></li><li><em>Blue team is now winning "by far, the most," Brammer said, even though the actual boosts are not terribly substantial: 5% Lonestar cash and 2.5% XP.</em></li><li><em>"Median" players didn't get much from those percentages, but Bulkhead found that "top tier" players were seeing significant boosts</em></li><li><em>Bottom line: it's gone.</em></li></ul><p>"We're removing the Blue XP bonus, the cash bonus. We were wrong," Brammer said. Bulkhead co-founder Howard Philpott added that the studio thought Blue team bonus might work out this way, but said "I don't think we expected it to be this much of a swing."</p><p>I can't say I'm terribly surprised by the outcome. I'm not a Wardogs player, but I have been around long enough to know how these things go: If you dangle a competitive edge in front of gamers, they're going to jump for it. Percentage boosts are especially risky because they're performance-based and so much more likely to go spinning out of control, especially in the hands of, as Brammer put it, "tryhards." </p><p>And it's not just the extra XP and cash being earned that's a problem: Philpott said the bonus is also "impacting people joining games and starting games," presumably because if they can't be a Blue, they'll leave and try their luck with another game.</p><p>(Quick side note: I'm not a fan of the term 'tryhard.' Of course I'm trying hard! Why wouldn't I be? My nephew called me a tryhard once and I told him that maybe if he tried harder he wouldn't get his ass kicked so hard. He was 12 and I got some disapproving looks from other people at the Christmas party, but I stand by it.)</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2110837820554178620"><p lang="en" dir="ltr">We're holding our hands up and we got a few things wrong.We are pushing a backend update: ▫️Removing Blue Cash &amp; XP Bonus▫️Driver Progression Fixes▫️Fixing Driver Exploit Preventing lots of players from accessing tanks too early▫️Coming Soon: Limited Mode Servers (No Power Weapons &amp; Vehicles)Full details in the video here:<a href="https://twitter.com/cantworkitout/status/2110837820554178620">October 15, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>PC Gamer's Morgan Park, who is a Wardogs guy, also made the call when this plan was unveiled last week: "XP and cash bribes are a drastic move, but should have a real impact. It's unclear how big these boosts will be, but I expect Blue will instantly become the most popular team by a wide margin in Season 2." </p><p>Predictable as this outcome was, I don't see it as a particularly egregious misstep. Brammer called it an "experiment," and sometimes that's what you have to do—and the early stages of a massively popular videogame with teething issues can definitely be one of those times. Brammer also noted that other changes aimed at rebalancing things, including new spawns on the Bakurani map, have proven effective and will remain.</p><p>Alongside the removal of the Blue team bribery, Bulkhead is also fixing issues with driver progression, and is fixing a driver exploit that's letting players access tanks too quickly: Players who are "very clearly" taking advantage of the exploit (less than 1,000 in total, according to Brammer) will be given a 24-hour ban from the game and have their cash and XP wiped.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><div class="product"><a data-dimension112="24ccf5c2-c999-11f1-84fe-091d39e23898" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="24ccf5c2-c999-11f1-84fe-091d39e23898" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Modern Warfare 4 release times and early access explained ]]></title>
                                                                                                <dc:content><![CDATA[ <div  class="fancy-box"><div class="fancy_box-title">Key deets</div><div class="fancy_box_body"><p class="fancy-box__body-text">💀 If you preorder Modern Warfare 4 digitally, you'll get early access to the campaign starting October 16 and DMZ on October 20.</p><p class="fancy-box__body-text">💀 The full release is on October 23 at midnight local time.</p><p class="fancy-box__body-text">💀 PC preload is already live.</p></div></div><p><a href="https://www.pcgamer.com/call-of-duty-modern-warfare-4/" target="_blank">Call of Duty: Modern Warfare 4</a> is releasing soon, but also features early access for many of its modes, including its campaign and the hotly anticipated revival of the DMZ extraction shooter. </p><p>To get early access to both the campaign and DMZ, you need to preorder the game digitally, otherwise, you'll be able to play on October 23. Activision hasn't revealed an exact time for the campaign early access unlock on the 16th, but the PC preload is already live. </p><p>There also hasn't been any official info about the DMZ early access release time on October 20. However, some sources predict it will be 10 am PT (1 pm ET/6 pm BST). What we do know is that:</p><ul><li>Modern Warfare 4 will release on October 23 at midnight local time, wherever you are.</li></ul><p>You'll need 115GB for the game's storage and you can find the official system requirements to run it on the <a href="https://store.steampowered.com/app/4435490/Call_of_Duty_Modern_Warfare_4/" target="_blank">Steam</a> page.</p><p>As we draw closer to the DMZ unlock and the full release, I'll update this article with any official time announcements that Activision drops.</p><div class="product"><a data-dimension112="e40ebbfe-c95e-11f1-aa05-eb35ff15d662" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="e40ebbfe-c95e-11f1-aa05-eb35ff15d662" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/call-of-duty/modern-warfare-4-release-date-launch-times-early-access/</link>
                                                                            <description>
                            <![CDATA[ Here's what you can play and when. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">TAP6GTVorWPe8CNRRsK5bi</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/FWTAmnRbksM8Lg3gqrnMUM-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 16 Oct 2026 12:44:53 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Call of Duty]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                    <category><![CDATA[FPS]]></category>
                                                                                                                    <dc:creator><![CDATA[ Sean Martin ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/rw7hUY3Y2mxZJtwx3ePdwF-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/FWTAmnRbksM8Lg3gqrnMUM-1920-80.jpg">
                                                            <media:credit><![CDATA[Activision]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Modern Warfare 4 release times - Soldiers on a helicopter]]></media:description>                                                            <media:text><![CDATA[Modern Warfare 4 release times - Soldiers on a helicopter]]></media:text>
                                <media:title type="plain"><![CDATA[Modern Warfare 4 release times - Soldiers on a helicopter]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/FWTAmnRbksM8Lg3gqrnMUM-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Key deets</div><div class="fancy_box_body"><p class="fancy-box__body-text">💀 If you preorder Modern Warfare 4 digitally, you'll get early access to the campaign starting October 16 and DMZ on October 20.</p><p class="fancy-box__body-text">💀 The full release is on October 23 at midnight local time.</p><p class="fancy-box__body-text">💀 PC preload is already live.</p></div></div><p><a href="https://www.pcgamer.com/call-of-duty-modern-warfare-4/" target="_blank">Call of Duty: Modern Warfare 4</a> is releasing soon, but also features early access for many of its modes, including its campaign and the hotly anticipated revival of the DMZ extraction shooter. </p><p>To get early access to both the campaign and DMZ, you need to preorder the game digitally, otherwise, you'll be able to play on October 23. Activision hasn't revealed an exact time for the campaign early access unlock on the 16th, but the PC preload is already live. </p><p>There also hasn't been any official info about the DMZ early access release time on October 20. However, some sources predict it will be 10 am PT (1 pm ET/6 pm BST). What we do know is that:</p><ul><li>Modern Warfare 4 will release on October 23 at midnight local time, wherever you are.</li></ul><p>You'll need 115GB for the game's storage and you can find the official system requirements to run it on the <a href="https://store.steampowered.com/app/4435490/Call_of_Duty_Modern_Warfare_4/" target="_blank">Steam</a> page.</p><p>As we draw closer to the DMZ unlock and the full release, I'll update this article with any official time announcements that Activision drops.</p><div class="product"><a data-dimension112="e40ebbfe-c95e-11f1-aa05-eb35ff15d662" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="e40ebbfe-c95e-11f1-aa05-eb35ff15d662" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'There is no secret sauce' to a successful live service game according to Overwatch's associate game director, but knowing your audience is a good start ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Not many live service games have <a href="https://www.pcgamer.com/games/fps/looking-back-on-10-years-of-overwatch-the-promises-kept-and-where-team-4-goes-from-here/">stood the test of time quite like Overwatch</a>. 10 years in and it's still been able to retain its playerbase, maintain momentum, and even ramp it up. How, you ask? Well, besides having really cute skins and a very enticing game loop, Team 4 figured out exactly where <a href="https://www.pcgamer.com/uk/overwatch/">Overwatch</a> needed to stand years ago. </p><p>"Overwatch exists in an incredibly competitive space among live service shooters," Overwatch's game director Aaron Keller tells me. "Some of the biggest games in the world are here."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jkRdksMSaxqGoauCPv8jkD" name="overwatch s3 shion 3" alt="A promotional Overwatch gameplay screenshot of new hero Shion. The robot woman's red eyes light up as she is surrounded by bright blue lightning." src="https://cdn.mos.cms.futurecdn.net/jkRdksMSaxqGoauCPv8jkD-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blizzard Entertainment)</span></figcaption></figure><p>To have (and crucially, maintain) a successful live service game is the golden goose egg of this industry right now. With publishers like Sony trying to force it upon countless studios before <a href="https://www.pcgamer.com/games/after-cancelling-8-of-the-12-live-service-games-sony-promised-to-release-by-2025-playstation-studios-boss-says-the-number-doesnt-really-matter-what-is-important-to-me-is-having-a-diverse-set-of-player-experiences/">pulling the plug on eight out of 12 projects</a> when things start to go sideways. Even games that manage to land with an eager audience like Arc Raiders can struggle to maintain momentum. But for some, like Overwatch, the live service model has worked, so what's the secret? </p><p>"That's a big question," associate game director Alec Dawson says. "I think some of the things we've learned is to shut away fear as much as possible and push beyond, experiment within that experience. But what it really boils down to is coming to work each morning and making good decisions every day. We've lived that over the last two years." But unfortunately for any eager Sony execs reading this, "there's no secret sauce in particular." </p><p>"It's incredibly hard to make something that players can interact with every day for years on end," Keller adds. "You can get 95% of the way there, and your game could still die three months after release. It is much, much harder to come up with that initial sort of experience than I think a lot of people give it credit for. But once you've done it, you've kind of just started the race." </p><p>Free time and cash are both at a premium for most players, and with so many options available, games studios need to offer up exactly what they're looking for. Because if they don't, someone else will. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.51%;"><img id="xAPcJQWTXPH6qy4e7Wjeeg" name="roadhog-screenshot-003.jpg" alt="Overwatch 2 hero Roadhog" src="https://cdn.mos.cms.futurecdn.net/xAPcJQWTXPH6qy4e7Wjeeg-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1085" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p>"Our players really want novelty and they really want variety, but they want it inside of a competitive framework," Keller explains. "If you look at other games on the market, there's ones that are really just more about the novelty side of the game, and there's other ones that are really just about straight up competition. There's not a lot of change in those games. We occupy this really unique spot in the middle." </p><p>Marvel Rivals came the closest to taking Overwatch's spot, but that didn't last long as it cemented itself as a casual game which is more concerned with <a href="https://www.pcgamer.com/games/third-person-shooter/we-balance-for-fun-first-and-foremost-marvel-games-executive-producer-discusses-marvel-rivals-priorities-and-why-competitive-balancing-comes-second/">balancing for fun</a>. Alternatively, Overwatch offers higher skill ceilings and a "sense that your time was worthwhile in the experience," Dawson explains. "That the rules and structure of the sport were fair towards the outcome." </p><p>This isn't to say that Team 4 have uncovered the secret to perfect game balancing, I'm not sure that'll ever be possible, but the idea still stands that players should be able to take away some kind of lesson from each game, lessons that'll help form them into a more skilled player. Even if that lesson is to 'don't solo queue at 2 am'. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PTJNn6U2t7PhpamQWpCfQn" name="overwatch tier list hero stats" alt="Overwatch tier list: Sigma listing various characters into the air using his ultimate." src="https://cdn.mos.cms.futurecdn.net/PTJNn6U2t7PhpamQWpCfQn-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blizzard)</span></figcaption></figure><p>"There's a design value at Blizzard called control is king," Keller adds. The idea that players want to feel like they're in control of everything their hero does and therefore experience the cool moments that come from that. Overwatch's newest hero Doctrine is "a powerful example of something like that." </p><div><blockquote><p>I can't wait for players to see some of the archetypes that are coming next season, and especially Season 1 next year.</p><p>Aaron Keller, Game Director </p></blockquote></div><p>Doctrine offers two experiences: a primal and slightly simplistic one in which it feels good to just use his base kit to land shots. Then there's a more nuanced version, which offers players the chance to raise the skill ceiling with his Infuse mechanic. </p><p>"It's so satisfying to be holding down Infuse while you're trying to line up your shot, as the beam gets bigger, you get that sound effect, then you pull the trigger, and you see that connection. It's so satisfying. The hero team, and the audio team, the VFX animations, everybody kind of comes together to have that one moment where control really is king. That moment just needs to feel as good and as visceral as possible." </p><p>Doctrine is the only hero I've played since the new season came out last week, and I can confirm his kit is just as good as Keller makes it sound. It's a testimony to Team 4 that 54 heroes later they're still able to offer players something that feels unique, specialised, and just a hell of a lot of fun to play. </p><p>"One of the Blizzard greats, Chris Metzen, always described our company as a hero factory," Keller says. "This is just what we do, and you can see it in a lot of our other games, from StarCraft to Warcraft to Diablo, just all these characters that are really larger than life. It's what our fans can really throw their passion behind. </p><p>"I think that Overwatch really carries that torch forward. We're trying to make these amazing fantasies that people can just jump into and live out. I can't wait for players to see some of the archetypes that are coming next season, and especially Season 1 next year." </p><div class="product"><a data-dimension112="11a95c92-c890-11f1-99dd-6149cecc8c45" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="11a95c92-c890-11f1-99dd-6149cecc8c45" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/there-is-no-secret-sauce-to-a-successful-live-service-game-according-to-overwatchs-associate-game-director-but-knowing-your-audience-is-a-good-start/</link>
                                                                            <description>
                            <![CDATA[ "We occupy this really unique spot in the middle." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">VFNLz6TfCjmNG666pKVti</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/tQUSFsqoZvrLGnD8V6DkH3-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 15 Oct 2026 12:14:35 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Elie Gould ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/5HPuSiRgqza2PQESSqE7gG-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Elie is a news writer with an unhealthy love of horror games—even though their greatest fear is being chased. When they&#039;re not screaming or hiding, there&#039;s a good chance you&#039;ll find them testing their metal in metroidvanias or just admiring their Pokemon TCG collection. Elie has previously worked at TechRadar Gaming as a staff writer and studied at JOMEC in International Journalism and Documentaries – spending their free time filming short docs about Smash Bros. or any indie game that crossed their path.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/tQUSFsqoZvrLGnD8V6DkH3-1920-80.jpg">
                                                            <media:credit><![CDATA[Activision Blizzard]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up of Overwatch character D.Va]]></media:description>                                                            <media:text><![CDATA[Close-up of Overwatch character D.Va]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up of Overwatch character D.Va]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/tQUSFsqoZvrLGnD8V6DkH3-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Not many live service games have <a href="https://www.pcgamer.com/games/fps/looking-back-on-10-years-of-overwatch-the-promises-kept-and-where-team-4-goes-from-here/">stood the test of time quite like Overwatch</a>. 10 years in and it's still been able to retain its playerbase, maintain momentum, and even ramp it up. How, you ask? Well, besides having really cute skins and a very enticing game loop, Team 4 figured out exactly where <a href="https://www.pcgamer.com/uk/overwatch/">Overwatch</a> needed to stand years ago. </p><p>"Overwatch exists in an incredibly competitive space among live service shooters," Overwatch's game director Aaron Keller tells me. "Some of the biggest games in the world are here."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jkRdksMSaxqGoauCPv8jkD" name="overwatch s3 shion 3" alt="A promotional Overwatch gameplay screenshot of new hero Shion. The robot woman's red eyes light up as she is surrounded by bright blue lightning." src="https://cdn.mos.cms.futurecdn.net/jkRdksMSaxqGoauCPv8jkD-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blizzard Entertainment)</span></figcaption></figure><p>To have (and crucially, maintain) a successful live service game is the golden goose egg of this industry right now. With publishers like Sony trying to force it upon countless studios before <a href="https://www.pcgamer.com/games/after-cancelling-8-of-the-12-live-service-games-sony-promised-to-release-by-2025-playstation-studios-boss-says-the-number-doesnt-really-matter-what-is-important-to-me-is-having-a-diverse-set-of-player-experiences/">pulling the plug on eight out of 12 projects</a> when things start to go sideways. Even games that manage to land with an eager audience like Arc Raiders can struggle to maintain momentum. But for some, like Overwatch, the live service model has worked, so what's the secret? </p><p>"That's a big question," associate game director Alec Dawson says. "I think some of the things we've learned is to shut away fear as much as possible and push beyond, experiment within that experience. But what it really boils down to is coming to work each morning and making good decisions every day. We've lived that over the last two years." But unfortunately for any eager Sony execs reading this, "there's no secret sauce in particular." </p><p>"It's incredibly hard to make something that players can interact with every day for years on end," Keller adds. "You can get 95% of the way there, and your game could still die three months after release. It is much, much harder to come up with that initial sort of experience than I think a lot of people give it credit for. But once you've done it, you've kind of just started the race." </p><p>Free time and cash are both at a premium for most players, and with so many options available, games studios need to offer up exactly what they're looking for. Because if they don't, someone else will. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.51%;"><img id="xAPcJQWTXPH6qy4e7Wjeeg" name="roadhog-screenshot-003.jpg" alt="Overwatch 2 hero Roadhog" src="https://cdn.mos.cms.futurecdn.net/xAPcJQWTXPH6qy4e7Wjeeg-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1085" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision Blizzard)</span></figcaption></figure><p>"Our players really want novelty and they really want variety, but they want it inside of a competitive framework," Keller explains. "If you look at other games on the market, there's ones that are really just more about the novelty side of the game, and there's other ones that are really just about straight up competition. There's not a lot of change in those games. We occupy this really unique spot in the middle." </p><p>Marvel Rivals came the closest to taking Overwatch's spot, but that didn't last long as it cemented itself as a casual game which is more concerned with <a href="https://www.pcgamer.com/games/third-person-shooter/we-balance-for-fun-first-and-foremost-marvel-games-executive-producer-discusses-marvel-rivals-priorities-and-why-competitive-balancing-comes-second/">balancing for fun</a>. Alternatively, Overwatch offers higher skill ceilings and a "sense that your time was worthwhile in the experience," Dawson explains. "That the rules and structure of the sport were fair towards the outcome." </p><p>This isn't to say that Team 4 have uncovered the secret to perfect game balancing, I'm not sure that'll ever be possible, but the idea still stands that players should be able to take away some kind of lesson from each game, lessons that'll help form them into a more skilled player. Even if that lesson is to 'don't solo queue at 2 am'. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PTJNn6U2t7PhpamQWpCfQn" name="overwatch tier list hero stats" alt="Overwatch tier list: Sigma listing various characters into the air using his ultimate." src="https://cdn.mos.cms.futurecdn.net/PTJNn6U2t7PhpamQWpCfQn-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blizzard)</span></figcaption></figure><p>"There's a design value at Blizzard called control is king," Keller adds. The idea that players want to feel like they're in control of everything their hero does and therefore experience the cool moments that come from that. Overwatch's newest hero Doctrine is "a powerful example of something like that." </p><div><blockquote><p>I can't wait for players to see some of the archetypes that are coming next season, and especially Season 1 next year.</p><p>Aaron Keller, Game Director </p></blockquote></div><p>Doctrine offers two experiences: a primal and slightly simplistic one in which it feels good to just use his base kit to land shots. Then there's a more nuanced version, which offers players the chance to raise the skill ceiling with his Infuse mechanic. </p><p>"It's so satisfying to be holding down Infuse while you're trying to line up your shot, as the beam gets bigger, you get that sound effect, then you pull the trigger, and you see that connection. It's so satisfying. The hero team, and the audio team, the VFX animations, everybody kind of comes together to have that one moment where control really is king. That moment just needs to feel as good and as visceral as possible." </p><p>Doctrine is the only hero I've played since the new season came out last week, and I can confirm his kit is just as good as Keller makes it sound. It's a testimony to Team 4 that 54 heroes later they're still able to offer players something that feels unique, specialised, and just a hell of a lot of fun to play. </p><p>"One of the Blizzard greats, Chris Metzen, always described our company as a hero factory," Keller says. "This is just what we do, and you can see it in a lot of our other games, from StarCraft to Warcraft to Diablo, just all these characters that are really larger than life. It's what our fans can really throw their passion behind. </p><p>"I think that Overwatch really carries that torch forward. We're trying to make these amazing fantasies that people can just jump into and live out. I can't wait for players to see some of the archetypes that are coming next season, and especially Season 1 next year." </p><div class="product"><a data-dimension112="11a95c92-c890-11f1-99dd-6149cecc8c45" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="11a95c92-c890-11f1-99dd-6149cecc8c45" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Ex-Overwatch director Jeff Kaplan ignores everything about the hero shooter after his 'almost clinical' departure 5 years ago: 'I don't search for my name in Overwatch. I don't search for Overwatch. I sort of just disconnect.' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Despite some big changes happening with <a href="https://www.pcgamer.com/games/fps/looking-back-on-10-years-of-overwatch-the-promises-kept-and-where-team-4-goes-from-here/">Overwatch</a> lately, former game director Jeff Kaplan hasn't touched it since the year he left Blizzard. In fact, he actively avoids the game in every way he can, he told <a href="https://www.gamespot.com/articles/jeff-kaplan-was-an-industry-icon-now-peers-ignore-his-emails-ex-overwatch-director-talks-humbling-reality-of-indie-dev/?_thumbnail_id=1918870">GameSpot </a>in a recent interview.</p><p>Before Overwatch, Kaplan rose through the ranks on the World of Warcraft team, starting in QA and eventually becoming game director. He described his departure from the WoW team in 2008 as "a training moment" for when he would leave the Overwatch team, and Blizzard altogether, in 2021.</p><p>"I kind of went through a little bit of shock leaving WoW back in 2008," Kaplan says. "So, when I stepped away from Overwatch in April of 2021, I was kind of used to that moment of what it meant to give all of yourself, your heart, your soul–because it's not just a job, there's no one who can do this and have it just be a job–and then have this shocking moment where you realize it doesn't belong to you. It belongs to the team, belongs to the players, it belongs to Blizzard, but it doesn’t belong to you."</p><p>Kaplan says he "had a very almost clinical separation" with Overwatch after what he went through with WoW. As a result, he stopped playing it the moment he left and has actively avoided it ever since.</p><p>"After I said my goodbye to competitive Overwatch and the Overwatch subreddit, I never go back and read," he says. "I don't watch YouTube [videos]. I don't search for my name in Overwatch. I don't search for Overwatch. I sort of just disconnect. I actually tell all the algorithms like, 'Yeah, I'm not really interested in Overwatch anymore. I know you think I'm the Overwatch guy, but like, that's just not for me anymore.'"</p><p>In an interview from <a href="https://www.pcgamer.com/games/fps/overwatch-co-creator-jeff-kaplan-on-his-exit-from-activision-blizzard-it-was-the-biggest-f-k-you-moment-ive-had-in-may-career/">earlier this year</a>, Kaplan said he fully expected to retire from Blizzard, but the company's former CFO broke him by threatening to lay off 1,000 people if Overwatch didn't meet certain financial goals. Kaplan called that meeting "the biggest fuck you moment I've had in my career, it felt surreal to be in that condition."</p><p>Kaplan went quiet for several years before reappearing with a new studio and a new open world survival cowboy game called <a href="https://www.pcgamer.com/games/adventure/i-would-love-that-but-were-cheap-and-poor-jeff-kaplan-speeds-through-everything-players-should-know-about-his-upcoming-cowboy-survival-game-the-legend-of-california/">The Legend of California</a>, which he's heading up alongside former Blizzard developer Tim Ford. He says the new game is an opportunity to explore something more personal to him for the first time. "I didn't leave Blizzard to try to make a Blizzard game. I left Blizzard to make a Tim and Jeff game."</p><div class="product"><a data-dimension112="1a0bf43a-c822-11f1-b6e5-f1c0dcee2eba" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="1a0bf43a-c822-11f1-b6e5-f1c0dcee2eba" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/ex-overwatch-director-jeff-kaplan-ignores-everything-about-the-hero-shooter-after-his-almost-clinical-departure-5-years-ago-i-dont-search-for-my-name-in-overwatch-i-dont-search-for-overwatch-i-sort-of-just-disconnect/</link>
                                                                            <description>
                            <![CDATA[ The former Blizzard developer has moved on. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Ae3RbpMLfjgt9VRaZs5Ee6</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/XFSJd8WGfgkumuaUncPkuN-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 14 Oct 2026 22:54:53 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Tyler Colp ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/XFSJd8WGfgkumuaUncPkuN-1920-80.jpg">
                                                            <media:credit><![CDATA[Blizzard]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Jeff Kaplan]]></media:description>                                                            <media:text><![CDATA[Jeff Kaplan]]></media:text>
                                <media:title type="plain"><![CDATA[Jeff Kaplan]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/XFSJd8WGfgkumuaUncPkuN-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Despite some big changes happening with <a href="https://www.pcgamer.com/games/fps/looking-back-on-10-years-of-overwatch-the-promises-kept-and-where-team-4-goes-from-here/">Overwatch</a> lately, former game director Jeff Kaplan hasn't touched it since the year he left Blizzard. In fact, he actively avoids the game in every way he can, he told <a href="https://www.gamespot.com/articles/jeff-kaplan-was-an-industry-icon-now-peers-ignore-his-emails-ex-overwatch-director-talks-humbling-reality-of-indie-dev/?_thumbnail_id=1918870">GameSpot </a>in a recent interview.</p><p>Before Overwatch, Kaplan rose through the ranks on the World of Warcraft team, starting in QA and eventually becoming game director. He described his departure from the WoW team in 2008 as "a training moment" for when he would leave the Overwatch team, and Blizzard altogether, in 2021.</p><p>"I kind of went through a little bit of shock leaving WoW back in 2008," Kaplan says. "So, when I stepped away from Overwatch in April of 2021, I was kind of used to that moment of what it meant to give all of yourself, your heart, your soul–because it's not just a job, there's no one who can do this and have it just be a job–and then have this shocking moment where you realize it doesn't belong to you. It belongs to the team, belongs to the players, it belongs to Blizzard, but it doesn’t belong to you."</p><p>Kaplan says he "had a very almost clinical separation" with Overwatch after what he went through with WoW. As a result, he stopped playing it the moment he left and has actively avoided it ever since.</p><p>"After I said my goodbye to competitive Overwatch and the Overwatch subreddit, I never go back and read," he says. "I don't watch YouTube [videos]. I don't search for my name in Overwatch. I don't search for Overwatch. I sort of just disconnect. I actually tell all the algorithms like, 'Yeah, I'm not really interested in Overwatch anymore. I know you think I'm the Overwatch guy, but like, that's just not for me anymore.'"</p><p>In an interview from <a href="https://www.pcgamer.com/games/fps/overwatch-co-creator-jeff-kaplan-on-his-exit-from-activision-blizzard-it-was-the-biggest-f-k-you-moment-ive-had-in-may-career/">earlier this year</a>, Kaplan said he fully expected to retire from Blizzard, but the company's former CFO broke him by threatening to lay off 1,000 people if Overwatch didn't meet certain financial goals. Kaplan called that meeting "the biggest fuck you moment I've had in my career, it felt surreal to be in that condition."</p><p>Kaplan went quiet for several years before reappearing with a new studio and a new open world survival cowboy game called <a href="https://www.pcgamer.com/games/adventure/i-would-love-that-but-were-cheap-and-poor-jeff-kaplan-speeds-through-everything-players-should-know-about-his-upcoming-cowboy-survival-game-the-legend-of-california/">The Legend of California</a>, which he's heading up alongside former Blizzard developer Tim Ford. He says the new game is an opportunity to explore something more personal to him for the first time. "I didn't leave Blizzard to try to make a Blizzard game. I left Blizzard to make a Tim and Jeff game."</p><div class="product"><a data-dimension112="1a0bf43a-c822-11f1-b6e5-f1c0dcee2eba" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="1a0bf43a-c822-11f1-b6e5-f1c0dcee2eba" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Looking back on 10 years of Overwatch, the promises kept, and where Team 4 goes from here ]]></title>
                                                                                                <dc:content><![CDATA[ <p>10 years is a long time for anything, but for a live service game it's a milestone that very few are able to cross. <a href="https://www.pcgamer.com/uk/overwatch/">Overwatch</a> made it over the line earlier this year, and has since been able to do something of <a href="https://www.pcgamer.com/games/fps/this-world-means-so-much-to-us-overwatchs-game-director-celebrates-its-10-year-anniversary-by-mapping-out-how-it-all-began/">a victory lap</a> because after all the highs and the lows, <a href="https://www.pcgamer.com/games/fps/overwatchs-newest-hero-is-yet-another-example-of-how-team-4-is-on-a-generational-run/">Overwatch is in the best place it's ever been</a>. </p><p>"It doesn't feel like 10 years to me," game director Aaron Keller tells me. "Although, I could probably answer that question in a few ways. There's probably a year or two that might have felt like five or six years in the middle of this process, but there's always so much to be doing on the team and for the game." But Keller reiterates the good old adage "if you love what you do, you never work a day in your life. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/aLLeggTILxo" allowfullscreen=""></iframe></div></div><p>"Our team is filled with people that are not just passionate about making games, they're passionate about Overwatch itself, our heroes and the world in which they reside. So when you get to go into the office and talk about that all day, the time can fly by pretty quickly." </p><p>Alec Dawson, associate game director, joined before the launch of Overwatch 2 but also feels as if these last four years have flown by "in a blink of an eye … It's wild that when we started the year, we had these silhouettes of heroes that we didn't even know what they were going to be, what they were going to look like, and now we do," Dawson adds. "Sometimes it just goes by much quicker than you think it's going to." </p><p>Overwatch has undergone many metamorphoses, some good, others not so good. We had the early golden years, then we had GOATS, then a plethora of some of the best game cinematics ever, then we had early Brigitte taking a literal hammer to the game's balance. </p><p>After something of a content drought, excitement was renewed with the announcement of Overwatch 2, and while this did offer a lot of good changes like more heroes, content, and focused team fights in 5v5, it <a href="https://www.pcgamer.com/i-cannot-stress-enough-that-overwatch-2-isnt-overwatch-2/">failed to meet the requirements of a sequel</a>, and that's without the <a href="https://www.pcgamer.com/overwatch-2s-pve-mode-may-be-dead-but-ill-play-the-hell-out-of-these-story-missions/">disappointment surrounding PvE</a>. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8tACEUQZmSoZq4PiuBwHVJ" name="012622-overwatch-roadhog-sleep-ana.jpg" alt="Overwatch's Ana sleeping a Roadhog" src="https://cdn.mos.cms.futurecdn.net/8tACEUQZmSoZq4PiuBwHVJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tyler C. / Blizzard)</span></figcaption></figure><p>There was a time when I thought that was it for Overwatch, that PvE and Overwatch 2 would be all anyone would ever talk about. But I've never been happier to be proven wrong, because all these years later Overwatch is going from strength to strength experimenting with things like perks and Stadium, tweaking the user experience with map voting and hero bans, and changing to a new annual content release format. </p><p>"I don't think we could honestly say we knew it would go this far," Keller says. "I believe that there's always been something special about Overwatch. There's something special about the world. This optimistic, hopeful take on the future. I do think that there's something special about the gameplay—it's so crisp and clean—and there's moments you have in Overwatch that you just don't really get to have in other games." </p><p>I've said it before but the current success that Team 4 is seeing <a href="https://www.pcgamer.com/games/fps/overwatchs-glow-up-didnt-just-happen-overnight-its-successes-have-been-in-the-works-for-years-now/">didn't just happen overnight</a>. It's been a long road, one marked with deliberate decisions and remedies taken by its devs. The passion the devs have exhibited, the humility to admit when things aren't working, and keeping player's best interests at the forefront are why the game is in such a good state today. </p><h2 id="what-promises-have-team-4-kept-over-the-last-10-years">What promises have Team 4 kept over the last 10 years?</h2><h2 id="next-up">Next up</h2><p>Moving on from its tenth anniversary year, Overwatch has a new seasonal cadence which has not only worked to spark excitement, but as Keller sees it, has bolstered the "belief that Overwatch is really going in a good direction." There's a steady flow of quality-of-life changes to its UI as we saw last season with new heal, burn, and team indicators. Team 4 has given players more freedom when it comes to picking Drives, and the narrative story is back to being central to Overwatch's experience. </p><p>There's obviously going to be a steady flow of new content and characters, but Dawson has also confirmed that map reworks and tweaks will be "something we want to continue doing". Informed by map voting and community feedback the team will ensure that reworks "can stand on its own" not only fixing problems but gunning for a better overall experience: "I think our next rework does a pretty good job of that."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NQfwNpKnFqE3StyLVtegAJ" name="OVR_S4_PK_H53DMon_Ultimate_CallMech_001" alt="A promotional screenshot of the new Overwatch hero D.Mon. A pilot woman in purple hovers in the air as pieces of her mech fly into place." src="https://cdn.mos.cms.futurecdn.net/NQfwNpKnFqE3StyLVtegAJ-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blizzard Entertainment)</span></figcaption></figure><p>"We're really far into development on Season 1 for 2027," Keller reveals. "We're talking about what Season 1 is going to look like in 2028, and getting started on that. We want it to feel like not just one big moment but that the game is fresh for players and that we are getting players to look at it through new eyes again—we want to do it in a different way each year." </p><p>But while Team 4 gets stuck into planning content for the years to come, Dawson stresses that their overall mission will stay the same: "As much as the industry has changed, games have changed, genres, etc. Overwatch is still home for so many people. It's a really big responsibility that we take to heart of making sure that Overwatch can be a part of those people's lives as long as possible. </p><p>"To make sure they have the game and the heroes that they can relate to, make sure that they can play with their friends, and just keep having that place where they feel like, okay, this is where I want to be. This is where I want to spend my time. This is where I want to make memories. Hopefully, we can keep carrying that into the future as well." </p><div class="product"><a data-dimension112="07ea1b2e-c7dc-11f1-a5d6-73afe04e54b5" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="07ea1b2e-c7dc-11f1-a5d6-73afe04e54b5" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/looking-back-on-10-years-of-overwatch-the-promises-kept-and-where-team-4-goes-from-here/</link>
                                                                            <description>
                            <![CDATA[ "In order for people to play the game in the present, they need to have confidence in its future." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">azVaGjJJFngbhZgGhN2QR3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/72Yyay4cZg3uzUhx3isbDY-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 14 Oct 2026 16:37:47 +0000</pubDate>                                                                                                                                <updated>Fri, 16 Oct 2026 09:27:27 +0000</updated>
                                                                                                                                            <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Elie Gould ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/5HPuSiRgqza2PQESSqE7gG-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Elie is a news writer with an unhealthy love of horror games—even though their greatest fear is being chased. When they&#039;re not screaming or hiding, there&#039;s a good chance you&#039;ll find them testing their metal in metroidvanias or just admiring their Pokemon TCG collection. Elie has previously worked at TechRadar Gaming as a staff writer and studied at JOMEC in International Journalism and Documentaries – spending their free time filming short docs about Smash Bros. or any indie game that crossed their path.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/72Yyay4cZg3uzUhx3isbDY-1920-80.jpg">
                                                            <media:credit><![CDATA[null]]></media:credit>
                                                                                                                                                                                                                                                                                                                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/72Yyay4cZg3uzUhx3isbDY-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>10 years is a long time for anything, but for a live service game it's a milestone that very few are able to cross. <a href="https://www.pcgamer.com/uk/overwatch/">Overwatch</a> made it over the line earlier this year, and has since been able to do something of <a href="https://www.pcgamer.com/games/fps/this-world-means-so-much-to-us-overwatchs-game-director-celebrates-its-10-year-anniversary-by-mapping-out-how-it-all-began/">a victory lap</a> because after all the highs and the lows, <a href="https://www.pcgamer.com/games/fps/overwatchs-newest-hero-is-yet-another-example-of-how-team-4-is-on-a-generational-run/">Overwatch is in the best place it's ever been</a>. </p><p>"It doesn't feel like 10 years to me," game director Aaron Keller tells me. "Although, I could probably answer that question in a few ways. There's probably a year or two that might have felt like five or six years in the middle of this process, but there's always so much to be doing on the team and for the game." But Keller reiterates the good old adage "if you love what you do, you never work a day in your life. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/aLLeggTILxo" allowfullscreen=""></iframe></div></div><p>"Our team is filled with people that are not just passionate about making games, they're passionate about Overwatch itself, our heroes and the world in which they reside. So when you get to go into the office and talk about that all day, the time can fly by pretty quickly." </p><p>Alec Dawson, associate game director, joined before the launch of Overwatch 2 but also feels as if these last four years have flown by "in a blink of an eye … It's wild that when we started the year, we had these silhouettes of heroes that we didn't even know what they were going to be, what they were going to look like, and now we do," Dawson adds. "Sometimes it just goes by much quicker than you think it's going to." </p><p>Overwatch has undergone many metamorphoses, some good, others not so good. We had the early golden years, then we had GOATS, then a plethora of some of the best game cinematics ever, then we had early Brigitte taking a literal hammer to the game's balance. </p><p>After something of a content drought, excitement was renewed with the announcement of Overwatch 2, and while this did offer a lot of good changes like more heroes, content, and focused team fights in 5v5, it <a href="https://www.pcgamer.com/i-cannot-stress-enough-that-overwatch-2-isnt-overwatch-2/">failed to meet the requirements of a sequel</a>, and that's without the <a href="https://www.pcgamer.com/overwatch-2s-pve-mode-may-be-dead-but-ill-play-the-hell-out-of-these-story-missions/">disappointment surrounding PvE</a>. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8tACEUQZmSoZq4PiuBwHVJ" name="012622-overwatch-roadhog-sleep-ana.jpg" alt="Overwatch's Ana sleeping a Roadhog" src="https://cdn.mos.cms.futurecdn.net/8tACEUQZmSoZq4PiuBwHVJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tyler C. / Blizzard)</span></figcaption></figure><p>There was a time when I thought that was it for Overwatch, that PvE and Overwatch 2 would be all anyone would ever talk about. But I've never been happier to be proven wrong, because all these years later Overwatch is going from strength to strength experimenting with things like perks and Stadium, tweaking the user experience with map voting and hero bans, and changing to a new annual content release format. </p><p>"I don't think we could honestly say we knew it would go this far," Keller says. "I believe that there's always been something special about Overwatch. There's something special about the world. This optimistic, hopeful take on the future. I do think that there's something special about the gameplay—it's so crisp and clean—and there's moments you have in Overwatch that you just don't really get to have in other games." </p><p>I've said it before but the current success that Team 4 is seeing <a href="https://www.pcgamer.com/games/fps/overwatchs-glow-up-didnt-just-happen-overnight-its-successes-have-been-in-the-works-for-years-now/">didn't just happen overnight</a>. It's been a long road, one marked with deliberate decisions and remedies taken by its devs. The passion the devs have exhibited, the humility to admit when things aren't working, and keeping player's best interests at the forefront are why the game is in such a good state today. </p><h2 id="what-promises-have-team-4-kept-over-the-last-10-years">What promises have Team 4 kept over the last 10 years?</h2><h2 id="next-up">Next up</h2><p>Moving on from its tenth anniversary year, Overwatch has a new seasonal cadence which has not only worked to spark excitement, but as Keller sees it, has bolstered the "belief that Overwatch is really going in a good direction." There's a steady flow of quality-of-life changes to its UI as we saw last season with new heal, burn, and team indicators. Team 4 has given players more freedom when it comes to picking Drives, and the narrative story is back to being central to Overwatch's experience. </p><p>There's obviously going to be a steady flow of new content and characters, but Dawson has also confirmed that map reworks and tweaks will be "something we want to continue doing". Informed by map voting and community feedback the team will ensure that reworks "can stand on its own" not only fixing problems but gunning for a better overall experience: "I think our next rework does a pretty good job of that."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NQfwNpKnFqE3StyLVtegAJ" name="OVR_S4_PK_H53DMon_Ultimate_CallMech_001" alt="A promotional screenshot of the new Overwatch hero D.Mon. A pilot woman in purple hovers in the air as pieces of her mech fly into place." src="https://cdn.mos.cms.futurecdn.net/NQfwNpKnFqE3StyLVtegAJ-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blizzard Entertainment)</span></figcaption></figure><p>"We're really far into development on Season 1 for 2027," Keller reveals. "We're talking about what Season 1 is going to look like in 2028, and getting started on that. We want it to feel like not just one big moment but that the game is fresh for players and that we are getting players to look at it through new eyes again—we want to do it in a different way each year." </p><p>But while Team 4 gets stuck into planning content for the years to come, Dawson stresses that their overall mission will stay the same: "As much as the industry has changed, games have changed, genres, etc. Overwatch is still home for so many people. It's a really big responsibility that we take to heart of making sure that Overwatch can be a part of those people's lives as long as possible. </p><p>"To make sure they have the game and the heroes that they can relate to, make sure that they can play with their friends, and just keep having that place where they feel like, okay, this is where I want to be. This is where I want to spend my time. This is where I want to make memories. Hopefully, we can keep carrying that into the future as well." </p><div class="product"><a data-dimension112="07ea1b2e-c7dc-11f1-a5d6-73afe04e54b5" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="07ea1b2e-c7dc-11f1-a5d6-73afe04e54b5" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ If New Blood had made Dusk 2, there'd be no Iron Lung, 'and now David Szymanski has got a movie that made $50 million'—so maybe there's wisdom in not churning out sequels ]]></title>
                                                                                                <dc:content><![CDATA[ <p>New Blood boss Dave Oshry isn't interested in running a massive studio that follows the blockbuster strategy of milking its successful games for all they're worth. The publisher-developer combo has enjoyed a string of big wins with its boomer shooters, but Oshry's plan for building on success is to invest that money into new projects. </p><p>"I think a lot of studios would have a big hit like <a href="https://www.pcgamer.com/ultrakill/" target="_blank">Ultrakill</a>," Oshry tells us, "and then they would maybe open a big office, or just milk the shit out of Ultrakill and do Ultrakill spinoffs, or use that money to make sequels. And I've decided to put that money into projects like <a href="https://www.pcgamer.com/uk/gloomwood/" target="_blank">Gloomwood</a> and <a href="https://www.pcgamer.com/uk/fallen-aces/" target="_blank">Fallen Aces</a>, artsy projects like <a href="https://www.pcgamer.com/games/horror/ai-could-never-make-tenebris-somnia-the-2d-retro-survival-horror-with-live-action-cutscenes-and-practical-effects/" target="_blank">Tenebris Somnia</a>. That’s what I've decided to do with our success because I can, because we're independent."</p><p>The goal, says Oshry, has never been to create "a big studio with an office and hundreds of employees … I don't know why anyone would want that". And thankfully he doesn't have to deal with shareholders and investors telling him to just keep milking and keep growing. </p><p>"The fact that we're one studio and that I control everything means that I can make those kinds of decisions," he says. "If we had publishers or shareholders or investors, they would be like, ‘No, you need to take that money and reinvest it into things that are going to make more money so we can get bigger returns.’ They would be like, ‘You need to be working on Ultrakill spinoff games. You need to be working on Dusk 2, Faith: Chapter Four. Why haven't you made a survival crafting game out of this yet? You need to be reinvesting in the IPs and making money, money, money.’ And we're just like, ‘What cool thing do we want to do? What's coming down the pipe?’" </p><p>This isn't to say that New Blood doesn't support its games or give players another taste of the things that they dig. Dusk and Amid Evil continue to be updated, and there have been conversations about a new episode for Dusk or even a proper sequel. A Dusk spin-off is in the works, too, called <a href="https://www.pcgamer.com/gaming-industry/events-conferences/one-of-our-favorite-fpses-is-getting-a-sequel-we-didnt-expect-dungeons-of-dusk/" target="_blank">Dungeons of Dusk</a>, though it's from a different developer, not David Szymanski.</p><div><blockquote><p>It's all about IP, it always has been with AAA.</p><p>Dave Oshry</p></blockquote></div><p>But this is still a far cry from the big publisher strategy of making IPs and bleeding them dry. Like Ubisoft, for example. "Look at fucking Heroes of Might and Magic," says Oshry. "Look at what's happened to that bloody series over the years. Everybody loves Heroes 3, and that was a million years ago. Ubisoft has whored that IP out all over the place for decades, and now finally you've got someone like Hooded Horse making something like Olden Era, and people are like, ‘Yeah, good, this is what we wanted’. But it's all about IP, it always has been with AAA."</p><p>Oshry offers Wolverine as another example. "It became designed by corporate, and look what happened. I don't think it was the game they originally set out to make, but it was the game they had to ship. At New Blood we’re never putting out games because it's a game we had to ship—because we had to meet a deadline or we had investors or shareholders. We're literally just trying to make the best games we can and make as many people happy as we can." </p><p>If New Blood followed the received wisdom that Sony or Ubisoft follow, it likely wouldn't be the success that it is. "If I just forced David to make Dusk 2," Oshry says, "we never would have gotten <a href="https://www.pcgamer.com/movies-tv/what-the-f-k-iron-lung-creator-puzzled-as-markipliers-film-adaptation-quadruples-its-budget-in-one-day-beating-out-melania-and-send-help-at-the-box-office/" target="_blank">Iron Lung</a>. Iron Lung, Markiplier, $50 million [box office] never would have happened if I made David do Dusk 2. And now David Szymanski has got a movie that made $50 million, funded by a YouTuber. That doesn't happen if I don't run New Blood the way that I do. It works. It works for us." </p><p>Looking at the state of the industry, the failure of big games like Wolverine, the so-called 'Xbox reset', the grotesque layoffs, it certainly looks like blockbuster game development, endless sequels and an obsession with IP is unsustainable. </p><p>"As we've seen with all the layoffs, developers are disposable, whether you make a hit game or not," Oshry says. "What is a hit? Your game can sell millions of copies, but it doesn't balance the balance sheet. So everybody gets laid off. Imagine working for six years on a game, it's not the game you wanted to make anyway, and then you get laid off because it's not the game that sells. And you're like, ‘Well, maybe it would have been if it was the game we wanted to make, and not the game that had to ship, like a Wolverine.’ </p><p>"People are always like, ‘Oh, the industry is dying and imploding’. We're doing fine. I guess we're the lucky ones. But I think we made our own luck by making the kind of games we want to make, and knowing that they'll sell to the kind of people who like our games." </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><div class="product"><a data-dimension112="e518994c-c7e3-11f1-9aba-e9c9a7188e4f" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="e518994c-c7e3-11f1-9aba-e9c9a7188e4f" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/if-new-blood-had-made-dusk-2-thered-be-no-iron-lung-and-now-david-szymanski-has-got-a-movie-that-made-usd50-million-so-maybe-theres-wisdom-in-not-churning-out-sequels/</link>
                                                                            <description>
                            <![CDATA[ You don't need to milk your cash cows. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ApxsbFyn8ZtjpuKVcCyefJ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ercGzGYVkTfjehgYt5ZRPT-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 14 Oct 2026 15:28:49 +0000</pubDate>                                                                                                                                <updated>Wed, 14 Oct 2026 15:29:53 +0000</updated>
                                                                                                                                            <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Fraser Brown ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/wKNKbq8mrKbjjBvak9oDSh-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                        <dc:contributor><![CDATA[ Jeremy Peel ]]></dc:contributor>
                                                                    <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/ercGzGYVkTfjehgYt5ZRPT-1920-80.jpg">
                                                            <media:credit><![CDATA[New Blood]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Dusk HD enemy in barn]]></media:description>                                                            <media:text><![CDATA[Dusk HD enemy in barn]]></media:text>
                                <media:title type="plain"><![CDATA[Dusk HD enemy in barn]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ercGzGYVkTfjehgYt5ZRPT-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>New Blood boss Dave Oshry isn't interested in running a massive studio that follows the blockbuster strategy of milking its successful games for all they're worth. The publisher-developer combo has enjoyed a string of big wins with its boomer shooters, but Oshry's plan for building on success is to invest that money into new projects. </p><p>"I think a lot of studios would have a big hit like <a href="https://www.pcgamer.com/ultrakill/" target="_blank">Ultrakill</a>," Oshry tells us, "and then they would maybe open a big office, or just milk the shit out of Ultrakill and do Ultrakill spinoffs, or use that money to make sequels. And I've decided to put that money into projects like <a href="https://www.pcgamer.com/uk/gloomwood/" target="_blank">Gloomwood</a> and <a href="https://www.pcgamer.com/uk/fallen-aces/" target="_blank">Fallen Aces</a>, artsy projects like <a href="https://www.pcgamer.com/games/horror/ai-could-never-make-tenebris-somnia-the-2d-retro-survival-horror-with-live-action-cutscenes-and-practical-effects/" target="_blank">Tenebris Somnia</a>. That’s what I've decided to do with our success because I can, because we're independent."</p><p>The goal, says Oshry, has never been to create "a big studio with an office and hundreds of employees … I don't know why anyone would want that". And thankfully he doesn't have to deal with shareholders and investors telling him to just keep milking and keep growing. </p><p>"The fact that we're one studio and that I control everything means that I can make those kinds of decisions," he says. "If we had publishers or shareholders or investors, they would be like, ‘No, you need to take that money and reinvest it into things that are going to make more money so we can get bigger returns.’ They would be like, ‘You need to be working on Ultrakill spinoff games. You need to be working on Dusk 2, Faith: Chapter Four. Why haven't you made a survival crafting game out of this yet? You need to be reinvesting in the IPs and making money, money, money.’ And we're just like, ‘What cool thing do we want to do? What's coming down the pipe?’" </p><p>This isn't to say that New Blood doesn't support its games or give players another taste of the things that they dig. Dusk and Amid Evil continue to be updated, and there have been conversations about a new episode for Dusk or even a proper sequel. A Dusk spin-off is in the works, too, called <a href="https://www.pcgamer.com/gaming-industry/events-conferences/one-of-our-favorite-fpses-is-getting-a-sequel-we-didnt-expect-dungeons-of-dusk/" target="_blank">Dungeons of Dusk</a>, though it's from a different developer, not David Szymanski.</p><div><blockquote><p>It's all about IP, it always has been with AAA.</p><p>Dave Oshry</p></blockquote></div><p>But this is still a far cry from the big publisher strategy of making IPs and bleeding them dry. Like Ubisoft, for example. "Look at fucking Heroes of Might and Magic," says Oshry. "Look at what's happened to that bloody series over the years. Everybody loves Heroes 3, and that was a million years ago. Ubisoft has whored that IP out all over the place for decades, and now finally you've got someone like Hooded Horse making something like Olden Era, and people are like, ‘Yeah, good, this is what we wanted’. But it's all about IP, it always has been with AAA."</p><p>Oshry offers Wolverine as another example. "It became designed by corporate, and look what happened. I don't think it was the game they originally set out to make, but it was the game they had to ship. At New Blood we’re never putting out games because it's a game we had to ship—because we had to meet a deadline or we had investors or shareholders. We're literally just trying to make the best games we can and make as many people happy as we can." </p><p>If New Blood followed the received wisdom that Sony or Ubisoft follow, it likely wouldn't be the success that it is. "If I just forced David to make Dusk 2," Oshry says, "we never would have gotten <a href="https://www.pcgamer.com/movies-tv/what-the-f-k-iron-lung-creator-puzzled-as-markipliers-film-adaptation-quadruples-its-budget-in-one-day-beating-out-melania-and-send-help-at-the-box-office/" target="_blank">Iron Lung</a>. Iron Lung, Markiplier, $50 million [box office] never would have happened if I made David do Dusk 2. And now David Szymanski has got a movie that made $50 million, funded by a YouTuber. That doesn't happen if I don't run New Blood the way that I do. It works. It works for us." </p><p>Looking at the state of the industry, the failure of big games like Wolverine, the so-called 'Xbox reset', the grotesque layoffs, it certainly looks like blockbuster game development, endless sequels and an obsession with IP is unsustainable. </p><p>"As we've seen with all the layoffs, developers are disposable, whether you make a hit game or not," Oshry says. "What is a hit? Your game can sell millions of copies, but it doesn't balance the balance sheet. So everybody gets laid off. Imagine working for six years on a game, it's not the game you wanted to make anyway, and then you get laid off because it's not the game that sells. And you're like, ‘Well, maybe it would have been if it was the game we wanted to make, and not the game that had to ship, like a Wolverine.’ </p><p>"People are always like, ‘Oh, the industry is dying and imploding’. We're doing fine. I guess we're the lucky ones. But I think we made our own luck by making the kind of games we want to make, and knowing that they'll sell to the kind of people who like our games." </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><div class="product"><a data-dimension112="e518994c-c7e3-11f1-9aba-e9c9a7188e4f" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="e518994c-c7e3-11f1-9aba-e9c9a7188e4f" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Squadron 42 has a Steam page ]]></title>
                                                                                                <dc:content><![CDATA[ <p>In August, game director Chris Roberts said that Star Citizen's singleplayer component, Squadron 42, was being <a href="https://www.pcgamer.com/games/fps/star-citizens-squadron-42-delayed-again-this-time-to-avoid-the-attention-buzz-saw-of-gta-6-says-chris-roberts/">delayed out of 2026 to avoid clashing with Grand Theft Auto 6</a>. There was a certain amount of skepticism about the reason for the delay, thanks in part to a recent <a href="https://www.pcgamer.com/games/mmo/star-citizen-has-a-disastrously-laggy-stream-with-horrendous-vibes-which-isnt-a-great-look-when-youre-past-usd1-billion-in-funding/">Star Citizen livestream being declared a disaster</a>, but also because, well. These games have had so many release dates the changes have <a href="https://starcitizen.tools/Release_date">their own wiki page</a>.</p><p>There's something concrete about having Squadron 42 getting a Steam page though, with system requirements and everything. Those system requirements are charmingly old-fashioned, with no mention of ray tracing-capable GPUs or DirectX 12. Although the install size of 150GB is still pretty hefty. (<a href="https://www.pcgamer.com/games/final-fantasy/final-fantasy-7-revelation-is-apparently-a-super-heavyweight-200gb-installation-we-need-to-overcome-the-hardware-to-a-certain-extent/">Final Fantasy 7 Revelation is apparently going to be 200GB</a>, oof.)</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/i4rVtLAenmk" allowfullscreen=""></iframe></div></div><p>There's also a new trailer, which leans heavily on the oorah stuff that's always a bit of a turn-off in military science-fiction. Privateer was my favorite Wing Commander game because it left out all the Top Gun nonsense, but of course it's front-and-center in Squadron 42.</p><p>So too are the celebrity actors, with appearances by Mark Hamill, Gary Oldman, Rhona Mitra, that guy who played the Onion Knight in Game of Thrones, and other people who probably filmed most of their scenes a solid decade ago now. We also get to see a fair bit of the male version of the player-character, who will doubtless BroShep his way into most of the promos even though I'll be picking the one voiced by Alix Wilton Regan instead.</p><p>The <a href="https://store.steampowered.com/app/4045720/Squadron_42/">Steam page</a> lists Squadron 42's release date as Q2 2027, and I'd love to see it actually release on that date and be the solid combo of Wing Commander and Half-Life 2 that happens to have Gillian Anderson and Henry Cavill in the cutscenes that's being promised here. It could happen.</p><div class="product"><a data-dimension112="3988c298-c4f8-11f1-bb10-7120665150bc" data-action="Deal Block" data-label="Best MMOs" data-dimension48="Best MMOs" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:316px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="UjCJY9gjRfatHZjCuGMrhR" name="elden ring square cheer.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/UjCJY9gjRfatHZjCuGMrhR-1920-80.jpg" mos="" align="middle" fullscreen="" width="316" height="316" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/the-best-mmos/" target="_blank" data-dimension112="3988c298-c4f8-11f1-bb10-7120665150bc" data-action="Deal Block" data-label="Best MMOs" data-dimension48="Best MMOs" data-dimension25=""><strong>Best MMOs</strong></a>: Most massive<br /><a href="https://www.pcgamer.com/the-best-strategy-games/" target="_blank"><strong>Best strategy games</strong></a>: Number crunching<br /><a href="https://www.pcgamer.com/best-open-world-games/" target="_blank"><strong>Best open world games</strong></a>: Unlimited exploration<br /><a href="https://www.pcgamer.com/the-best-survival-games-on-pc/" target="_blank"><strong>Best survival games</strong></a>: Live craft love<br /><a href="https://www.pcgamer.com/best-horror-games/" target="_blank"><strong>Best horror games</strong></a>: Fight or flight</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/squadron-42-has-a-steam-page/</link>
                                                                            <description>
                            <![CDATA[ Star Citizen's singleplayer mode gets a new trailer and more signs of life. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">tP8AEjnoUTeY6V53vuyaFC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Dnbw6BBDfDTWeGQ7qtaLae-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 10 Oct 2026 22:25:54 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jody Macgregor ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/3SnLWZBtqUMSAffCn6DvAD-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jody&#039;s first computer was a Commodore 64, so he remembers having to use a code wheel to play Pool of Radiance. A former music journalist who interviewed everyone from Giorgio Moroder to Trent Reznor, Jody also co-hosted Australia&#039;s first radio show about videogames, &lt;a href=&quot;https://zedgamesau.net/tag/jody-macgregor&quot; target=&quot;_blank&quot;&gt;Zed Games&lt;/a&gt;. He&#039;s written for &lt;a href=&quot;https://www.rockpapershotgun.com/authors/jody-macgregor&quot; target=&quot;_blank&quot;&gt;Rock Paper Shotgun&lt;/a&gt;, The Big Issue, &lt;a href=&quot;https://www.gamesradar.com/author/jody-macgregor/&quot; target=&quot;_blank&quot;&gt;GamesRadar&lt;/a&gt;, &lt;a href=&quot;http://www.zam.com/author/jody-macgregor&quot; target=&quot;_blank&quot;&gt;Zam&lt;/a&gt;, &lt;a href=&quot;https://web.archive.org/web/20170606042647/http://www.glixel.com/contributor/jody-macgregor&quot; target=&quot;_blank&quot;&gt;Glixel&lt;/a&gt;, &lt;a href=&quot;https://fiveoutoftenmagazine.com/downloads/issue-16-identity/&quot; target=&quot;_blank&quot;&gt;Five Out of Ten Magazine&lt;/a&gt;, and &lt;a href=&quot;https://web.archive.org/web/20171009125722/https://www.playboy.com/authors/jody-macgregor&quot; target=&quot;_blank&quot;&gt;Playboy.com&lt;/a&gt;, whose cheques with the bunny logo made for fun conversations at the bank. Jody&#039;s first article for PC Gamer was about the &lt;a href=&quot;https://www.pcgamer.com/the-audio-of-alien-isolation/&quot;&gt;audio of Alien Isolation&lt;/a&gt;, published in 2015, and since then he&#039;s written about &lt;a href=&quot;https://www.pcgamer.com/why-silent-hill-belongs-on-pc/&quot;&gt;why Silent Hill belongs on PC&lt;/a&gt;, &lt;a href=&quot;https://www.pcgamer.com/10-years-on-recettear-an-item-shops-tale-is-still-the-best-fantasy-shopkeeper-tycoon-game/&quot;&gt;why Recettear: An Item Shop&#039;s Tale is the best fantasy shopkeeper tycoon game&lt;/a&gt;, and &lt;a href=&quot;https://www.pcgamer.com/there-is-so-so-much-weird-shit-in-lost-ark/&quot;&gt;how weird Lost Ark can get&lt;/a&gt;. Jody edited PC Gamer Indie from 2017 to 2018, and he eventually lived up to his promise to play every Warhammer videogame.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Dnbw6BBDfDTWeGQ7qtaLae-1920-80.jpg">
                                                            <media:credit><![CDATA[Roberts Space Industries]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Mark Hamill in a jumpsuit looks dismissive]]></media:description>                                                            <media:text><![CDATA[Mark Hamill in a jumpsuit looks dismissive]]></media:text>
                                <media:title type="plain"><![CDATA[Mark Hamill in a jumpsuit looks dismissive]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Dnbw6BBDfDTWeGQ7qtaLae-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>In August, game director Chris Roberts said that Star Citizen's singleplayer component, Squadron 42, was being <a href="https://www.pcgamer.com/games/fps/star-citizens-squadron-42-delayed-again-this-time-to-avoid-the-attention-buzz-saw-of-gta-6-says-chris-roberts/">delayed out of 2026 to avoid clashing with Grand Theft Auto 6</a>. There was a certain amount of skepticism about the reason for the delay, thanks in part to a recent <a href="https://www.pcgamer.com/games/mmo/star-citizen-has-a-disastrously-laggy-stream-with-horrendous-vibes-which-isnt-a-great-look-when-youre-past-usd1-billion-in-funding/">Star Citizen livestream being declared a disaster</a>, but also because, well. These games have had so many release dates the changes have <a href="https://starcitizen.tools/Release_date">their own wiki page</a>.</p><p>There's something concrete about having Squadron 42 getting a Steam page though, with system requirements and everything. Those system requirements are charmingly old-fashioned, with no mention of ray tracing-capable GPUs or DirectX 12. Although the install size of 150GB is still pretty hefty. (<a href="https://www.pcgamer.com/games/final-fantasy/final-fantasy-7-revelation-is-apparently-a-super-heavyweight-200gb-installation-we-need-to-overcome-the-hardware-to-a-certain-extent/">Final Fantasy 7 Revelation is apparently going to be 200GB</a>, oof.)</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/i4rVtLAenmk" allowfullscreen=""></iframe></div></div><p>There's also a new trailer, which leans heavily on the oorah stuff that's always a bit of a turn-off in military science-fiction. Privateer was my favorite Wing Commander game because it left out all the Top Gun nonsense, but of course it's front-and-center in Squadron 42.</p><p>So too are the celebrity actors, with appearances by Mark Hamill, Gary Oldman, Rhona Mitra, that guy who played the Onion Knight in Game of Thrones, and other people who probably filmed most of their scenes a solid decade ago now. We also get to see a fair bit of the male version of the player-character, who will doubtless BroShep his way into most of the promos even though I'll be picking the one voiced by Alix Wilton Regan instead.</p><p>The <a href="https://store.steampowered.com/app/4045720/Squadron_42/">Steam page</a> lists Squadron 42's release date as Q2 2027, and I'd love to see it actually release on that date and be the solid combo of Wing Commander and Half-Life 2 that happens to have Gillian Anderson and Henry Cavill in the cutscenes that's being promised here. It could happen.</p><div class="product"><a data-dimension112="3988c298-c4f8-11f1-bb10-7120665150bc" data-action="Deal Block" data-label="Best MMOs" data-dimension48="Best MMOs" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:316px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="UjCJY9gjRfatHZjCuGMrhR" name="elden ring square cheer.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/UjCJY9gjRfatHZjCuGMrhR-1920-80.jpg" mos="" align="middle" fullscreen="" width="316" height="316" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/the-best-mmos/" target="_blank" data-dimension112="3988c298-c4f8-11f1-bb10-7120665150bc" data-action="Deal Block" data-label="Best MMOs" data-dimension48="Best MMOs" data-dimension25=""><strong>Best MMOs</strong></a>: Most massive<br /><a href="https://www.pcgamer.com/the-best-strategy-games/" target="_blank"><strong>Best strategy games</strong></a>: Number crunching<br /><a href="https://www.pcgamer.com/best-open-world-games/" target="_blank"><strong>Best open world games</strong></a>: Unlimited exploration<br /><a href="https://www.pcgamer.com/the-best-survival-games-on-pc/" target="_blank"><strong>Best survival games</strong></a>: Live craft love<br /><a href="https://www.pcgamer.com/best-horror-games/" target="_blank"><strong>Best horror games</strong></a>: Fight or flight</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The advent of first-person shooters introduced a wild frontier of unregulated video game level packs, and it ended in a lawsuit that changed copyright forever ]]></title>
                                                                                                <dc:content><![CDATA[ <div  class="fancy-box"><div class="fancy_box-title">Weird Weekend</div><div class="fancy_box_body"><p class="fancy-box__body-text"><a data-analytics-id="inline-link" href="https://www.pcgamer.com/uk/tag/weird-weekend/" target="_blank">Weird Weekend</a> is our regular Saturday column where we celebrate PC gaming oddities: peculiar games, strange bits of trivia, forgotten history. Pop back every weekend to find out what Jeremy, Josh and Rick have become obsessed with this time, whether it's the <a data-analytics-id="inline-link" href="https://www.pcgamer.com/games/i-embarked-on-a-mission-to-answer-the-most-important-question-in-pc-gaming-how-tall-is-garrett-from-thief/" target="_blank">canon height of Thief's Garrett</a> or that time someone in the Vatican pirated <a data-analytics-id="inline-link" href="https://www.pcgamer.com/games/sports/a-part-of-my-brain-will-always-be-dedicated-to-the-time-someone-in-the-vatican-pirated-football-manager-2013/" target="_blank">Football Manager</a>.</p></div></div><p>For most of PC gaming history, there were three states of PC game—your regular old video game, expansions/DLC, and mods. But for a brief period in the 1990s, there was a fourth state, the level pack—collections of levels for the early first-person shooters like <a href="https://www.pcgamer.com/uk/duke-nukem-3d/">Duke Nukem 3D</a> and <a href="https://www.pcgamer.com/uk/quake/">Quake</a>.</p><p>These level packs were sold on shelves as boxed products just like their video game counterparts. But they occupied a far more amorphous position between the other three states of PC gaming. In form and structure, they were similar to expansions, and are sometimes bundled into the same category. The Master Levels for Doom 2, for example, are regarded as an official expansion to that game. </p><p>Others, however, were marketed as "Official Mission Packs," like Quake's additional episodes Scourge of Armagon and Dissolution of Eternity. On top of these were <em>unofficial </em>mission packs, like those published by Wizardworks for Duke Nukem 3D.</p><p>Some of these level packs played small but important roles in FPS history, acting as the primordial soup from which some of the genre's latter-day designers emerged. But they also represented a digital Wild West, varying greatly in both quality and legality, and it all ultimately ended in tears.</p><p>The best of these mission packs were generally created by sanctioned third-party developers like Sunstorm Interactive. Specialists in Duke Nukem 3D level packs, Sunstorm were responsible for <a href="https://dukenukem.fandom.com/wiki/Duke_Caribbean:_Life%27s_a_Beach">Duke Caribbean: Life's A Beach</a>, <a href="https://dukenukem.fandom.com/wiki/Duke_It_Out_in_D.C.">Duke It Out in DC</a> and <a href="https://dukenukem.fandom.com/wiki/Duke_Xtreme">Duke Xtreme</a>—three of the most well-regarded level packs for 3D Realms' 1996 FPS.</p><p>It was at studios like Sunstorm where many of the second generation of FPS level designers would cut their teeth. One such designer was Charlie Wiederhold, a college kid who was obsessed with making maps for games like Rise of the Triad and Duke 3D, who would go on to work on games like <a href="https://www.pcgamer.com/uk/duke-nukem-forever/">Duke Nukem Forever</a>, <a href="https://www.pcgamer.com/borderlands/">Borderlands</a>, and <a href="https://www.pcgamer.com/uk/call-of-duty-modern-warfare-2/">Call of Duty: Modern Warfare 2</a>.  </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:956px;"><p class="vanilla-image-block" style="padding-top:62.24%;"><img id="bSbaPw33Ji25xKhDHJdvM7" name="dukecaribbean 1" alt="Duke in the Caribbean" src="https://cdn.mos.cms.futurecdn.net/bSbaPw33Ji25xKhDHJdvM7-1920-80.jpg" mos="" align="middle" fullscreen="" width="956" height="595" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Sunstorm Interactive)</span></figcaption></figure><p>Wiederhold was recruited by Sunstorm after designing a level for a LAN tournament he was involved with called the Duke Nukem 3D Rodeo Shootout, which was attended by the likes of Randy Pitchford and Richard 'Levelord' Gray. In fact, there is an <a href="https://groups.google.com/g/alt.games.apogee/c/kl-QoqlfKuY/m/HxBgM9pen90J">archived Usenet post</a> on Google Groups written <em>by </em>Wiederhold advertising the tournament: "I got hired by Sunstorm to write an installer for the Duke addon pack that they were making," Wiederhold recalls. "I got the chance to do one of the levels for Duke It Out in DC, and [combined with] the installer, I looked around and thought 'why am I still going to college?'"</p><p>Most of the levels for Duke It Out in DC and Duke Caribbean were built by Wiederhold and just one other designer, Robert Travis. And it wasn't just Duke mission packs they built together. They also worked on Wanton Destruction for Shadow Warrior, Cryptic Passage for Blood, and the beautifully named Suckin' Grits on Route 66 for Redneck Rampage. </p><p>All these level packs were released in the space of two years, with Sunstorm rattling them out as quickly as they could make them. "It was very Wild West back then," Wiederhold says. "There was no structure to the industry yet. It felt like it was forging into new territory," </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:957px;"><p class="vanilla-image-block" style="padding-top:62.28%;"><img id="TdJi7edpAoyss4bKA34QuB" name="dukedc1" alt="Duke Nukem at the White House" src="https://cdn.mos.cms.futurecdn.net/TdJi7edpAoyss4bKA34QuB-1920-80.jpg" mos="" align="middle" fullscreen="" width="957" height="596" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Sunstorm Interactive)</span></figcaption></figure><p>But this didn't matter to Wiederhold. Getting paid to build these levels for his favourite shooters was his dream job: "It was definitely some of the most fun [I'd had] as a 20-21 year old, just dreaming about making this stuff," he says. "I['d] put my headphones on, listen to soundtracks and make levels."</p><p>A big part of the reason why Sunstorm could put out so many mission packs for Duke and other Build Engine games was because the tech had far superior mapping tools than earlier shooters like Doom and Rise of the Triad: </p><p>"With Doom, from what I understand, at the time you actually had to save the level and go into the game to see your level fully 3D, whereas Duke 3D, you could actually be flying around in it, so you could see the sprites that you're placing," Wiederhold says. He also points out that 3D Realms had actually "written some documentation. That was a big thing. The 3D Realms guys actually provided a little bit of documentation on how to use it."</p><figure class="van-image-figure pull-right inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:803px;"><p class="vanilla-image-block" style="padding-top:116.06%;"><img id="qiRjt6uwVQwrznA8qpKF8L" name="dukeassault cover" alt="The cover for Duke Assault" src="https://cdn.mos.cms.futurecdn.net/qiRjt6uwVQwrznA8qpKF8L-1920-80.jpg" mos="" align="right" fullscreen="" width="803" height="932" attribution="" endorsement="" class="pull-rightinline" /></p></div></div><figcaption itemprop="caption description" class="pull-right inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Wizardworks )</span></figcaption></figure><p>While Sunstorm was one of several developers trying to capitalise on the new FPS craze, for Wiederhold, mapping was about more than just cashing in. The FPS was evolving at lightning speed, and Wiederhold wanted to make what small contribution he could to that. "For Duke, I was always trying to push some technical boundary. Like really test all the elements of it. But the only reason I could do that in a sane way was because I could go in and see it. If I'm doing some sort of sector over sector thing or some other crazy effect, I could see it there in the editor."</p><p>Not every level pack creator was so scrupulous, however. Alongside Sunstorm's creations, Wizardworks also published numerous level packs of dubious quality. One of these was <a href="https://dukenukem.fandom.com/wiki/Duke_Assault">Duke Assault</a>, which essentially scraped over 1,500 user-made Duke Nukem 3D levels from the Internet and bundled them into the box. No attempt was made to curate these levels, so the pack included many maps that were either unfinished maps from first-time designers, or "troll" maps that would kill the player upon spawning.</p><p>Alongside low-grade efforts like Duke Assault, Duke Nukem received dozens of mission packs that were boxed and sold on shelves despite being completely unauthorised. The most infamous of these was the <a href="https://dukenukem.fandom.com/wiki/Nuke_It">Nuke It</a> series. Like Duke Assault, the Nuke It series were shovelware expansion packs developed by Micro Star Software filled with player-created levels. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="BK5nyJKavRGdEsFVZxCL7U" name="arcane dimensions" alt="A level from the Arcane Dimensions mod" src="https://cdn.mos.cms.futurecdn.net/BK5nyJKavRGdEsFVZxCL7U-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Bethesda / simonoc)</span></figcaption></figure><p>Uncertain of its legal standing, Micro Star filed for a declaratory judgement that it had not committed copyright infringement. Duke Nukem 3D's publisher FormGen counter-sued, claiming that the maps found in Nuke It constituted derivative works of Duke Nukem 3D. In 1998, the court found in FormGen's favour. </p><p>The ruling made <a href="https://en.wikipedia.org/wiki/Micro_Star_v._FormGen_Inc.">Micro Star v. FormGen</a> a landmark case in US copyright law, as it ultimately determined that video game mods count as derivative works, and constitute a copyright violation if made without the holder's consent. While most game developers wisely tolerate and see the benefits of supporting the modding community, those mods exist at the grace of those companies.</p><p>Following Micro Star v. Formgen, unregulated FPS mission packs quickly died out. Third-party addons for PC games became formalised as either official expansions or unofficial mods, But the enthusiasm for expanding the FPS classics of the '90s lived on, and today the mapping scene for many hallmark shooters is arguably better than it has ever been. From unofficial masterpieces like <a href="https://www.moddb.com/mods/arcane-dimensions">Arcane Dimensions</a>, to official new epidoes like Quake's <a href="https://www.pcgamer.com/games/fps/30-years-after-it-ruined-id-software-quake-gets-another-big-update-while-the-studio-once-again-grapples-with-adversity/">Dawn of the Machine</a>, these spellbinding addons derive from the exact same desires that drove Wiederhold to push the Build engine to its limits thirty years ago.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/the-advent-of-first-person-shooters-introduced-a-wild-frontier-of-unregulated-video-game-level-packs-and-it-ended-in-a-lawsuit-that-changed-copyright-forever/</link>
                                                                            <description>
                            <![CDATA[ Revisiting the forgotten fourth state of PC gaming. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">G3axM6wQhk5Nz9FrHAcgDe</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/qLPx2oUXGMtiS7tpZwsSMk-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 10 Oct 2026 14:00:00 +0000</pubDate>                                                                                                                                <updated>Sat, 10 Oct 2026 17:04:08 +0000</updated>
                                                                                                                                            <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Rick Lane ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ &lt;p&gt;Rick has been fascinated by PC gaming since he was seven years old, when he used to sneak into his dad&#039;s home office for covert sessions of Doom. He grew up on a diet of similarly unsuitable games, with favourites including Quake, Thief, Half-Life and Deus Ex. Between 2013 and 2022, Rick was games editor of Custom PC magazine and associated website &lt;a href=&quot;http://bit-tech.net/&quot; target=&quot;_blank&quot;&gt;bit-tech.net&lt;/a&gt;. But he&#039;s always kept one foot in freelance games journalism, writing for publications like Edge, Eurogamer, the Guardian and, naturally, PC Gamer. While he&#039;ll play anything that can be controlled with a keyboard and mouse, he has a particular passion for first-person shooters and immersive sims.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/qLPx2oUXGMtiS7tpZwsSMk-1920-80.jpg">
                                                            <media:credit><![CDATA[Sunstorm Interactive]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Duke Nukem level pack set in Washington DC]]></media:description>                                                            <media:text><![CDATA[A Duke Nukem level pack set in Washington DC]]></media:text>
                                <media:title type="plain"><![CDATA[A Duke Nukem level pack set in Washington DC]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/qLPx2oUXGMtiS7tpZwsSMk-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Weird Weekend</div><div class="fancy_box_body"><p class="fancy-box__body-text"><a data-analytics-id="inline-link" href="https://www.pcgamer.com/uk/tag/weird-weekend/" target="_blank">Weird Weekend</a> is our regular Saturday column where we celebrate PC gaming oddities: peculiar games, strange bits of trivia, forgotten history. Pop back every weekend to find out what Jeremy, Josh and Rick have become obsessed with this time, whether it's the <a data-analytics-id="inline-link" href="https://www.pcgamer.com/games/i-embarked-on-a-mission-to-answer-the-most-important-question-in-pc-gaming-how-tall-is-garrett-from-thief/" target="_blank">canon height of Thief's Garrett</a> or that time someone in the Vatican pirated <a data-analytics-id="inline-link" href="https://www.pcgamer.com/games/sports/a-part-of-my-brain-will-always-be-dedicated-to-the-time-someone-in-the-vatican-pirated-football-manager-2013/" target="_blank">Football Manager</a>.</p></div></div><p>For most of PC gaming history, there were three states of PC game—your regular old video game, expansions/DLC, and mods. But for a brief period in the 1990s, there was a fourth state, the level pack—collections of levels for the early first-person shooters like <a href="https://www.pcgamer.com/uk/duke-nukem-3d/">Duke Nukem 3D</a> and <a href="https://www.pcgamer.com/uk/quake/">Quake</a>.</p><p>These level packs were sold on shelves as boxed products just like their video game counterparts. But they occupied a far more amorphous position between the other three states of PC gaming. In form and structure, they were similar to expansions, and are sometimes bundled into the same category. The Master Levels for Doom 2, for example, are regarded as an official expansion to that game. </p><p>Others, however, were marketed as "Official Mission Packs," like Quake's additional episodes Scourge of Armagon and Dissolution of Eternity. On top of these were <em>unofficial </em>mission packs, like those published by Wizardworks for Duke Nukem 3D.</p><p>Some of these level packs played small but important roles in FPS history, acting as the primordial soup from which some of the genre's latter-day designers emerged. But they also represented a digital Wild West, varying greatly in both quality and legality, and it all ultimately ended in tears.</p><p>The best of these mission packs were generally created by sanctioned third-party developers like Sunstorm Interactive. Specialists in Duke Nukem 3D level packs, Sunstorm were responsible for <a href="https://dukenukem.fandom.com/wiki/Duke_Caribbean:_Life%27s_a_Beach">Duke Caribbean: Life's A Beach</a>, <a href="https://dukenukem.fandom.com/wiki/Duke_It_Out_in_D.C.">Duke It Out in DC</a> and <a href="https://dukenukem.fandom.com/wiki/Duke_Xtreme">Duke Xtreme</a>—three of the most well-regarded level packs for 3D Realms' 1996 FPS.</p><p>It was at studios like Sunstorm where many of the second generation of FPS level designers would cut their teeth. One such designer was Charlie Wiederhold, a college kid who was obsessed with making maps for games like Rise of the Triad and Duke 3D, who would go on to work on games like <a href="https://www.pcgamer.com/uk/duke-nukem-forever/">Duke Nukem Forever</a>, <a href="https://www.pcgamer.com/borderlands/">Borderlands</a>, and <a href="https://www.pcgamer.com/uk/call-of-duty-modern-warfare-2/">Call of Duty: Modern Warfare 2</a>.  </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:956px;"><p class="vanilla-image-block" style="padding-top:62.24%;"><img id="bSbaPw33Ji25xKhDHJdvM7" name="dukecaribbean 1" alt="Duke in the Caribbean" src="https://cdn.mos.cms.futurecdn.net/bSbaPw33Ji25xKhDHJdvM7-1920-80.jpg" mos="" align="middle" fullscreen="" width="956" height="595" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Sunstorm Interactive)</span></figcaption></figure><p>Wiederhold was recruited by Sunstorm after designing a level for a LAN tournament he was involved with called the Duke Nukem 3D Rodeo Shootout, which was attended by the likes of Randy Pitchford and Richard 'Levelord' Gray. In fact, there is an <a href="https://groups.google.com/g/alt.games.apogee/c/kl-QoqlfKuY/m/HxBgM9pen90J">archived Usenet post</a> on Google Groups written <em>by </em>Wiederhold advertising the tournament: "I got hired by Sunstorm to write an installer for the Duke addon pack that they were making," Wiederhold recalls. "I got the chance to do one of the levels for Duke It Out in DC, and [combined with] the installer, I looked around and thought 'why am I still going to college?'"</p><p>Most of the levels for Duke It Out in DC and Duke Caribbean were built by Wiederhold and just one other designer, Robert Travis. And it wasn't just Duke mission packs they built together. They also worked on Wanton Destruction for Shadow Warrior, Cryptic Passage for Blood, and the beautifully named Suckin' Grits on Route 66 for Redneck Rampage. </p><p>All these level packs were released in the space of two years, with Sunstorm rattling them out as quickly as they could make them. "It was very Wild West back then," Wiederhold says. "There was no structure to the industry yet. It felt like it was forging into new territory," </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:957px;"><p class="vanilla-image-block" style="padding-top:62.28%;"><img id="TdJi7edpAoyss4bKA34QuB" name="dukedc1" alt="Duke Nukem at the White House" src="https://cdn.mos.cms.futurecdn.net/TdJi7edpAoyss4bKA34QuB-1920-80.jpg" mos="" align="middle" fullscreen="" width="957" height="596" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Sunstorm Interactive)</span></figcaption></figure><p>But this didn't matter to Wiederhold. Getting paid to build these levels for his favourite shooters was his dream job: "It was definitely some of the most fun [I'd had] as a 20-21 year old, just dreaming about making this stuff," he says. "I['d] put my headphones on, listen to soundtracks and make levels."</p><p>A big part of the reason why Sunstorm could put out so many mission packs for Duke and other Build Engine games was because the tech had far superior mapping tools than earlier shooters like Doom and Rise of the Triad: </p><p>"With Doom, from what I understand, at the time you actually had to save the level and go into the game to see your level fully 3D, whereas Duke 3D, you could actually be flying around in it, so you could see the sprites that you're placing," Wiederhold says. He also points out that 3D Realms had actually "written some documentation. That was a big thing. The 3D Realms guys actually provided a little bit of documentation on how to use it."</p><figure class="van-image-figure pull-right inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:803px;"><p class="vanilla-image-block" style="padding-top:116.06%;"><img id="qiRjt6uwVQwrznA8qpKF8L" name="dukeassault cover" alt="The cover for Duke Assault" src="https://cdn.mos.cms.futurecdn.net/qiRjt6uwVQwrznA8qpKF8L-1920-80.jpg" mos="" align="right" fullscreen="" width="803" height="932" attribution="" endorsement="" class="pull-rightinline" /></p></div></div><figcaption itemprop="caption description" class="pull-right inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Wizardworks )</span></figcaption></figure><p>While Sunstorm was one of several developers trying to capitalise on the new FPS craze, for Wiederhold, mapping was about more than just cashing in. The FPS was evolving at lightning speed, and Wiederhold wanted to make what small contribution he could to that. "For Duke, I was always trying to push some technical boundary. Like really test all the elements of it. But the only reason I could do that in a sane way was because I could go in and see it. If I'm doing some sort of sector over sector thing or some other crazy effect, I could see it there in the editor."</p><p>Not every level pack creator was so scrupulous, however. Alongside Sunstorm's creations, Wizardworks also published numerous level packs of dubious quality. One of these was <a href="https://dukenukem.fandom.com/wiki/Duke_Assault">Duke Assault</a>, which essentially scraped over 1,500 user-made Duke Nukem 3D levels from the Internet and bundled them into the box. No attempt was made to curate these levels, so the pack included many maps that were either unfinished maps from first-time designers, or "troll" maps that would kill the player upon spawning.</p><p>Alongside low-grade efforts like Duke Assault, Duke Nukem received dozens of mission packs that were boxed and sold on shelves despite being completely unauthorised. The most infamous of these was the <a href="https://dukenukem.fandom.com/wiki/Nuke_It">Nuke It</a> series. Like Duke Assault, the Nuke It series were shovelware expansion packs developed by Micro Star Software filled with player-created levels. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="BK5nyJKavRGdEsFVZxCL7U" name="arcane dimensions" alt="A level from the Arcane Dimensions mod" src="https://cdn.mos.cms.futurecdn.net/BK5nyJKavRGdEsFVZxCL7U-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Bethesda / simonoc)</span></figcaption></figure><p>Uncertain of its legal standing, Micro Star filed for a declaratory judgement that it had not committed copyright infringement. Duke Nukem 3D's publisher FormGen counter-sued, claiming that the maps found in Nuke It constituted derivative works of Duke Nukem 3D. In 1998, the court found in FormGen's favour. </p><p>The ruling made <a href="https://en.wikipedia.org/wiki/Micro_Star_v._FormGen_Inc.">Micro Star v. FormGen</a> a landmark case in US copyright law, as it ultimately determined that video game mods count as derivative works, and constitute a copyright violation if made without the holder's consent. While most game developers wisely tolerate and see the benefits of supporting the modding community, those mods exist at the grace of those companies.</p><p>Following Micro Star v. Formgen, unregulated FPS mission packs quickly died out. Third-party addons for PC games became formalised as either official expansions or unofficial mods, But the enthusiasm for expanding the FPS classics of the '90s lived on, and today the mapping scene for many hallmark shooters is arguably better than it has ever been. From unofficial masterpieces like <a href="https://www.moddb.com/mods/arcane-dimensions">Arcane Dimensions</a>, to official new epidoes like Quake's <a href="https://www.pcgamer.com/games/fps/30-years-after-it-ruined-id-software-quake-gets-another-big-update-while-the-studio-once-again-grapples-with-adversity/">Dawn of the Machine</a>, these spellbinding addons derive from the exact same desires that drove Wiederhold to push the Build engine to its limits thirty years ago.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Wardogs will bribe players with cash and XP to pick Blue team in Season 2 ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/quGfuiKE7kHW9W8XDcB8yS.jpg" alt="wardogs blue team" /></p></div><div class="card__content"><h3 class="card__title">Blue team reinforcements</h3><div class="card__description-wrapper"><div class="card__description"><ul><li>"Lonestar cash and XP bonus. Season 2 only. New Bakurani spawn." </li><li>"We're looking at how we can help the win rate of a certain team." -Bulkhead CEO Joe Brammer (via <a href="https://youtu.be/J2VxjMnMDw4" target="_blank">"Road to Season 2" devlog</a>)</li></ul></div></div></div></div><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/J2VxjMnMDw4" allowfullscreen=""></iframe></div></div><p>Bulkhead wants to boost one team's win rate, and it's willing to bribe its players (with in-game cash) to do it. Despite all three teams starting on equal grounds, many <a href="https://www.pcgamer.com/games/fps/wardogs-players-are-actively-avoiding-one-team-in-particular-they-are-literally-the-dumbest-people-on-the-planet/">Wardogs players have been avoiding Blue from the start</a>, going so far as to idle on the selection screen for minutes waiting for a slot to open on Green or Red.</p><p>The are practical balancing problems that work against Blue team, like their lackluster camouflage and unfavorable spawn points (Season 2 is tackling Bakurani), but the  bonuses are meant to counter the other reason Blue sucks, as I covered last month:</p><p>"Another, less talked about possibility, is that Blue team's infamy is a self-fulfilling prophecy. Folks have one bad night with Lonestar and decide to believe the reputation, or hear it's the team to avoid, or notice everyone else actively avoiding it, and you end up with a Blue team full of less experienced players."</p><p>XP and cash bribes are a drastic move, but should have a real impact. It's unclear how big these boosts will be, but I expect Blue will instantly become the most popular team by a wide margin in Season 2.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="U9yqPBSZdjGNZrCFSwxKzH" name="WARDOGS  Road to Season 02 00-10-26" alt="Wardogs blue team" src="https://cdn.mos.cms.futurecdn.net/U9yqPBSZdjGNZrCFSwxKzH-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Bulkhead)</span></figcaption></figure><p>I wonder, though, if this problem wasn't slowly sorting itself out already. I've noticed the Blue bias dying down over the past couple weeks—the faction is still mostly losing in the NA West servers I frequent, but they're also scoring points and competing, which is a positive sign. I've even been on a couple of <em>winning </em>Blue teams, if you can believe it.</p><p>Wardogs Season 2 is shaping up to be bigger than I expected so soon after release. The October 15 patch also adds new guns, vehicles, rainy weather on all maps, and more to be revealed in the patch notes next week. It also marks the game's first progression wipe—everyone's going back to level 1.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/wardogs-will-bribe-players-with-cash-and-xp-to-pick-blue-team-in-season-2/</link>
                                                                            <description>
                            <![CDATA[ "We're looking at how we can help the win rate of a certain team." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">wJmP2WX9KSyM9XU6oXVmE3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/quGfuiKE7kHW9W8XDcB8yS-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 09 Oct 2026 16:29:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Morgan Park ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/VVB5GCgA3xLhkX8FVAWw5D-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/quGfuiKE7kHW9W8XDcB8yS-1920-80.jpg">
                                                            <media:credit><![CDATA[Bulkhead]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[wardogs blue team]]></media:description>                                                            <media:text><![CDATA[wardogs blue team]]></media:text>
                                <media:title type="plain"><![CDATA[wardogs blue team]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/quGfuiKE7kHW9W8XDcB8yS-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/quGfuiKE7kHW9W8XDcB8yS.jpg" alt="wardogs blue team" /></p></div><div class="card__content"><h3 class="card__title">Blue team reinforcements</h3><div class="card__description-wrapper"><div class="card__description"><ul><li>"Lonestar cash and XP bonus. Season 2 only. New Bakurani spawn." </li><li>"We're looking at how we can help the win rate of a certain team." -Bulkhead CEO Joe Brammer (via <a href="https://youtu.be/J2VxjMnMDw4" target="_blank">"Road to Season 2" devlog</a>)</li></ul></div></div></div></div><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/J2VxjMnMDw4" allowfullscreen=""></iframe></div></div><p>Bulkhead wants to boost one team's win rate, and it's willing to bribe its players (with in-game cash) to do it. Despite all three teams starting on equal grounds, many <a href="https://www.pcgamer.com/games/fps/wardogs-players-are-actively-avoiding-one-team-in-particular-they-are-literally-the-dumbest-people-on-the-planet/">Wardogs players have been avoiding Blue from the start</a>, going so far as to idle on the selection screen for minutes waiting for a slot to open on Green or Red.</p><p>The are practical balancing problems that work against Blue team, like their lackluster camouflage and unfavorable spawn points (Season 2 is tackling Bakurani), but the  bonuses are meant to counter the other reason Blue sucks, as I covered last month:</p><p>"Another, less talked about possibility, is that Blue team's infamy is a self-fulfilling prophecy. Folks have one bad night with Lonestar and decide to believe the reputation, or hear it's the team to avoid, or notice everyone else actively avoiding it, and you end up with a Blue team full of less experienced players."</p><p>XP and cash bribes are a drastic move, but should have a real impact. It's unclear how big these boosts will be, but I expect Blue will instantly become the most popular team by a wide margin in Season 2.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="U9yqPBSZdjGNZrCFSwxKzH" name="WARDOGS  Road to Season 02 00-10-26" alt="Wardogs blue team" src="https://cdn.mos.cms.futurecdn.net/U9yqPBSZdjGNZrCFSwxKzH-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Bulkhead)</span></figcaption></figure><p>I wonder, though, if this problem wasn't slowly sorting itself out already. I've noticed the Blue bias dying down over the past couple weeks—the faction is still mostly losing in the NA West servers I frequent, but they're also scoring points and competing, which is a positive sign. I've even been on a couple of <em>winning </em>Blue teams, if you can believe it.</p><p>Wardogs Season 2 is shaping up to be bigger than I expected so soon after release. The October 15 patch also adds new guns, vehicles, rainy weather on all maps, and more to be revealed in the patch notes next week. It also marks the game's first progression wipe—everyone's going back to level 1.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Counter-Strike 2 player dedicates Master's thesis to rooting out cheaters, creates grade A player tracking system ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Cheating: it's why we can't have nice things. Whether your online shooter of choice is beset by players targeting you through walls, or you're a Linux user who would definitely be playing more games <a href="https://www.pcgamer.com/software/linux/2025-might-have-been-the-year-for-linux-gaming-but-theres-still-a-way-to-go-until-i-switch-from-windows/" target="_blank">were it not for kernel-level anti-cheat systems</a>, the actions of a few spoil the fun for many. Banning cheating players is the obvious thing to do, but what's to stop bad eggs making fresh accounts?</p><p>A student at the Norwegian University of Science and Technology has a few ideas. Named Christopher B. Didriksen, the student even based his Master's thesis on one possible biometric-based solution. <a href="https://www.reddit.com/r/cs2/comments/1wxh5mp/i_found_a_way_to_make_bans_follow_players_instead/?share_id=KJc9QD0Ca5FaXr3UQdwcS&amp;utm_content=1&amp;utm_medium=ios_app&amp;utm_name=ioscss&amp;utm_source=share&amp;utm_term=1" target="_blank">Sharing some of his research findings on Reddit</a>, Didriksen explained that players in <a href="https://www.pcgamer.com/counter-strike-2/" target="_blank">Counter-Strike 2</a> can be differentiated based on how they use their mouse and keyboard in-game. Based on these movements, repeat offenders could then be identified and banned for good.</p><p>The researcher analysed a number of 'demos' resulting from competitive CS2 matches. Using the two separate signals from a player's mouse and keyboard during these demos, a 'fingerprint' can be identified that "stays stable across maps, sessions, settings [...] across matches played months apart, and across a sensitivity change from 800 to 640 eDPI." By the sounds of it, you will shine through no matter what bargain bucket peripheral you may use to game.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eGbQVX"></div>                            </div>                            <script src="https://kwizly.com/embed/eGbQVX.js" async=""></script><p>In a dataset of more than 1,000 players, mouse movement biometrics correctly identified players "every time [...] but often only by a fine margin," and keyboard use "picked out the right player 98% of the time." Cross-referencing these two metrics identifies the humans behind the accounts with a high rate of accuracy. Didriksen writes that this method "found smurfs nobody had reported, and it is fast enough to check every new match against all of CS2's monthly players."</p><p>For those a little unclear what those tiny blue fellas have to do with Counter-Strike 2, 'smurf' is the term for a secondary account belonging to an otherwise experienced or high-ranking player. Didriksen proposes that his movement 'finger-printing' system would "sit next to [Valve Anti-Cheat] and Trust Factor and answer the one question they can't. Is this the same human?"</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:732px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="Zev2Cf9DbwqfSkapuLYRTZ" name="cs2 e.jpg" alt="Counter-Strike 2" src="https://cdn.mos.cms.futurecdn.net/Zev2Cf9DbwqfSkapuLYRTZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="732" height="412" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Valve)</span></figcaption></figure><p>The motivation for Didriksen's thesis was a dissatisfaction with existing anti-cheat and banning systems—essentially, a banned player could make a new 'smurf' account and be "back in a match the same evening." Didriksen notes his proposed method is not a perfect solution to this problem, as it essentially removes the possibility that a banned player may change their cheating ways on a fresh account. He also notes that his fingerprinting system is easily confounded by shared accounts.</p><p>Still, a number of Redditors signed up to participate in Didriksen's research earlier this year, with some even revealing their Smurf accounts. Didriksen says this "turned out to be some of the most valuable data I had." For this reason, he goes on to tell the r/CS2 subreddit, "The thesis is now finished and got an A, and none of it would have been possible without you."</p><p>And they said videogames could never teach you anything!</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/counter-strike-2-player-dedicates-masters-thesis-to-rooting-out-cheaters-creates-grade-a-player-tracking-system/</link>
                                                                            <description>
                            <![CDATA[ Now why didn't I think of that for my dissertation? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">zFLe6wRrHyJCo2eAd697LL</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/UX34PHK24PM3Q77NU38nZX-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 09 Oct 2026 14:59:39 +0000</pubDate>                                                                                                                                <updated>Fri, 09 Oct 2026 14:59:52 +0000</updated>
                                                                                                                                            <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/UX34PHK24PM3Q77NU38nZX-1920-80.jpg">
                                                            <media:credit><![CDATA[Valve]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A player emerges from a cloud of smoke, as another player takes aim from near a wall.]]></media:description>                                                            <media:text><![CDATA[A player emerges from a cloud of smoke, as another player takes aim from near a wall.]]></media:text>
                                <media:title type="plain"><![CDATA[A player emerges from a cloud of smoke, as another player takes aim from near a wall.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/UX34PHK24PM3Q77NU38nZX-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Cheating: it's why we can't have nice things. Whether your online shooter of choice is beset by players targeting you through walls, or you're a Linux user who would definitely be playing more games <a href="https://www.pcgamer.com/software/linux/2025-might-have-been-the-year-for-linux-gaming-but-theres-still-a-way-to-go-until-i-switch-from-windows/" target="_blank">were it not for kernel-level anti-cheat systems</a>, the actions of a few spoil the fun for many. Banning cheating players is the obvious thing to do, but what's to stop bad eggs making fresh accounts?</p><p>A student at the Norwegian University of Science and Technology has a few ideas. Named Christopher B. Didriksen, the student even based his Master's thesis on one possible biometric-based solution. <a href="https://www.reddit.com/r/cs2/comments/1wxh5mp/i_found_a_way_to_make_bans_follow_players_instead/?share_id=KJc9QD0Ca5FaXr3UQdwcS&amp;utm_content=1&amp;utm_medium=ios_app&amp;utm_name=ioscss&amp;utm_source=share&amp;utm_term=1" target="_blank">Sharing some of his research findings on Reddit</a>, Didriksen explained that players in <a href="https://www.pcgamer.com/counter-strike-2/" target="_blank">Counter-Strike 2</a> can be differentiated based on how they use their mouse and keyboard in-game. Based on these movements, repeat offenders could then be identified and banned for good.</p><p>The researcher analysed a number of 'demos' resulting from competitive CS2 matches. Using the two separate signals from a player's mouse and keyboard during these demos, a 'fingerprint' can be identified that "stays stable across maps, sessions, settings [...] across matches played months apart, and across a sensitivity change from 800 to 640 eDPI." By the sounds of it, you will shine through no matter what bargain bucket peripheral you may use to game.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eGbQVX"></div>                            </div>                            <script src="https://kwizly.com/embed/eGbQVX.js" async=""></script><p>In a dataset of more than 1,000 players, mouse movement biometrics correctly identified players "every time [...] but often only by a fine margin," and keyboard use "picked out the right player 98% of the time." Cross-referencing these two metrics identifies the humans behind the accounts with a high rate of accuracy. Didriksen writes that this method "found smurfs nobody had reported, and it is fast enough to check every new match against all of CS2's monthly players."</p><p>For those a little unclear what those tiny blue fellas have to do with Counter-Strike 2, 'smurf' is the term for a secondary account belonging to an otherwise experienced or high-ranking player. Didriksen proposes that his movement 'finger-printing' system would "sit next to [Valve Anti-Cheat] and Trust Factor and answer the one question they can't. Is this the same human?"</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:732px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="Zev2Cf9DbwqfSkapuLYRTZ" name="cs2 e.jpg" alt="Counter-Strike 2" src="https://cdn.mos.cms.futurecdn.net/Zev2Cf9DbwqfSkapuLYRTZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="732" height="412" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Valve)</span></figcaption></figure><p>The motivation for Didriksen's thesis was a dissatisfaction with existing anti-cheat and banning systems—essentially, a banned player could make a new 'smurf' account and be "back in a match the same evening." Didriksen notes his proposed method is not a perfect solution to this problem, as it essentially removes the possibility that a banned player may change their cheating ways on a fresh account. He also notes that his fingerprinting system is easily confounded by shared accounts.</p><p>Still, a number of Redditors signed up to participate in Didriksen's research earlier this year, with some even revealing their Smurf accounts. Didriksen says this "turned out to be some of the most valuable data I had." For this reason, he goes on to tell the r/CS2 subreddit, "The thesis is now finished and got an A, and none of it would have been possible without you."</p><p>And they said videogames could never teach you anything!</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Crowning the best FPS mode of all time through 1v1 combat (ROUND 2) ]]></title>
                                                                                                <dc:content><![CDATA[ <div  class="fancy-box"><div class="fancy_box-title">FOV 90</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cTeZTtGXV6uYdPks5D77R7" name="pcg_logo_fov90" caption="" alt="FOV 90 column" src="https://cdn.mos.cms.futurecdn.net/cTeZTtGXV6uYdPks5D77R7-1920-80.png" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude" /></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text">Welcome to FOV 90, an FPS column from staff writer Morgan Park. Every other week, I cover topics relevant to first-person shooter enjoyers, spanning everything from multiplayer and singleplayer to the old and the new.</p></div></div><p>Welcome back to another special community tournament edition of FOV 90, the only FPS column that I'm aware of.</p><p>Last week, we started the work of determining <a href="https://www.pcgamer.com/games/fps/making-our-favorite-fps-modes-1v1-to-decide-the-greatest-of-them-all/" target="_blank">the greatest FPS mode of all time through spirited democracy</a>. In Round 1, 16 classic and modern modes were pitted against each other in 1v1 matchups. The seeding, which I chose myself, was completely uncontroversial and <em>everyone</em> liked it—especially the part where I made them choose between Conquest and Domination.</p><p>Over <strong>7,000 votes</strong> were tallied over five days, and the results are in. </p><p>🥁<em>drum roooooooooolllllllllllllll</em>🥁</p><h3 class="article-body__section" id="section-round-1-results"><span>Round 1 Results</span></h3><ul><li><strong>Team Deathmatch (75%) wins</strong> over FFA/Deathmatch (25%)</li><li><strong>Battle Royale (52%)</strong> <strong>wins</strong> over Extraction (48%)</li><li><strong>Conquest (68%) wins</strong> over Domination (32%)</li><li><strong>Bomb Defusal (85%) wins</strong> over Hostage (15%)</li><li><strong>Payload (52%) wins</strong> over Gun Game (48%)</li><li><strong>Infection (61%) wins</strong> over Prop Hunt (39%)</li><li><strong>Capture the Flag (91%) wins</strong> over VIP (9%)</li><li><strong>Attack &amp; Defend (52%)</strong> <strong>wins</strong> over King of the Hill (48%)</li></ul><p>I think we can all agree a few of those winners were predictable—I can see Team Deathmatch or Capture the Flag going all the way at this rate—but several matchups surprised me. Battle royale just barely edges out Extraction while Gun Game is brought down by Payload. The voting body showed up for both serious and playful modes, which makes me happy. I also enjoyed watching you all share your votes and memories in the comments.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/NhNFHiRRrRVepMXn9xBwMB-1920-80.jpg" alt="FOV 90 comments" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/k3kzWfQ7kncVWXtmTLN8MB-1920-80.jpg" alt="FOV 90 comments" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sqmXfXm7TzNX6pXD996ddQ-1920-80.jpg" alt="FOV 90 comments" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2yYtau5LQVrsJJNbNHGJNB-1920-80.jpg" alt="FOV 90 comments" /><figcaption>We got a comedian over here.<small role="credit">Future</small></figcaption></figure></figure><p>And here's how PC Gamer's staff reacted to the results:</p><p>Yes, I'm a monster. But alas, it's time to bury our dead and move on. Round 2 is on!</p><h3 class="article-body__section" id="section-the-bracket"><span>The Bracket</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1880px;"><p class="vanilla-image-block" style="padding-top:63.35%;"><img id="D4JsMCFbJFG67LyhebgCEN" name="bracket round 2" alt="FOV 90 FPS modes tournament" src="https://cdn.mos.cms.futurecdn.net/D4JsMCFbJFG67LyhebgCEN-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1880" height="1191" attribution="" endorsement="" class="inline expandable" /><a href='https://cdn.mos.cms.futurecdn.net/D4JsMCFbJFG67LyhebgCEN-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Here are the lineups for Round 1. </span><span class="credit" itemprop="copyrightHolder">(Image credit: BracketHQ)</span></figcaption></figure><h2 id="round-2-vote">Round 2 - Vote!</h2><p>Read up on the matchups below and vote for your favorite. <strong>Round 2 voting closes on Monday, October 12 at 11:59 PM PDT</strong>. The more votes we get, the more interesting the results, so tell your friends! Next week we'll be back to share the results and begin Round 3.</p><h3 class="article-body__section" id="section-team-deathmatch-vs-battle-royale"><span>Team Deathmatch vs Battle Royale</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PT2K5X95kwr5zBni5ptzoN" name="tdm vs battle royale" alt="FOV 90 FPS modes tournament" src="https://cdn.mos.cms.futurecdn.net/PT2K5X95kwr5zBni5ptzoN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision, PUBG Corporation)</span></figcaption></figure><p><em>AKA: Team Slayer (Halo) // It's always called BR</em></p><p><strong>Intimate team-based action, or large-scale slaughter?</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Od2Kme"></div>                            </div>                            <script src="https://kwizly.com/embed/Od2Kme.js" async=""></script><h3 class="article-body__section" id="section-conquest-vs-bomb-defusal"><span>Conquest vs Bomb Defusal</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="VQhRsDSjScfMedQMCkgn7P" name="conquest v bomb" alt="FOV 90 FPS modes tournament" src="https://cdn.mos.cms.futurecdn.net/VQhRsDSjScfMedQMCkgn7P-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Valve, DICE)</span></figcaption></figure><p><em>AKA: Warfare (Hell Let Loose) //  Bomb (Rainbow Six Siege), Plant/Defuse (Valorant)</em></p><p><strong>The consensus king of competitive, or all-out warfare?</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKy99e"></div>                            </div>                            <script src="https://kwizly.com/embed/OKy99e.js" async=""></script><h3 class="article-body__section" id="section-payload-vs-infection"><span>Payload vs Infection</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="KsHr5ixFFxUxsd2vruLjrN" name="payload v infection" alt="FOV 90 FPS modes tournament" src="https://cdn.mos.cms.futurecdn.net/KsHr5ixFFxUxsd2vruLjrN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Valve, Microsoft)</span></figcaption></figure><p><em>AKA: It's always Payload and Infection, because they're perfect names</em></p><p><strong>Both unusual, asymmetrical formats that rely on staying together to get anything done. This will be a painful vote for me.</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-O6yEMW"></div>                            </div>                            <script src="https://kwizly.com/embed/O6yEMW.js" async=""></script><h3 class="article-body__section" id="section-capture-the-flag-vs-attack-defend"><span>Capture the Flag vs Attack &amp; Defend</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xR5vRCeeNDrRimV6qsmrqN" name="ctf v attack and defend" alt="FOV 90 FPS modes tournament" src="https://cdn.mos.cms.futurecdn.net/xR5vRCeeNDrRimV6qsmrqN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Unreal, Blizzard)</span></figcaption></figure><p><em>AKA: It's always CTF // 2CP (Overwatch), Breakthrough (Battlefield)</em></p><p><strong>Attack &amp; Defend was a surprise winner of Round 1, but CTF is coming off a 91% majority win. Will this be an upset?</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OaLRyW"></div>                            </div>                            <script src="https://kwizly.com/embed/OaLRyW.js" async=""></script> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/crowning-the-best-fps-mode-of-all-time-through-1v1-combat-round-2/</link>
                                                                            <description>
                            <![CDATA[ FFA is dead. King of the Hill? Kaput. What will be the last mode standing? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">oVB2iirQog5HGdw9TGdPjD</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/op5rexCxbL3FSYU6CUmJhc-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 08 Oct 2026 16:24:06 +0000</pubDate>                                                                                                                                <updated>Thu, 08 Oct 2026 17:08:11 +0000</updated>
                                                                                                                                            <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Morgan Park ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/VVB5GCgA3xLhkX8FVAWw5D-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/op5rexCxbL3FSYU6CUmJhc-1920-80.jpg">
                                                            <media:credit><![CDATA[EA, Valve]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[FOV 90]]></media:description>                                                            <media:text><![CDATA[FOV 90]]></media:text>
                                <media:title type="plain"><![CDATA[FOV 90]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/op5rexCxbL3FSYU6CUmJhc-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">FOV 90</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cTeZTtGXV6uYdPks5D77R7" name="pcg_logo_fov90" caption="" alt="FOV 90 column" src="https://cdn.mos.cms.futurecdn.net/cTeZTtGXV6uYdPks5D77R7-1920-80.png" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude" /></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text">Welcome to FOV 90, an FPS column from staff writer Morgan Park. Every other week, I cover topics relevant to first-person shooter enjoyers, spanning everything from multiplayer and singleplayer to the old and the new.</p></div></div><p>Welcome back to another special community tournament edition of FOV 90, the only FPS column that I'm aware of.</p><p>Last week, we started the work of determining <a href="https://www.pcgamer.com/games/fps/making-our-favorite-fps-modes-1v1-to-decide-the-greatest-of-them-all/" target="_blank">the greatest FPS mode of all time through spirited democracy</a>. In Round 1, 16 classic and modern modes were pitted against each other in 1v1 matchups. The seeding, which I chose myself, was completely uncontroversial and <em>everyone</em> liked it—especially the part where I made them choose between Conquest and Domination.</p><p>Over <strong>7,000 votes</strong> were tallied over five days, and the results are in. </p><p>🥁<em>drum roooooooooolllllllllllllll</em>🥁</p><h3 class="article-body__section" id="section-round-1-results"><span>Round 1 Results</span></h3><ul><li><strong>Team Deathmatch (75%) wins</strong> over FFA/Deathmatch (25%)</li><li><strong>Battle Royale (52%)</strong> <strong>wins</strong> over Extraction (48%)</li><li><strong>Conquest (68%) wins</strong> over Domination (32%)</li><li><strong>Bomb Defusal (85%) wins</strong> over Hostage (15%)</li><li><strong>Payload (52%) wins</strong> over Gun Game (48%)</li><li><strong>Infection (61%) wins</strong> over Prop Hunt (39%)</li><li><strong>Capture the Flag (91%) wins</strong> over VIP (9%)</li><li><strong>Attack &amp; Defend (52%)</strong> <strong>wins</strong> over King of the Hill (48%)</li></ul><p>I think we can all agree a few of those winners were predictable—I can see Team Deathmatch or Capture the Flag going all the way at this rate—but several matchups surprised me. Battle royale just barely edges out Extraction while Gun Game is brought down by Payload. The voting body showed up for both serious and playful modes, which makes me happy. I also enjoyed watching you all share your votes and memories in the comments.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/NhNFHiRRrRVepMXn9xBwMB-1920-80.jpg" alt="FOV 90 comments" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/k3kzWfQ7kncVWXtmTLN8MB-1920-80.jpg" alt="FOV 90 comments" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sqmXfXm7TzNX6pXD996ddQ-1920-80.jpg" alt="FOV 90 comments" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2yYtau5LQVrsJJNbNHGJNB-1920-80.jpg" alt="FOV 90 comments" /><figcaption>We got a comedian over here.<small role="credit">Future</small></figcaption></figure></figure><p>And here's how PC Gamer's staff reacted to the results:</p><p>Yes, I'm a monster. But alas, it's time to bury our dead and move on. Round 2 is on!</p><h3 class="article-body__section" id="section-the-bracket"><span>The Bracket</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1880px;"><p class="vanilla-image-block" style="padding-top:63.35%;"><img id="D4JsMCFbJFG67LyhebgCEN" name="bracket round 2" alt="FOV 90 FPS modes tournament" src="https://cdn.mos.cms.futurecdn.net/D4JsMCFbJFG67LyhebgCEN-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1880" height="1191" attribution="" endorsement="" class="inline expandable" /><a href='https://cdn.mos.cms.futurecdn.net/D4JsMCFbJFG67LyhebgCEN-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Here are the lineups for Round 1. </span><span class="credit" itemprop="copyrightHolder">(Image credit: BracketHQ)</span></figcaption></figure><h2 id="round-2-vote">Round 2 - Vote!</h2><p>Read up on the matchups below and vote for your favorite. <strong>Round 2 voting closes on Monday, October 12 at 11:59 PM PDT</strong>. The more votes we get, the more interesting the results, so tell your friends! Next week we'll be back to share the results and begin Round 3.</p><h3 class="article-body__section" id="section-team-deathmatch-vs-battle-royale"><span>Team Deathmatch vs Battle Royale</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PT2K5X95kwr5zBni5ptzoN" name="tdm vs battle royale" alt="FOV 90 FPS modes tournament" src="https://cdn.mos.cms.futurecdn.net/PT2K5X95kwr5zBni5ptzoN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Activision, PUBG Corporation)</span></figcaption></figure><p><em>AKA: Team Slayer (Halo) // It's always called BR</em></p><p><strong>Intimate team-based action, or large-scale slaughter?</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Od2Kme"></div>                            </div>                            <script src="https://kwizly.com/embed/Od2Kme.js" async=""></script><h3 class="article-body__section" id="section-conquest-vs-bomb-defusal"><span>Conquest vs Bomb Defusal</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="VQhRsDSjScfMedQMCkgn7P" name="conquest v bomb" alt="FOV 90 FPS modes tournament" src="https://cdn.mos.cms.futurecdn.net/VQhRsDSjScfMedQMCkgn7P-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Valve, DICE)</span></figcaption></figure><p><em>AKA: Warfare (Hell Let Loose) //  Bomb (Rainbow Six Siege), Plant/Defuse (Valorant)</em></p><p><strong>The consensus king of competitive, or all-out warfare?</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKy99e"></div>                            </div>                            <script src="https://kwizly.com/embed/OKy99e.js" async=""></script><h3 class="article-body__section" id="section-payload-vs-infection"><span>Payload vs Infection</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="KsHr5ixFFxUxsd2vruLjrN" name="payload v infection" alt="FOV 90 FPS modes tournament" src="https://cdn.mos.cms.futurecdn.net/KsHr5ixFFxUxsd2vruLjrN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Valve, Microsoft)</span></figcaption></figure><p><em>AKA: It's always Payload and Infection, because they're perfect names</em></p><p><strong>Both unusual, asymmetrical formats that rely on staying together to get anything done. This will be a painful vote for me.</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-O6yEMW"></div>                            </div>                            <script src="https://kwizly.com/embed/O6yEMW.js" async=""></script><h3 class="article-body__section" id="section-capture-the-flag-vs-attack-defend"><span>Capture the Flag vs Attack &amp; Defend</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xR5vRCeeNDrRimV6qsmrqN" name="ctf v attack and defend" alt="FOV 90 FPS modes tournament" src="https://cdn.mos.cms.futurecdn.net/xR5vRCeeNDrRimV6qsmrqN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Unreal, Blizzard)</span></figcaption></figure><p><em>AKA: It's always CTF // 2CP (Overwatch), Breakthrough (Battlefield)</em></p><p><strong>Attack &amp; Defend was a surprise winner of Round 1, but CTF is coming off a 91% majority win. Will this be an upset?</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OaLRyW"></div>                            </div>                            <script src="https://kwizly.com/embed/OaLRyW.js" async=""></script>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Despite the tragic death of its lead writer, one of the scariest games I have ever played will finally come out later this month ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I cover a lot of demos for PC Gamer, and some of them really stick with me. <a href="https://store.steampowered.com/app/2548880/Divine_Frequency/" target="_blank">Divine Frequency</a> has been a real <a href="https://www.pcgamer.com/the-demo-for-this-upcoming-horror-rpg-fps-built-in-the-doom-engine-might-already-be-the-most-terrifying-thing-i-play-all-year-and-i-cant-wait-for-more/" target="_blank">lost Lenore among those memorable games</a>: It was a rare shooter that managed to scare the living daylights out of me, while also being an amazingly satisfying action experience. I've been up on the widow's walk every night, watching for any sign of its ship returning from the long voyage. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/a6Ln4mXmSgI" allowfullscreen=""></iframe></div></div><p>Only, I wasn't watching closely enough. On September 25, developer Abraxaes released a <a href="https://www.youtube.com/watch?v=a6Ln4mXmSgI" target="_blank">new trailer</a> revealing an early access launch date of October 27 for the surreal and horrific FPS-RPG. Before that announcement, back in March, they <a href="https://steamcommunity.com/app/2548880" target="_blank">outlined some of the herculean challenges</a> Divine Frequency has faced⁠—most notably the surprise death of lead writer Pablo "Artistical" Lamprea. Here are Abraxaes' own words on their friend and collaborator:</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/6MdtKDReavhmaq9yAURLZL-1920-80.png" alt="Divine Frequency screenshot showing disturbing action in dark, evil world." /><figcaption><small role="credit">Abraxaes</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CkjTgWJQon3zuFKC2cU8qL-1920-80.png" alt="Divine Frequency screenshot showing disturbing action in dark, evil world." /><figcaption><small role="credit">Abraxaes</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ALkM2PYrHALyef65TC8mvL-1920-80.png" alt="Divine Frequency screenshot showing disturbing action in dark, evil world." /><figcaption><small role="credit">Abraxaes</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2dv4J7fWtHVqyH4NMXGCuL-1920-80.png" alt="Divine Frequency screenshot showing disturbing action in dark, evil world." /><figcaption><small role="credit">Abraxaes</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6mEoNeAugfPBvWgFHJeaGM-1920-80.png" alt="Divine Frequency screenshot showing disturbing action in dark, evil world." /><figcaption><small role="credit">Abraxaes</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qWaLsW4KhCfGACw45wwgKM-1920-80.png" alt="Divine Frequency screenshot showing disturbing action in dark, evil world." /><figcaption><small role="credit">Abraxaes</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mnnPjYLRecCFB9XEUNx2SM-1920-80.png" alt="Divine Frequency screenshot showing disturbing action in dark, evil world." /><figcaption><small role="credit">Abraxaes</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/PVMCQBfhFyWpyc2txaWUHM-1920-80.png" alt="Divine Frequency screenshot showing disturbing action in dark, evil world." /><figcaption><small role="credit">Abraxaes</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FLMpFxfccFeu48bSBvBALM-1920-80.png" alt="Divine Frequency screenshot showing disturbing action in dark, evil world." /><figcaption><small role="credit">Abraxaes</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/e9k5RSAPhiRkikCtASx5MM-1920-80.png" alt="Divine Frequency screenshot showing disturbing action in dark, evil world." /><figcaption><small role="credit">Abraxaes</small></figcaption></figure></figure><p>Divine Frequency's demo had some truly amazing cosmic horror writing: SCP-style, banal categorization of the unknown contrasting with flowery, expansive, yet somehow not indulgent prose to capture the majestic enigma of it all. It left an impression on me, and I've wanted more for almost three years. I'm so glad that Lamprea's collaborators have been able to continue this work to bring their shared dream alive.</p><p>But this wasn't even the only setback Divine Frequency faced in 2025: It turned out that a number of sound libraries purchased by the developers contained copyrighted material. To avoid liabilities, the developers had to painstakingly go through every audio file in the game and replace the copyright-infringing ones. "This also delayed the game by a fair margin," Abraxaes wrote.</p><p>But soon, it will finally come to fruition. Divine Frequency is still targeting an early access launch after so much lead time⁠, but it sounds like its developers want it to be uniquely substantial and polished: "You only get one chance to launch a game," they wrote in the March update, "and this needs to be pristine on launch." They further say it contains the first two of three planned acts, or 70% of the game.</p><p>I don't love playing games piecemeal in early access (though I understand how much of a lifesaver it can be to devs), but it sounds like Divine Frequency is coming out with a real <em>chunk</em> of game. After so much time away, I'm thrilled to revisit this awful, unsettling world. Ahead of early access, you can wishlist Divine Frequency and check out its updated demo on <a href="https://store.steampowered.com/app/2548880/Divine_Frequency/" target="_blank">Steam</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><div class="product"><a data-dimension112="6bbf4b86-c117-11f1-89f8-fd1fd647493b" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="6bbf4b86-c117-11f1-89f8-fd1fd647493b" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/despite-the-tragic-death-of-its-lead-writer-one-of-the-scariest-games-i-have-ever-played-will-finally-come-out-later-this-month/</link>
                                                                            <description>
                            <![CDATA[ Divine Frequency launches in early access on October 27 with "70%" of the final game ready to play. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">YSKgkMLNDWFZFfECoMTurZ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/TQuo94UemUGU2iraPfmqHb-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Tue, 06 Oct 2026 01:29:16 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                <author><![CDATA[ ted.litchfield@futurenet.com (Ted Litchfield) ]]></author>                    <dc:creator><![CDATA[ Ted Litchfield ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/8DyQVBz7FCynDY9QiJyH9D-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;&lt;br&gt;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/TQuo94UemUGU2iraPfmqHb-1920-80.png">
                                                            <media:credit><![CDATA[Abraxaes]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Divine Frequency eyeball monster]]></media:description>                                                            <media:text><![CDATA[Divine Frequency eyeball monster]]></media:text>
                                <media:title type="plain"><![CDATA[Divine Frequency eyeball monster]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/TQuo94UemUGU2iraPfmqHb-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I cover a lot of demos for PC Gamer, and some of them really stick with me. <a href="https://store.steampowered.com/app/2548880/Divine_Frequency/" target="_blank">Divine Frequency</a> has been a real <a href="https://www.pcgamer.com/the-demo-for-this-upcoming-horror-rpg-fps-built-in-the-doom-engine-might-already-be-the-most-terrifying-thing-i-play-all-year-and-i-cant-wait-for-more/" target="_blank">lost Lenore among those memorable games</a>: It was a rare shooter that managed to scare the living daylights out of me, while also being an amazingly satisfying action experience. I've been up on the widow's walk every night, watching for any sign of its ship returning from the long voyage. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/a6Ln4mXmSgI" allowfullscreen=""></iframe></div></div><p>Only, I wasn't watching closely enough. On September 25, developer Abraxaes released a <a href="https://www.youtube.com/watch?v=a6Ln4mXmSgI" target="_blank">new trailer</a> revealing an early access launch date of October 27 for the surreal and horrific FPS-RPG. Before that announcement, back in March, they <a href="https://steamcommunity.com/app/2548880" target="_blank">outlined some of the herculean challenges</a> Divine Frequency has faced⁠—most notably the surprise death of lead writer Pablo "Artistical" Lamprea. Here are Abraxaes' own words on their friend and collaborator:</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/6MdtKDReavhmaq9yAURLZL-1920-80.png" alt="Divine Frequency screenshot showing disturbing action in dark, evil world." /><figcaption><small role="credit">Abraxaes</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CkjTgWJQon3zuFKC2cU8qL-1920-80.png" alt="Divine Frequency screenshot showing disturbing action in dark, evil world." /><figcaption><small role="credit">Abraxaes</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ALkM2PYrHALyef65TC8mvL-1920-80.png" alt="Divine Frequency screenshot showing disturbing action in dark, evil world." /><figcaption><small role="credit">Abraxaes</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2dv4J7fWtHVqyH4NMXGCuL-1920-80.png" alt="Divine Frequency screenshot showing disturbing action in dark, evil world." /><figcaption><small role="credit">Abraxaes</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6mEoNeAugfPBvWgFHJeaGM-1920-80.png" alt="Divine Frequency screenshot showing disturbing action in dark, evil world." /><figcaption><small role="credit">Abraxaes</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qWaLsW4KhCfGACw45wwgKM-1920-80.png" alt="Divine Frequency screenshot showing disturbing action in dark, evil world." /><figcaption><small role="credit">Abraxaes</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mnnPjYLRecCFB9XEUNx2SM-1920-80.png" alt="Divine Frequency screenshot showing disturbing action in dark, evil world." /><figcaption><small role="credit">Abraxaes</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/PVMCQBfhFyWpyc2txaWUHM-1920-80.png" alt="Divine Frequency screenshot showing disturbing action in dark, evil world." /><figcaption><small role="credit">Abraxaes</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FLMpFxfccFeu48bSBvBALM-1920-80.png" alt="Divine Frequency screenshot showing disturbing action in dark, evil world." /><figcaption><small role="credit">Abraxaes</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/e9k5RSAPhiRkikCtASx5MM-1920-80.png" alt="Divine Frequency screenshot showing disturbing action in dark, evil world." /><figcaption><small role="credit">Abraxaes</small></figcaption></figure></figure><p>Divine Frequency's demo had some truly amazing cosmic horror writing: SCP-style, banal categorization of the unknown contrasting with flowery, expansive, yet somehow not indulgent prose to capture the majestic enigma of it all. It left an impression on me, and I've wanted more for almost three years. I'm so glad that Lamprea's collaborators have been able to continue this work to bring their shared dream alive.</p><p>But this wasn't even the only setback Divine Frequency faced in 2025: It turned out that a number of sound libraries purchased by the developers contained copyrighted material. To avoid liabilities, the developers had to painstakingly go through every audio file in the game and replace the copyright-infringing ones. "This also delayed the game by a fair margin," Abraxaes wrote.</p><p>But soon, it will finally come to fruition. Divine Frequency is still targeting an early access launch after so much lead time⁠, but it sounds like its developers want it to be uniquely substantial and polished: "You only get one chance to launch a game," they wrote in the March update, "and this needs to be pristine on launch." They further say it contains the first two of three planned acts, or 70% of the game.</p><p>I don't love playing games piecemeal in early access (though I understand how much of a lifesaver it can be to devs), but it sounds like Divine Frequency is coming out with a real <em>chunk</em> of game. After so much time away, I'm thrilled to revisit this awful, unsettling world. Ahead of early access, you can wishlist Divine Frequency and check out its updated demo on <a href="https://store.steampowered.com/app/2548880/Divine_Frequency/" target="_blank">Steam</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><div class="product"><a data-dimension112="6bbf4b86-c117-11f1-89f8-fd1fd647493b" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="6bbf4b86-c117-11f1-89f8-fd1fd647493b" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Yet another free fan level pack for Quake has arrived, and this one's all about a feature rarely seen in id Software's classic shooter ]]></title>
                                                                                                <dc:content><![CDATA[ <p>2026 has been a truly astonishing year for Quake mapping, with both fans and professional game developers delivering some incredible death arenas for id Software's 1996 FPS. We've had the enormous<a href="https://www.pcgamer.com/games/fps/quake-modders-banded-together-to-release-the-third-brutalist-map-jam-with-two-campaigns-worth-of-fps-goodness-in-a-megalithic-community-project-more-than-a-year-in-the-making/"> Quake Brutalist Jam 3</a>,<a href="https://www.pcgamer.com/games/fps/the-quake-community-simply-cannot-stop-delivering-having-just-released-a-22-map-deathmatch-jam-to-celebrate-the-shooters-30th-birthday/"> numerous map packs celebrating Quake's 30 anniversary</a>, and even a new official campaign  called<a href="https://www.pcgamer.com/games/fps/30-years-after-it-ruined-id-software-quake-gets-another-big-update-while-the-studio-once-again-grapples-with-adversity/"> Dawn of the Machine</a>.</p><p>You'd think the Quake community would be out of ideas by this point, but if anything, the Quake community is only growing bolder. On Friday, the community released one of its most ambitious map packs yet—a level design extravaganza all about rooftops.</p><p><a href="https://www.slipseer.com/index.php?resources/rooftops-jam.647/" target="_blank">Quake Rooftops Jam</a> adds 19 custom maps to id's shooter, all riffing on the theme of the part of your house that stops the rain falling in. While rooftops might not seem like the most exciting subject for a mapping jam, it is fascinating in the context of Quake. As a corridor shooter, rooftops are rarely glimpsed in Quake. Skittering across a virtual skyline is more the domain of games like<a href="https://www.pcgamer.com/uk/thief-the-dark-project/"> Thief: The Dark Project</a> and its spiritual successor<a href="https://www.pcgamer.com/uk/dishonored/"> Dishonored</a>.</p><p>Hence, creating Quake maps where rooftops are the primary play-space is an interesting challenge. The Quake community has taken the idea and run with it, producing wildly different designs. One example is Robert Yang's<a href="https://www.blog.radiator.debacle.us/2026/10/new-quake-map-mermaids-in-basement.html" target="_blank"> Mermaids in the Basement</a>, a sun-soaked nonlinear map set in a Mediterranean coastal village semi-submerged in water. Other highlights include Once, But No More, a sprawling cityscape with multiple architectural styles stuffed with platforming sequences, and City of Traitors, a maze of gothic spires set in a misty purple void.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="CXvzjNSgHzyXrMZhCejTP8" name="qrt2" alt="A Mediterranean village basks in the setting sun in Quake Rooftops Jam" src="https://cdn.mos.cms.futurecdn.net/CXvzjNSgHzyXrMZhCejTP8-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: id Software, radiatoryang)</span></figcaption></figure><p>If you fancy giving Quake Rooftops Jam a whirl, you can download it from<a href="https://www.slipseer.com/index.php?resources/rooftops-jam.647/" target="_blank"> Slipseer</a>. It's designed to be used with a Quake sourceport like<a href="https://github.com/andrei-drexler/ironwail" target="_blank"> Ironwail</a> or<a href="https://github.com/Novum/vkquake" target="_blank"> vkQuake</a>, so you'll need a copy of those too. Once you've got both, all you need to do is extract the Rooftops Jam files into your Quake folder (in a new folder titled 'qrtjam'), create a shortcut to your Quake sourceport with the additional command line "-game qrtjam", and boot it up from there.</p><p>While Quake itself is thriving three decades on from its release, the future of the series more generally is difficult to discern. There were rumours a while back that Machine Games might be working on<a href="https://www.pcgamer.com/quake-6-tease-indiana-jones/"> Quake 6</a>, but all signs point to the studio's next game being Wolfenstein 3. Meanwhile, multiplayer spinoff Quake Champions recently<a href="https://www.pcgamer.com/games/fps/quake-champions-takes-a-shower-shedding-all-its-2017-live-service-grime-and-becoming-a-usd10-game/"> ceased its live-service updates</a>, though it's still playable as a one-off, paid title.</p><div class="product"><a data-dimension112="543606b2-bfff-11f1-a664-3b2c8c8ab6a8" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="543606b2-bfff-11f1-a664-3b2c8c8ab6a8" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/yet-another-free-fan-level-pack-for-quake-has-arrived-and-this-ones-all-about-a-feature-rarely-seen-in-id-softwares-classic-shooter/</link>
                                                                            <description>
                            <![CDATA[ Quake Rooftops Jam takes a bird's eye view to level design. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">z3y8XhDJTCptPmLZpJTk8F</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/fheBon2nhC99YVaXeuYfWi-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 04 Oct 2026 14:24:59 +0000</pubDate>                                                                                                                                <updated>Sun, 04 Oct 2026 14:25:56 +0000</updated>
                                                                                                                                            <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Rick Lane ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ &lt;p&gt;Rick has been fascinated by PC gaming since he was seven years old, when he used to sneak into his dad&#039;s home office for covert sessions of Doom. He grew up on a diet of similarly unsuitable games, with favourites including Quake, Thief, Half-Life and Deus Ex. Between 2013 and 2022, Rick was games editor of Custom PC magazine and associated website &lt;a href=&quot;http://bit-tech.net/&quot; target=&quot;_blank&quot;&gt;bit-tech.net&lt;/a&gt;. But he&#039;s always kept one foot in freelance games journalism, writing for publications like Edge, Eurogamer, the Guardian and, naturally, PC Gamer. While he&#039;ll play anything that can be controlled with a keyboard and mouse, he has a particular passion for first-person shooters and immersive sims.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/fheBon2nhC99YVaXeuYfWi-1920-80.jpg">
                                                            <media:credit><![CDATA[id Software, Entsoy]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Gothic spires loom from a purple mist in Quake Rooftops Jam.]]></media:description>                                                            <media:text><![CDATA[Gothic spires loom from a purple mist in Quake Rooftops Jam.]]></media:text>
                                <media:title type="plain"><![CDATA[Gothic spires loom from a purple mist in Quake Rooftops Jam.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/fheBon2nhC99YVaXeuYfWi-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>2026 has been a truly astonishing year for Quake mapping, with both fans and professional game developers delivering some incredible death arenas for id Software's 1996 FPS. We've had the enormous<a href="https://www.pcgamer.com/games/fps/quake-modders-banded-together-to-release-the-third-brutalist-map-jam-with-two-campaigns-worth-of-fps-goodness-in-a-megalithic-community-project-more-than-a-year-in-the-making/"> Quake Brutalist Jam 3</a>,<a href="https://www.pcgamer.com/games/fps/the-quake-community-simply-cannot-stop-delivering-having-just-released-a-22-map-deathmatch-jam-to-celebrate-the-shooters-30th-birthday/"> numerous map packs celebrating Quake's 30 anniversary</a>, and even a new official campaign  called<a href="https://www.pcgamer.com/games/fps/30-years-after-it-ruined-id-software-quake-gets-another-big-update-while-the-studio-once-again-grapples-with-adversity/"> Dawn of the Machine</a>.</p><p>You'd think the Quake community would be out of ideas by this point, but if anything, the Quake community is only growing bolder. On Friday, the community released one of its most ambitious map packs yet—a level design extravaganza all about rooftops.</p><p><a href="https://www.slipseer.com/index.php?resources/rooftops-jam.647/" target="_blank">Quake Rooftops Jam</a> adds 19 custom maps to id's shooter, all riffing on the theme of the part of your house that stops the rain falling in. While rooftops might not seem like the most exciting subject for a mapping jam, it is fascinating in the context of Quake. As a corridor shooter, rooftops are rarely glimpsed in Quake. Skittering across a virtual skyline is more the domain of games like<a href="https://www.pcgamer.com/uk/thief-the-dark-project/"> Thief: The Dark Project</a> and its spiritual successor<a href="https://www.pcgamer.com/uk/dishonored/"> Dishonored</a>.</p><p>Hence, creating Quake maps where rooftops are the primary play-space is an interesting challenge. The Quake community has taken the idea and run with it, producing wildly different designs. One example is Robert Yang's<a href="https://www.blog.radiator.debacle.us/2026/10/new-quake-map-mermaids-in-basement.html" target="_blank"> Mermaids in the Basement</a>, a sun-soaked nonlinear map set in a Mediterranean coastal village semi-submerged in water. Other highlights include Once, But No More, a sprawling cityscape with multiple architectural styles stuffed with platforming sequences, and City of Traitors, a maze of gothic spires set in a misty purple void.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="CXvzjNSgHzyXrMZhCejTP8" name="qrt2" alt="A Mediterranean village basks in the setting sun in Quake Rooftops Jam" src="https://cdn.mos.cms.futurecdn.net/CXvzjNSgHzyXrMZhCejTP8-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: id Software, radiatoryang)</span></figcaption></figure><p>If you fancy giving Quake Rooftops Jam a whirl, you can download it from<a href="https://www.slipseer.com/index.php?resources/rooftops-jam.647/" target="_blank"> Slipseer</a>. It's designed to be used with a Quake sourceport like<a href="https://github.com/andrei-drexler/ironwail" target="_blank"> Ironwail</a> or<a href="https://github.com/Novum/vkquake" target="_blank"> vkQuake</a>, so you'll need a copy of those too. Once you've got both, all you need to do is extract the Rooftops Jam files into your Quake folder (in a new folder titled 'qrtjam'), create a shortcut to your Quake sourceport with the additional command line "-game qrtjam", and boot it up from there.</p><p>While Quake itself is thriving three decades on from its release, the future of the series more generally is difficult to discern. There were rumours a while back that Machine Games might be working on<a href="https://www.pcgamer.com/quake-6-tease-indiana-jones/"> Quake 6</a>, but all signs point to the studio's next game being Wolfenstein 3. Meanwhile, multiplayer spinoff Quake Champions recently<a href="https://www.pcgamer.com/games/fps/quake-champions-takes-a-shower-shedding-all-its-2017-live-service-grime-and-becoming-a-usd10-game/"> ceased its live-service updates</a>, though it's still playable as a one-off, paid title.</p><div class="product"><a data-dimension112="543606b2-bfff-11f1-a664-3b2c8c8ab6a8" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="543606b2-bfff-11f1-a664-3b2c8c8ab6a8" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Valorant player claims to have inherited hardware ban through secondhand CPU, Riot anticheat boss disputes parts of story ]]></title>
                                                                                                <dc:content><![CDATA[ <ul><li>User <a href="https://www.reddit.com/r/PCBaumeister/comments/1wqomor/gebrauchte_cpu_erlaubt_kein_valorant/" target="_blank">After-Cartoonist-196</a> on the German-language PCBaumeister subreddit claims to have bought a CPU secondhand, but that it carried the previous owner's Valorant ban.</li><li>Extreme surveillance measures have been adopted by esports devs in recent years to combat and punish endemic cheating in their games.</li><li>Riot support allegedly told them this ban is now associated with all of their other PC components, and there is nothing the company can do to lift the ban.</li><li>Riot anticheat head Phillip Koskinas asserts that the company's hardware bans last four months, and cannot "infect" other components when inserted into a new system.</li></ul><p>After-Cartoonist-196's original post was reported on by <a href="https://www.pcworld.com/article/3250222/your-used-cpu-might-come-with-someone-elses-valorant-ban.html" target="_blank">PC World</a>, and has independently made the rounds on social media as well. They say they bought the CPU on September 21, and that the original owner's ban was logged on August 12.</p><p>On Twitter, Koskinas said he was <a href="https://x.com/deteccphilippe/status/2106072825446486283" target="_blank">unable to find a support ticket</a> matching After-Cartoonist-196's details, and that the story is "pretty unlikely." Koskinas pointed out that Riot hardware bans have a four month maximum duration, and that Riot support is required to provide the remaining duration of the ban when responding to a ticket.</p><p>That does leave much of the original story intact still: If the ban began on August 12, it will not hit the duration limit until mid-December. Koskinas firmly debunked one aspect of the story, though: He denied, in two <a href="https://x.com/deteccphilippe/status/2106166559819301110" target="_blank">separate posts</a>, that a system's other hardware is blacklisted when detected alongside a banned component.</p><p>We reached out to After-Cartoonist-196 after the PC World article was published, but before Koskinas' public response. The core of the story⁠—that this player inherited another's hardware ban⁠—still seems plausible, and while not as drastic as initially presented by After-Cartoonist-196, it would certainly be an aggravating, Kafkaesque ordeal to get locked out of your favorite game in such a way, no matter the duration. </p><p>Assuming the original Reddit account is fully truthful, my theory would be that a shoddy support response resulted in the system ban miscommunication—whatever the official policy cited by Koskinas, Riot is a large company with many divisions and external contractors.</p><p>The story speaks to the invasiveness of the most advanced anticheat measures in effect today. I'm not a fan of kernel-level anticheat, myself, but <a href="https://www.pcgamer.com/according-to-experts-on-kernel-level-anticheat-two-things-are-abundantly-clear-1-its-not-perfect-and-2-its-not-going-anywhere/" target="_blank">competitive game developers swear by it</a>. Your mileage may vary: I just don't really play this kind of esports-centric competitive game anymore for this, and a host of other reasons.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><div class="product"><a data-dimension112="c52e0890-bf7a-11f1-aaa8-813deebc6acc" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="c52e0890-bf7a-11f1-aaa8-813deebc6acc" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/valorant-player-claims-to-have-inherited-hardware-ban-through-secondhand-cpu-riot-anticheat-boss-disputes-parts-of-story/</link>
                                                                            <description>
                            <![CDATA[ Unlikely, but not impossible? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">gufGuhAz6MksFShrGJqPoQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/jeEDz3FccvPCYQsVEaSr7J-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 03 Oct 2026 22:41:35 +0000</pubDate>                                                                                                                                <updated>Sat, 03 Oct 2026 22:41:54 +0000</updated>
                                                                                                                                            <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                <author><![CDATA[ ted.litchfield@futurenet.com (Ted Litchfield) ]]></author>                    <dc:creator><![CDATA[ Ted Litchfield ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/8DyQVBz7FCynDY9QiJyH9D-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;&lt;br&gt;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/jeEDz3FccvPCYQsVEaSr7J-1920-80.jpg">
                                                            <media:credit><![CDATA[Riot Games (left) Brian van der Brug via Getty Images (right)]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Valorant character on the left and a Riot Games sign on the right.]]></media:description>                                                            <media:text><![CDATA[A Valorant character on the left and a Riot Games sign on the right.]]></media:text>
                                <media:title type="plain"><![CDATA[A Valorant character on the left and a Riot Games sign on the right.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/jeEDz3FccvPCYQsVEaSr7J-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <ul><li>User <a href="https://www.reddit.com/r/PCBaumeister/comments/1wqomor/gebrauchte_cpu_erlaubt_kein_valorant/" target="_blank">After-Cartoonist-196</a> on the German-language PCBaumeister subreddit claims to have bought a CPU secondhand, but that it carried the previous owner's Valorant ban.</li><li>Extreme surveillance measures have been adopted by esports devs in recent years to combat and punish endemic cheating in their games.</li><li>Riot support allegedly told them this ban is now associated with all of their other PC components, and there is nothing the company can do to lift the ban.</li><li>Riot anticheat head Phillip Koskinas asserts that the company's hardware bans last four months, and cannot "infect" other components when inserted into a new system.</li></ul><p>After-Cartoonist-196's original post was reported on by <a href="https://www.pcworld.com/article/3250222/your-used-cpu-might-come-with-someone-elses-valorant-ban.html" target="_blank">PC World</a>, and has independently made the rounds on social media as well. They say they bought the CPU on September 21, and that the original owner's ban was logged on August 12.</p><p>On Twitter, Koskinas said he was <a href="https://x.com/deteccphilippe/status/2106072825446486283" target="_blank">unable to find a support ticket</a> matching After-Cartoonist-196's details, and that the story is "pretty unlikely." Koskinas pointed out that Riot hardware bans have a four month maximum duration, and that Riot support is required to provide the remaining duration of the ban when responding to a ticket.</p><p>That does leave much of the original story intact still: If the ban began on August 12, it will not hit the duration limit until mid-December. Koskinas firmly debunked one aspect of the story, though: He denied, in two <a href="https://x.com/deteccphilippe/status/2106166559819301110" target="_blank">separate posts</a>, that a system's other hardware is blacklisted when detected alongside a banned component.</p><p>We reached out to After-Cartoonist-196 after the PC World article was published, but before Koskinas' public response. The core of the story⁠—that this player inherited another's hardware ban⁠—still seems plausible, and while not as drastic as initially presented by After-Cartoonist-196, it would certainly be an aggravating, Kafkaesque ordeal to get locked out of your favorite game in such a way, no matter the duration. </p><p>Assuming the original Reddit account is fully truthful, my theory would be that a shoddy support response resulted in the system ban miscommunication—whatever the official policy cited by Koskinas, Riot is a large company with many divisions and external contractors.</p><p>The story speaks to the invasiveness of the most advanced anticheat measures in effect today. I'm not a fan of kernel-level anticheat, myself, but <a href="https://www.pcgamer.com/according-to-experts-on-kernel-level-anticheat-two-things-are-abundantly-clear-1-its-not-perfect-and-2-its-not-going-anywhere/" target="_blank">competitive game developers swear by it</a>. Your mileage may vary: I just don't really play this kind of esports-centric competitive game anymore for this, and a host of other reasons.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><div class="product"><a data-dimension112="c52e0890-bf7a-11f1-aaa8-813deebc6acc" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="c52e0890-bf7a-11f1-aaa8-813deebc6acc" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ FPS tourney update ]]></title>
                                                                                                <dc:content><![CDATA[ <p><strong>Just 1 day remains to VOTE in Round 1 of the </strong><a href="https://www.pcgamer.com/games/fps/making-our-favorite-fps-modes-1v1-to-decide-the-greatest-of-them-all/" target="_blank"><strong>FPS mode tournament</strong></a><strong>.</strong> Four days in, here's where the polls stand in each bout. Many of them are still really close, so let your voice be heard!</p><ul><li><strong>Team Deathmatch 75%</strong> // FFA 25%</li><li><strong>Battle Royale 52%</strong> // Extraction 48%</li><li><strong>Conquest 68%</strong> // Domination 32%</li><li><strong>Bomb Defusal 85%</strong> // Hostage 15%</li><li><strong>Payload 52%</strong> // Gun Game 48%</li><li><strong>Infection 61 %</strong> // Prop Hunt 39%</li><li><strong>Capture The Flag 91%</strong> // VIP 9%</li><li><strong>Attack &amp; Defend 52%</strong> // King of the Hill 48%</li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/fps-tourney-update/</link>
                                                                            <description>
                            <![CDATA[ FPS tourney update ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">oEitinGiAUWxt8AKwQ5STe</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/5EWnGC9pvFVHwRsPbdM4uV-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 02 Oct 2026 22:53:02 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Morgan Park ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/VVB5GCgA3xLhkX8FVAWw5D-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/5EWnGC9pvFVHwRsPbdM4uV-1920-80.jpg">
                                                            <media:credit><![CDATA[Activision]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Soap from Call of Duty making a face]]></media:description>                                                            <media:text><![CDATA[Soap from Call of Duty making a face]]></media:text>
                                <media:title type="plain"><![CDATA[Soap from Call of Duty making a face]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/5EWnGC9pvFVHwRsPbdM4uV-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><strong>Just 1 day remains to VOTE in Round 1 of the </strong><a href="https://www.pcgamer.com/games/fps/making-our-favorite-fps-modes-1v1-to-decide-the-greatest-of-them-all/" target="_blank"><strong>FPS mode tournament</strong></a><strong>.</strong> Four days in, here's where the polls stand in each bout. Many of them are still really close, so let your voice be heard!</p><ul><li><strong>Team Deathmatch 75%</strong> // FFA 25%</li><li><strong>Battle Royale 52%</strong> // Extraction 48%</li><li><strong>Conquest 68%</strong> // Domination 32%</li><li><strong>Bomb Defusal 85%</strong> // Hostage 15%</li><li><strong>Payload 52%</strong> // Gun Game 48%</li><li><strong>Infection 61 %</strong> // Prop Hunt 39%</li><li><strong>Capture The Flag 91%</strong> // VIP 9%</li><li><strong>Attack &amp; Defend 52%</strong> // King of the Hill 48%</li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Arc Raiders is free to play next weekend ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Want to play <a href="https://www.pcgamer.com/arc-raiders/" target="_blank">Arc Raiders</a> but don't want to pay for it? Sorry to say, this is not your lucky day—but October 8 will be. From then until October 12, Arc Raiders will be <a href="https://store.steampowered.com/news/app/1808500/view/708910525152494674" target="_blank">free to play on all platforms</a> to mark the launch of Frozen Trail, the biggest Arc update since the game's launch in 2025.</p><p> The freebie offers full access to the game, including the new content added in Frozen Trail—a new map, enemies, weapons, gadgets, and more—with no limits beyond the calendar. If you dig it enough that you decide you <em>do </em>want to pay for it (and I'd say there's a good chance you will, it's pretty great), Arc Raiders is also <a href="https://store.steampowered.com/app/1808500/ARC_Raiders/" target="_blank">on sale for half-price</a>—that's $30/£26/€30—during the Steam Autumn Sale, which also ends October 8. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/arc-raiders-is-free-to-play-next-weekend/</link>
                                                                            <description>
                            <![CDATA[ Arc Raiders is free to play next weekend ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">AJnkFYXDehoHT9yWLR3Gad</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/fvdNe8RV4vTLY9zXgxnufA-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 02 Oct 2026 18:57:17 +0000</pubDate>                                                                                                                                <updated>Fri, 02 Oct 2026 18:57:23 +0000</updated>
                                                                                                                                            <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                <author><![CDATA[ andy.chalk@pcgamer.com (Andy Chalk) ]]></author>                    <dc:creator><![CDATA[ Andy Chalk ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/hkTeZoDeGrvhQZtrNGPkbB-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/fvdNe8RV4vTLY9zXgxnufA-1920-80.jpg">
                                                            <media:credit><![CDATA[Embark]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Arc Raiders: A character wearing what looks like a space helmet, crouched behind cover holding a gun in their left hand and a rubber duck in their right hand.]]></media:description>                                                            <media:text><![CDATA[Arc Raiders: A character wearing what looks like a space helmet, crouched behind cover holding a gun in their left hand and a rubber duck in their right hand.]]></media:text>
                                <media:title type="plain"><![CDATA[Arc Raiders: A character wearing what looks like a space helmet, crouched behind cover holding a gun in their left hand and a rubber duck in their right hand.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/fvdNe8RV4vTLY9zXgxnufA-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Want to play <a href="https://www.pcgamer.com/arc-raiders/" target="_blank">Arc Raiders</a> but don't want to pay for it? Sorry to say, this is not your lucky day—but October 8 will be. From then until October 12, Arc Raiders will be <a href="https://store.steampowered.com/news/app/1808500/view/708910525152494674" target="_blank">free to play on all platforms</a> to mark the launch of Frozen Trail, the biggest Arc update since the game's launch in 2025.</p><p> The freebie offers full access to the game, including the new content added in Frozen Trail—a new map, enemies, weapons, gadgets, and more—with no limits beyond the calendar. If you dig it enough that you decide you <em>do </em>want to pay for it (and I'd say there's a good chance you will, it's pretty great), Arc Raiders is also <a href="https://store.steampowered.com/app/1808500/ARC_Raiders/" target="_blank">on sale for half-price</a>—that's $30/£26/€30—during the Steam Autumn Sale, which also ends October 8. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Destiny 2 might be back, but the Bungie Store is going away ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Another unexpected twist in the Bungle tale:</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2106067345475313772"><p lang="en" dir="ltr">After more than a decade of serving our players through the Bungie Store, we are retiring the current storefront for Bungie and Destiny related merchandise on October 19. We are building a new home for our merchandise that's more aligned with our current goals and vision. We'll…<a href="https://twitter.com/cantworkitout/status/2106067345475313772">October 2, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>That's the latest move from Bungie, which recently <a href="https://www.pcgamer.com/games/bungie-un-cancels-destiny-vaulted-content-is-coming-back-as-new-leadership-promises-destiny-is-foundational-to-our-future/" target="_blank">un-cancelled Destiny 2</a> following a massive fan backlash over the decision to put the game in maintenance mode. It seems odd to me—I would think that now, with the seeming rebirth of Destiny 2 at hand, is exactly the time you'd want that storefront up and operational. Regardless of the need for a new storefront, taking the old one offline for months while it's being made feels counterproductive.</p><p>Also interesting is that the Marathon storefront, which lives <a href="https://marathon.bungiestore.com/" target="_blank">on its own subdomain</a>, is not being taken offline while the "new home" is being built. They look effectively identical, so I have no idea what to make of that.</p><p>Here's a little comparison of the two:</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/h2UGhQZi8XtQxnD6aXGxWU-1920-80.png" alt="Destiny 2 store header" /><figcaption><small role="credit">Bungie</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tdYJDVq25Q9oEJrdX6JTPU-1920-80.png" alt="Marathon store header" /><figcaption><small role="credit">Bungie</small></figcaption></figure></figure><p>At a guess, I'd say the most likely outcome here is that the Bungie Store will be integrated into Sony's own storefront—rather like Bungie's own <a href="https://www.pcgamer.com/gaming-industry/sony-has-seen-enough-3-years-after-acquiring-bungie-sony-says-the-days-of-independence-are-over-and-its-future-is-to-become-part-of-playstation-studios/" target="_blank">absorption into Sony</a> after the wheels came off the whole "independent subsidiary" thing.</p><p>Some followers hope that will lead to lower shipping costs, which would be a positive outcome of sorts, although Sony taking control of the whole endeavor could mean a more limited selection of <em>stuff </em>going forward. That's entirely speculative, but that's also the whole Bungie/Destiny 2 situation in a nutshell: <em>Something</em> is happening, but exactly what we just cannot pin down at this point.</p><p>What we can pin down is that the Bungie Store as we know it will close on October 19, while digital downloads and emblem codes will remain accessible until December 31. Get 'em while you can.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><div class="product"><a data-dimension112="2126e604-be8f-11f1-8085-77e0c671ca4d" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="2126e604-be8f-11f1-8085-77e0c671ca4d" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/destiny-2-might-be-back-but-the-bungie-store-is-going-away/</link>
                                                                            <description>
                            <![CDATA[ Bungie is 'building a new home for our merchandise that's more aligned with our current goals and vision,' and for some reason that means the old home has to go away. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">jFsYFm5c6HNMdKpptRjqhL</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/RXL2nn4i6henNNxthpZsYN-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 02 Oct 2026 18:30:45 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                <author><![CDATA[ andy.chalk@pcgamer.com (Andy Chalk) ]]></author>                    <dc:creator><![CDATA[ Andy Chalk ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/hkTeZoDeGrvhQZtrNGPkbB-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/RXL2nn4i6henNNxthpZsYN-1920-80.jpg">
                                                            <media:credit><![CDATA[Bungie ]]></media:credit>
                                                                                                                                                                                                                                                                                                                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/RXL2nn4i6henNNxthpZsYN-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Another unexpected twist in the Bungle tale:</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2106067345475313772"><p lang="en" dir="ltr">After more than a decade of serving our players through the Bungie Store, we are retiring the current storefront for Bungie and Destiny related merchandise on October 19. We are building a new home for our merchandise that's more aligned with our current goals and vision. We'll…<a href="https://twitter.com/cantworkitout/status/2106067345475313772">October 2, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>That's the latest move from Bungie, which recently <a href="https://www.pcgamer.com/games/bungie-un-cancels-destiny-vaulted-content-is-coming-back-as-new-leadership-promises-destiny-is-foundational-to-our-future/" target="_blank">un-cancelled Destiny 2</a> following a massive fan backlash over the decision to put the game in maintenance mode. It seems odd to me—I would think that now, with the seeming rebirth of Destiny 2 at hand, is exactly the time you'd want that storefront up and operational. Regardless of the need for a new storefront, taking the old one offline for months while it's being made feels counterproductive.</p><p>Also interesting is that the Marathon storefront, which lives <a href="https://marathon.bungiestore.com/" target="_blank">on its own subdomain</a>, is not being taken offline while the "new home" is being built. They look effectively identical, so I have no idea what to make of that.</p><p>Here's a little comparison of the two:</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/h2UGhQZi8XtQxnD6aXGxWU-1920-80.png" alt="Destiny 2 store header" /><figcaption><small role="credit">Bungie</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tdYJDVq25Q9oEJrdX6JTPU-1920-80.png" alt="Marathon store header" /><figcaption><small role="credit">Bungie</small></figcaption></figure></figure><p>At a guess, I'd say the most likely outcome here is that the Bungie Store will be integrated into Sony's own storefront—rather like Bungie's own <a href="https://www.pcgamer.com/gaming-industry/sony-has-seen-enough-3-years-after-acquiring-bungie-sony-says-the-days-of-independence-are-over-and-its-future-is-to-become-part-of-playstation-studios/" target="_blank">absorption into Sony</a> after the wheels came off the whole "independent subsidiary" thing.</p><p>Some followers hope that will lead to lower shipping costs, which would be a positive outcome of sorts, although Sony taking control of the whole endeavor could mean a more limited selection of <em>stuff </em>going forward. That's entirely speculative, but that's also the whole Bungie/Destiny 2 situation in a nutshell: <em>Something</em> is happening, but exactly what we just cannot pin down at this point.</p><p>What we can pin down is that the Bungie Store as we know it will close on October 19, while digital downloads and emblem codes will remain accessible until December 31. Get 'em while you can.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ON92mW"></div>                            </div>                            <script src="https://kwizly.com/embed/ON92mW.js" async=""></script><div class="product"><a data-dimension112="2126e604-be8f-11f1-8085-77e0c671ca4d" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="2126e604-be8f-11f1-8085-77e0c671ca4d" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The 7 incredibly hyper-specific things I'm looking forward to when Destiny 2 brings back its deleted campaigns, raids and destinations ]]></title>
                                                                                                <dc:content><![CDATA[ <p>In a surprise move, Bungie is <a href="https://www.pcgamer.com/games/bungie-un-cancels-destiny-vaulted-content-is-coming-back-as-new-leadership-promises-destiny-is-foundational-to-our-future/">bringing a bunch of stuff back</a> to Destiny 2. All the campaigns, destinations and raids that were removed from the game back in 2020 will return at some unspecified point in the future.</p><p>It's a big attention grabbing move—one that's welcome, but that also acts as another frustrating reminder of how many unforced errors Bungie made across the length of Destiny 2's active, live-service run. For some, removing paid-for campaigns was the line in the sand—an unforgivable move that poisoned the well for how the wider gaming community viewed the game.</p><p>Right now, it's hard to say what any of this  means for the future of Destiny. Rather than speculate, I'm going to focus on what bits of these returns I'm actually excited for. Not the campaigns—honestly they range from 'fine' to 'not very good'. No, I'm more interested in the small, hyper-specific parts of Destiny 2 that I've missed over the years—the little moments and memories that still live rent free in my head.</p><p>Here are seven such moments. Jump into the comments to let me know yours.</p><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/SrtSYq3BdYfTtap4Jdfq6Z.png" alt="Asteroids of the Tangled Shore" /></p></div><div class="card__content"><h3 class="card__title">The intro sting for the Tangled Shore</h3><div class="card__description-wrapper"><div class="card__description"><p>When you load <a href="https://www.youtube.com/watch?v=1BNC_rnpFb0">into the Tangled Shore</a>, you get 54 seconds of music that are, honestly, just *chef's kiss*. Just the perfect intro sting to set the vibe of an outlaw adventure. Less than a minute of soundtrack that has been seared into my brain.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/kV5BeqyPiwrf8JKQCDzmu4.jpg" alt="Argos, a boss Vex" /></p></div><div class="card__content"><h3 class="card__title">The Eater of Worlds solo chest run</h3><div class="card__description-wrapper"><div class="card__description"><p>I'm a big fan of solo raid chest runs in Destiny 2, because glitching through bits of level is fun. <a href="https://www.youtube.com/watch?v=-fhaZMFEdVs">The Eater of Worlds' raid chest run</a> was particularly involved—essentially asking you to run the entire raid layer without loading in encounters, all for the chance at a Telesto catalyst.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/i2Jek6E5BH6d2UpUzEE7WE.jpg" alt="Val'Cauor, a raid boss" /></p></div><div class="card__content"><h3 class="card__title">The jumping puzzle in Spire of Stars</h3><div class="card__description-wrapper"><div class="card__description"><p>The Spire of Stars raid is infamous for its final boss, which is up there as one of the most mechanically complex in the game's history. But the really memorable part is the jumping puzzle before the final encounters—in which you navigate rotating platforms across a giant chamber while hurling balls to teammates under strict time pressure.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/zFb4iraBP8sgFamrxvZG2K.jpg" alt="The Empty Tank Lost Sector" /></p></div><div class="card__content"><h3 class="card__title">The Fallen nightclub Lost Sector</h3><div class="card__description-wrapper"><div class="card__description"><p>Back to the Tangled Shore, one of its Lost Sectors is an underground Fallen nightclub which contains a jukebox that plays, a) a <a href="https://www.youtube.com/watch?v=z6HO9PhfD-A">bluegrass version of Destiny's main theme</a>, b) Paul McCartney's endearingly cringe Hope for the Future. You kill everyone in it for their crimes against ears.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/amqceiku8FS23MhbWvBZuP.png" alt="The Pleasure Gardens raid encounter" /></p></div><div class="card__content"><h3 class="card__title">The dogs in Leviathan</h3><div class="card__description-wrapper"><div class="card__description"><p>On the one hand, the Leviathan raid's Pleasure Gardens encounter is a faff: It's way too finicky, because Destiny 2 is not a stealth game. On the other hand, the <a href="https://www.youtube.com/watch?v=-vTDROvN-I0&amp;t=405s">backing music during the DPS phase</a> is peak—it sounds like the dogs are howl-singing, which is adorable.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/jRkfB8TbQHuqdcjcq4uc2X.jpg" alt="A Garden World strike mission" /></p></div><div class="card__content"><h3 class="card__title">The only good bit of Curse of Osiris</h3><div class="card__description-wrapper"><div class="card__description"><p>The strike mission A Garden World is the best part of Destiny 2's worst DLC. The encounter design is strong throughout, especially its Champion-rich Nightfall version. And the boss—a big turret that revolves around a circular chamber, dematerialising cover—makes for a strong finale.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/VGBwMA3iuuTXvXBLdS2puj.jpg" alt="The Schnell building from Scourge of the Past" /></p></div><div class="card__content"><h3 class="card__title">Scourge of the Past&#39;s sparrow bit</h3><div class="card__description-wrapper"><div class="card__description"><p>Scourge of the Past is one of Destiny 2's more memorable raids. For instance: After the first encounter, when you're <a href="https://www.youtube.com/watch?v=MPkYNJJUnjA">chased by a giant burning servitor</a>—the entire fireteam racing away on sparrows down narrow tunnels, jostling each other to survive.</p></div></div></div></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/the-7-incredibly-hyper-specific-things-im-looking-forward-to-when-destiny-2-brings-back-its-deleted-campaigns-raids-and-destinations/</link>
                                                                            <description>
                            <![CDATA[ The little things I can't wait to see again. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">yjChvwz243oJee2PAptRef</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/NqS3mSmFgDwbXoz3LYMafJ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 02 Oct 2026 14:48:46 +0000</pubDate>                                                                                                                                <updated>Fri, 02 Oct 2026 16:30:05 +0000</updated>
                                                                                                                                            <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Phil Savage ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/4sHLcbB96zPH9vjoBAiMYC-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/NqS3mSmFgDwbXoz3LYMafJ-1920-80.jpg">
                                                            <media:credit><![CDATA[null]]></media:credit>
                                                                                                                                                                                                                                                                                                                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/NqS3mSmFgDwbXoz3LYMafJ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>In a surprise move, Bungie is <a href="https://www.pcgamer.com/games/bungie-un-cancels-destiny-vaulted-content-is-coming-back-as-new-leadership-promises-destiny-is-foundational-to-our-future/">bringing a bunch of stuff back</a> to Destiny 2. All the campaigns, destinations and raids that were removed from the game back in 2020 will return at some unspecified point in the future.</p><p>It's a big attention grabbing move—one that's welcome, but that also acts as another frustrating reminder of how many unforced errors Bungie made across the length of Destiny 2's active, live-service run. For some, removing paid-for campaigns was the line in the sand—an unforgivable move that poisoned the well for how the wider gaming community viewed the game.</p><p>Right now, it's hard to say what any of this  means for the future of Destiny. Rather than speculate, I'm going to focus on what bits of these returns I'm actually excited for. Not the campaigns—honestly they range from 'fine' to 'not very good'. No, I'm more interested in the small, hyper-specific parts of Destiny 2 that I've missed over the years—the little moments and memories that still live rent free in my head.</p><p>Here are seven such moments. Jump into the comments to let me know yours.</p><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/SrtSYq3BdYfTtap4Jdfq6Z.png" alt="Asteroids of the Tangled Shore" /></p></div><div class="card__content"><h3 class="card__title">The intro sting for the Tangled Shore</h3><div class="card__description-wrapper"><div class="card__description"><p>When you load <a href="https://www.youtube.com/watch?v=1BNC_rnpFb0">into the Tangled Shore</a>, you get 54 seconds of music that are, honestly, just *chef's kiss*. Just the perfect intro sting to set the vibe of an outlaw adventure. Less than a minute of soundtrack that has been seared into my brain.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/kV5BeqyPiwrf8JKQCDzmu4.jpg" alt="Argos, a boss Vex" /></p></div><div class="card__content"><h3 class="card__title">The Eater of Worlds solo chest run</h3><div class="card__description-wrapper"><div class="card__description"><p>I'm a big fan of solo raid chest runs in Destiny 2, because glitching through bits of level is fun. <a href="https://www.youtube.com/watch?v=-fhaZMFEdVs">The Eater of Worlds' raid chest run</a> was particularly involved—essentially asking you to run the entire raid layer without loading in encounters, all for the chance at a Telesto catalyst.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/i2Jek6E5BH6d2UpUzEE7WE.jpg" alt="Val'Cauor, a raid boss" /></p></div><div class="card__content"><h3 class="card__title">The jumping puzzle in Spire of Stars</h3><div class="card__description-wrapper"><div class="card__description"><p>The Spire of Stars raid is infamous for its final boss, which is up there as one of the most mechanically complex in the game's history. But the really memorable part is the jumping puzzle before the final encounters—in which you navigate rotating platforms across a giant chamber while hurling balls to teammates under strict time pressure.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/zFb4iraBP8sgFamrxvZG2K.jpg" alt="The Empty Tank Lost Sector" /></p></div><div class="card__content"><h3 class="card__title">The Fallen nightclub Lost Sector</h3><div class="card__description-wrapper"><div class="card__description"><p>Back to the Tangled Shore, one of its Lost Sectors is an underground Fallen nightclub which contains a jukebox that plays, a) a <a href="https://www.youtube.com/watch?v=z6HO9PhfD-A">bluegrass version of Destiny's main theme</a>, b) Paul McCartney's endearingly cringe Hope for the Future. You kill everyone in it for their crimes against ears.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/amqceiku8FS23MhbWvBZuP.png" alt="The Pleasure Gardens raid encounter" /></p></div><div class="card__content"><h3 class="card__title">The dogs in Leviathan</h3><div class="card__description-wrapper"><div class="card__description"><p>On the one hand, the Leviathan raid's Pleasure Gardens encounter is a faff: It's way too finicky, because Destiny 2 is not a stealth game. On the other hand, the <a href="https://www.youtube.com/watch?v=-vTDROvN-I0&amp;t=405s">backing music during the DPS phase</a> is peak—it sounds like the dogs are howl-singing, which is adorable.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/jRkfB8TbQHuqdcjcq4uc2X.jpg" alt="A Garden World strike mission" /></p></div><div class="card__content"><h3 class="card__title">The only good bit of Curse of Osiris</h3><div class="card__description-wrapper"><div class="card__description"><p>The strike mission A Garden World is the best part of Destiny 2's worst DLC. The encounter design is strong throughout, especially its Champion-rich Nightfall version. And the boss—a big turret that revolves around a circular chamber, dematerialising cover—makes for a strong finale.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/VGBwMA3iuuTXvXBLdS2puj.jpg" alt="The Schnell building from Scourge of the Past" /></p></div><div class="card__content"><h3 class="card__title">Scourge of the Past&#39;s sparrow bit</h3><div class="card__description-wrapper"><div class="card__description"><p>Scourge of the Past is one of Destiny 2's more memorable raids. For instance: After the first encounter, when you're <a href="https://www.youtube.com/watch?v=MPkYNJJUnjA">chased by a giant burning servitor</a>—the entire fireteam racing away on sparrows down narrow tunnels, jostling each other to survive.</p></div></div></div></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Sound the 'This week's free Epic Games Store game is worth logging in for' alarm ]]></title>
                                                                                                <dc:content><![CDATA[ <h2 id="what-39-s-going-on">What's going on?</h2><ul><li>System Shock 2 is an excellent videogame and all-timer immersive sim.</li><li>Nightdive's 2025 remaster is exquisite.</li><li>It's <a href="https://store.epicgames.com/p/system-shock-2-25th-anniversary-remaster-cb94d9" target="_blank">free on the Epic Games Store</a> until October 8.</li><li>You will have to remember your password and dig out a 2FA code probably. Sorry.</li></ul><h2 id="is-this-really-worth-logging-in-for-do-you-know-how-long-it-takes-to-log-in-to-a-thing">Is this really worth logging in for? Do you know how long it takes to log in to a thing?</h2><div class="product"><a data-dimension112="d0d527dc-bdb3-11f1-861a-dfe183e56e99" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="d0d527dc-bdb3-11f1-861a-dfe183e56e99" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/sound-the-this-weeks-free-epic-games-store-game-is-worth-logging-in-for-alarm/</link>
                                                                            <description>
                            <![CDATA[ Nightdive's System Shock 2 is a superlative remaster of the best game with 'Shock' in its title, and it's free. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">7jbTUeGRhn3fbh8RxNCxAf</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/MLPRr23VzFqngRGaCLUv3R-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 01 Oct 2026 16:19:08 +0000</pubDate>                                                                                                                                <updated>Thu, 01 Oct 2026 16:19:18 +0000</updated>
                                                                                                                                            <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                <author><![CDATA[ joshua.wolens@futurenet.com (Joshua Wolens) ]]></author>                    <dc:creator><![CDATA[ Joshua Wolens ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/oYajqiFjn2Rwz4msxoLFyP-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;&lt;br&gt;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/MLPRr23VzFqngRGaCLUv3R-1920-80.jpg">
                                                            <media:credit><![CDATA[Nightdive]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Shodan, as seen in System Shock 2&#039;s 25th anniversary remaster]]></media:description>                                                            <media:text><![CDATA[Shodan, as seen in System Shock 2&#039;s 25th anniversary remaster]]></media:text>
                                <media:title type="plain"><![CDATA[Shodan, as seen in System Shock 2&#039;s 25th anniversary remaster]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/MLPRr23VzFqngRGaCLUv3R-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h2 id="what-39-s-going-on">What's going on?</h2><ul><li>System Shock 2 is an excellent videogame and all-timer immersive sim.</li><li>Nightdive's 2025 remaster is exquisite.</li><li>It's <a href="https://store.epicgames.com/p/system-shock-2-25th-anniversary-remaster-cb94d9" target="_blank">free on the Epic Games Store</a> until October 8.</li><li>You will have to remember your password and dig out a 2FA code probably. Sorry.</li></ul><h2 id="is-this-really-worth-logging-in-for-do-you-know-how-long-it-takes-to-log-in-to-a-thing">Is this really worth logging in for? Do you know how long it takes to log in to a thing?</h2><div class="product"><a data-dimension112="d0d527dc-bdb3-11f1-861a-dfe183e56e99" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="d0d527dc-bdb3-11f1-861a-dfe183e56e99" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br /><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br /><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br /><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br /><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br /><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Making our favorite FPS modes 1v1 to decide the greatest of them all ]]></title>
                                                                                                <dc:content><![CDATA[ <div  class="fancy-box"><div class="fancy_box-title">FOV 90</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cTeZTtGXV6uYdPks5D77R7" name="pcg_logo_fov90" caption="" alt="FOV 90 column" src="https://cdn.mos.cms.futurecdn.net/cTeZTtGXV6uYdPks5D77R7-1920-80.png" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude" /></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text">Welcome to FOV 90, an FPS column from staff writer Morgan Park. Every other week, I cover topics relevant to first-person shooter enjoyers, spanning everything from multiplayer and singleplayer to the old and the new.</p></div></div><p>Organized FPS scrimmage is a time-honored tradition of PC gaming. Countless battles have been waged, friendships forged, and "GGs" exchanged in the name of contested territories, stolen flags, and almost-exploded explosives. FPS is my favorite genre because it's a canvas that accommodates endless modes of fun—formats that can happily coexist under the same banner to serve the current mood or group.</p><p>But if you had to choose just one, which would be the greatest FPS mode of them all?</p><p>That's what we're here to decide. We're pitting the greats against each other in a single-elimination tournament, voted on by readers like you. Round 1 starts now. Go go go!</p><div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/ZJujmuuzBiCtsfVeG4ntQR.png" alt="" /></p></div><div class="card__content"><h3 class="card__title">Important Context</h3><div class="card__description-wrapper"><div class="card__description"><ol><li>As you probably noticed, <strong>there are more FPS modes in existence than the 16 I've included here.</strong> This is not an exhaustive exercise, but a curated battle of the most established, enduringly popular FPS formats of past and present.</li><li>Broadly speaking, this is a tournament for modes that have appeared in many games, and <strong>does not include mode variants</strong> (Kill Confirmed, for example, is a variant of Team Deathmatch)</li><li>The bracket uses generic mode names, but well-known <strong>aliases for modes are mentioned further down</strong>, where relevant ("Slayer" is Halo's "FFA", for example) </li></ol></div></div></div></div><h3 class="article-body__section" id="section-the-bracket"><span>The Bracket</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1880px;"><p class="vanilla-image-block" style="padding-top:63.35%;"><img id="qAiidV6DiMs5PnWvWRuU8o" name="FPS mode bracket round 1 edit" alt="FPS modes bracket" src="https://cdn.mos.cms.futurecdn.net/qAiidV6DiMs5PnWvWRuU8o-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1880" height="1191" attribution="" endorsement="" class="inline expandable" /><a href='https://cdn.mos.cms.futurecdn.net/qAiidV6DiMs5PnWvWRuU8o-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Here are the lineups for Round 1. </span><span class="credit" itemprop="copyrightHolder">(Image credit: <a href="https://brackethq.com/" target="_blank">BracketHQ</a>, Future)</span></figcaption></figure><h2 id="round-1-vote">Round 1 - Vote!</h2><p>Read up on the matchups below and vote for your favorite. <strong>Round 1 voting closes on Saturday, October 3 at 11:59 PM PDT</strong>. The more votes we get, the more interesting the results, so tell your friends! Next week we'll be back to share the results and begin Round 2.</p><h3 class="article-body__section" id="section-team-deathmatch-or-ffa-deathmatch"><span>Team Deathmatch or FFA/Deathmatch?</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="bfvsTLqD5RW8W3HGSubbG8" name="tdm v ffa" alt="TDM vs FFA" src="https://cdn.mos.cms.futurecdn.net/bfvsTLqD5RW8W3HGSubbG8-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p><em>AKA: Team Slayer (Halo) // Slayer (Halo)</em></p><p><strong>Would you rather fight alone or with a team? </strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xb86nW"></div>                            </div>                            <script src="https://kwizly.com/embed/Xb86nW.js" async=""></script><h3 class="article-body__section" id="section-battle-royale-vs-extraction"><span>Battle Royale VS Extraction</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6JzLYC9tSKkm6SAJh7R5PJ" name="br v extraction" alt="FOV 90" src="https://cdn.mos.cms.futurecdn.net/6JzLYC9tSKkm6SAJh7R5PJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: EA, BattleState Games)</span></figcaption></figure><p><em>AKA: BR // Extraction Shooters</em></p><p><strong>Two modes so large and complex that they've spawned vibrant subgenres.</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X11LoX"></div>                            </div>                            <script src="https://kwizly.com/embed/X11LoX.js" async=""></script><h3 class="article-body__section" id="section-conquest-vs-domination"><span>Conquest VS Domination</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zbttsxUijM8F58LwdECYnJ" name="conquest v domination" alt="FOV 90" src="https://cdn.mos.cms.futurecdn.net/zbttsxUijM8F58LwdECYnJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: EA, Microsoft)</span></figcaption></figure><p><em>AKA: Warfare (Hell Let Loose) // Territories (Halo), Domination Control Point (Team Fortress 2)</em></p><p><strong>Large-scale point capture with vehicles and control point respawns popularized by Battlefield, or small-scale point capture with random respawns popularized by Unreal Tournament and Call of Duty? </strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Wn87qX"></div>                            </div>                            <script src="https://kwizly.com/embed/Wn87qX.js" async=""></script><h3 class="article-body__section" id="section-bomb-defusal-vs-hostage"><span>Bomb Defusal VS Hostage</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="68geRA7SomEsZCcvJ7dzGJ" name="bomb v hostage" alt="FOV 90" src="https://cdn.mos.cms.futurecdn.net/68geRA7SomEsZCcvJ7dzGJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Riot, Valve)</span></figcaption></figure><p><em>AKA: Bomb (Rainbow Six Siege), Plant/Defuse (Valorant)</em></p><p><strong>The single-life elimination showdown. Bomb is historically the more competitive mode, but many have a soft spot for escorting NPCs out of buildings.</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-O6yLGW"></div>                            </div>                            <script src="https://kwizly.com/embed/O6yLGW.js" async=""></script><h3 class="article-body__section" id="section-gun-game-vs-payload"><span>Gun Game VS Payload</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9ztKKi84ACu53WKgnthH4J" name="gun game v payload" alt="FOV 90" src="https://cdn.mos.cms.futurecdn.net/9ztKKi84ACu53WKgnthH4J-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft, Valve)</span></figcaption></figure><p><em>AKA: Arms Race (Counter-Strike), Escalation (Valorant)</em></p><p><strong>Selfishly race to kill with every gun in the game, or push a cart down a track with a coordinated team?</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OaL5wW"></div>                            </div>                            <script src="https://kwizly.com/embed/OaL5wW.js" async=""></script><h3 class="article-body__section" id="section-infection-vs-prop-hunt"><span>Infection VS Prop Hunt</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="J2YuMNBq3ixU2Q2JGCQZ8J" name="infection v prop hunt" alt="FOV 90" src="https://cdn.mos.cms.futurecdn.net/J2YuMNBq3ixU2Q2JGCQZ8J-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft, Valve)</span></figcaption></figure><p><em>AKA: They're pretty much always called Infection and Prop Hunt.</em></p><p><strong>Two asymmetrical party mode greats, but only one is moving on.</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgGmW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgGmW.js" async=""></script><h3 class="article-body__section" id="section-vip-vs-capture-the-flag"><span>VIP VS Capture The Flag</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PJ4rG5P88prbzVEoHnYt6J" name="vip vs ctf" alt="FOV 90" src="https://cdn.mos.cms.futurecdn.net/PJ4rG5P88prbzVEoHnYt6J-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Valve, Microsoft)</span></figcaption></figure><p><em>AKA: VIP Escort (Call of Duty)</em></p><p><strong>Two legendary objective modes in which one person becomes the most important, yet vulnerable member of the team.</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eMP5rX"></div>                            </div>                            <script src="https://kwizly.com/embed/eMP5rX.js" async=""></script><h3 class="article-body__section" id="section-attack-defend-vs-king-of-the-hill"><span>Attack &amp; Defend VS King of the Hill</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gEBejY9uY39fTvyqnpSE5J" name="attack defend v koth" alt="FOV 90" src="https://cdn.mos.cms.futurecdn.net/gEBejY9uY39fTvyqnpSE5J-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p><em>AKA: 2CP (Overwatch), Breakthrough (Battlefield) // Headquarters (Call of Duty)</em></p><p><strong>I expect this one to get spicy. Take turns attacking and defending on a singular front, or fight over one moving control point?</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-exgQPX"></div>                            </div>                            <script src="https://kwizly.com/embed/exgQPX.js" async=""></script> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/making-our-favorite-fps-modes-1v1-to-decide-the-greatest-of-them-all/</link>
                                                                            <description>
                            <![CDATA[ Vote on the greatest FPS mode of all time. There can only be one. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Sr8Uts2c32XuX2StyXDzBK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ojXmLSTGEjprXQyZWxmdmd-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 29 Sep 2026 23:46:49 +0000</pubDate>                                                                                                                                <updated>Wed, 30 Sep 2026 06:58:31 +0000</updated>
                                                                                                                                            <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Morgan Park ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/VVB5GCgA3xLhkX8FVAWw5D-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/ojXmLSTGEjprXQyZWxmdmd-1920-80.jpg">
                                                            <media:credit><![CDATA[Valve, Microsoft, Epic]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[FOV 90]]></media:description>                                                            <media:text><![CDATA[FOV 90]]></media:text>
                                <media:title type="plain"><![CDATA[FOV 90]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ojXmLSTGEjprXQyZWxmdmd-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">FOV 90</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cTeZTtGXV6uYdPks5D77R7" name="pcg_logo_fov90" caption="" alt="FOV 90 column" src="https://cdn.mos.cms.futurecdn.net/cTeZTtGXV6uYdPks5D77R7-1920-80.png" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude" /></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text">Welcome to FOV 90, an FPS column from staff writer Morgan Park. Every other week, I cover topics relevant to first-person shooter enjoyers, spanning everything from multiplayer and singleplayer to the old and the new.</p></div></div><p>Organized FPS scrimmage is a time-honored tradition of PC gaming. Countless battles have been waged, friendships forged, and "GGs" exchanged in the name of contested territories, stolen flags, and almost-exploded explosives. FPS is my favorite genre because it's a canvas that accommodates endless modes of fun—formats that can happily coexist under the same banner to serve the current mood or group.</p><p>But if you had to choose just one, which would be the greatest FPS mode of them all?</p><p>That's what we're here to decide. We're pitting the greats against each other in a single-elimination tournament, voted on by readers like you. Round 1 starts now. Go go go!</p><div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/ZJujmuuzBiCtsfVeG4ntQR.png" alt="" /></p></div><div class="card__content"><h3 class="card__title">Important Context</h3><div class="card__description-wrapper"><div class="card__description"><ol><li>As you probably noticed, <strong>there are more FPS modes in existence than the 16 I've included here.</strong> This is not an exhaustive exercise, but a curated battle of the most established, enduringly popular FPS formats of past and present.</li><li>Broadly speaking, this is a tournament for modes that have appeared in many games, and <strong>does not include mode variants</strong> (Kill Confirmed, for example, is a variant of Team Deathmatch)</li><li>The bracket uses generic mode names, but well-known <strong>aliases for modes are mentioned further down</strong>, where relevant ("Slayer" is Halo's "FFA", for example) </li></ol></div></div></div></div><h3 class="article-body__section" id="section-the-bracket"><span>The Bracket</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1880px;"><p class="vanilla-image-block" style="padding-top:63.35%;"><img id="qAiidV6DiMs5PnWvWRuU8o" name="FPS mode bracket round 1 edit" alt="FPS modes bracket" src="https://cdn.mos.cms.futurecdn.net/qAiidV6DiMs5PnWvWRuU8o-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1880" height="1191" attribution="" endorsement="" class="inline expandable" /><a href='https://cdn.mos.cms.futurecdn.net/qAiidV6DiMs5PnWvWRuU8o-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Here are the lineups for Round 1. </span><span class="credit" itemprop="copyrightHolder">(Image credit: <a href="https://brackethq.com/" target="_blank">BracketHQ</a>, Future)</span></figcaption></figure><h2 id="round-1-vote">Round 1 - Vote!</h2><p>Read up on the matchups below and vote for your favorite. <strong>Round 1 voting closes on Saturday, October 3 at 11:59 PM PDT</strong>. The more votes we get, the more interesting the results, so tell your friends! Next week we'll be back to share the results and begin Round 2.</p><h3 class="article-body__section" id="section-team-deathmatch-or-ffa-deathmatch"><span>Team Deathmatch or FFA/Deathmatch?</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="bfvsTLqD5RW8W3HGSubbG8" name="tdm v ffa" alt="TDM vs FFA" src="https://cdn.mos.cms.futurecdn.net/bfvsTLqD5RW8W3HGSubbG8-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p><em>AKA: Team Slayer (Halo) // Slayer (Halo)</em></p><p><strong>Would you rather fight alone or with a team? </strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xb86nW"></div>                            </div>                            <script src="https://kwizly.com/embed/Xb86nW.js" async=""></script><h3 class="article-body__section" id="section-battle-royale-vs-extraction"><span>Battle Royale VS Extraction</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6JzLYC9tSKkm6SAJh7R5PJ" name="br v extraction" alt="FOV 90" src="https://cdn.mos.cms.futurecdn.net/6JzLYC9tSKkm6SAJh7R5PJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: EA, BattleState Games)</span></figcaption></figure><p><em>AKA: BR // Extraction Shooters</em></p><p><strong>Two modes so large and complex that they've spawned vibrant subgenres.</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X11LoX"></div>                            </div>                            <script src="https://kwizly.com/embed/X11LoX.js" async=""></script><h3 class="article-body__section" id="section-conquest-vs-domination"><span>Conquest VS Domination</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zbttsxUijM8F58LwdECYnJ" name="conquest v domination" alt="FOV 90" src="https://cdn.mos.cms.futurecdn.net/zbttsxUijM8F58LwdECYnJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: EA, Microsoft)</span></figcaption></figure><p><em>AKA: Warfare (Hell Let Loose) // Territories (Halo), Domination Control Point (Team Fortress 2)</em></p><p><strong>Large-scale point capture with vehicles and control point respawns popularized by Battlefield, or small-scale point capture with random respawns popularized by Unreal Tournament and Call of Duty? </strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Wn87qX"></div>                            </div>                            <script src="https://kwizly.com/embed/Wn87qX.js" async=""></script><h3 class="article-body__section" id="section-bomb-defusal-vs-hostage"><span>Bomb Defusal VS Hostage</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="68geRA7SomEsZCcvJ7dzGJ" name="bomb v hostage" alt="FOV 90" src="https://cdn.mos.cms.futurecdn.net/68geRA7SomEsZCcvJ7dzGJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Riot, Valve)</span></figcaption></figure><p><em>AKA: Bomb (Rainbow Six Siege), Plant/Defuse (Valorant)</em></p><p><strong>The single-life elimination showdown. Bomb is historically the more competitive mode, but many have a soft spot for escorting NPCs out of buildings.</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-O6yLGW"></div>                            </div>                            <script src="https://kwizly.com/embed/O6yLGW.js" async=""></script><h3 class="article-body__section" id="section-gun-game-vs-payload"><span>Gun Game VS Payload</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9ztKKi84ACu53WKgnthH4J" name="gun game v payload" alt="FOV 90" src="https://cdn.mos.cms.futurecdn.net/9ztKKi84ACu53WKgnthH4J-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft, Valve)</span></figcaption></figure><p><em>AKA: Arms Race (Counter-Strike), Escalation (Valorant)</em></p><p><strong>Selfishly race to kill with every gun in the game, or push a cart down a track with a coordinated team?</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OaL5wW"></div>                            </div>                            <script src="https://kwizly.com/embed/OaL5wW.js" async=""></script><h3 class="article-body__section" id="section-infection-vs-prop-hunt"><span>Infection VS Prop Hunt</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="J2YuMNBq3ixU2Q2JGCQZ8J" name="infection v prop hunt" alt="FOV 90" src="https://cdn.mos.cms.futurecdn.net/J2YuMNBq3ixU2Q2JGCQZ8J-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft, Valve)</span></figcaption></figure><p><em>AKA: They're pretty much always called Infection and Prop Hunt.</em></p><p><strong>Two asymmetrical party mode greats, but only one is moving on.</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgGmW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgGmW.js" async=""></script><h3 class="article-body__section" id="section-vip-vs-capture-the-flag"><span>VIP VS Capture The Flag</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PJ4rG5P88prbzVEoHnYt6J" name="vip vs ctf" alt="FOV 90" src="https://cdn.mos.cms.futurecdn.net/PJ4rG5P88prbzVEoHnYt6J-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Valve, Microsoft)</span></figcaption></figure><p><em>AKA: VIP Escort (Call of Duty)</em></p><p><strong>Two legendary objective modes in which one person becomes the most important, yet vulnerable member of the team.</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eMP5rX"></div>                            </div>                            <script src="https://kwizly.com/embed/eMP5rX.js" async=""></script><h3 class="article-body__section" id="section-attack-defend-vs-king-of-the-hill"><span>Attack &amp; Defend VS King of the Hill</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gEBejY9uY39fTvyqnpSE5J" name="attack defend v koth" alt="FOV 90" src="https://cdn.mos.cms.futurecdn.net/gEBejY9uY39fTvyqnpSE5J-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p><em>AKA: 2CP (Overwatch), Breakthrough (Battlefield) // Headquarters (Call of Duty)</em></p><p><strong>I expect this one to get spicy. Take turns attacking and defending on a singular front, or fight over one moving control point?</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-exgQPX"></div>                            </div>                            <script src="https://kwizly.com/embed/exgQPX.js" async=""></script>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Wardogs boss talks balance, XP, and why 'the endgame is sh*t' right now ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2104937869634662749"><p lang="en" dir="ltr">Dev Reacts: @jbowendaman made an awesome video that I thought warranted a response this morning about balancing and XP. Appreciate you all still playing our game, this video ended up longer than I thought! Link to orginal video: https://t.co/1tF0F9Mo94 pic.twitter.com/ERi8CltXVK<a href="https://twitter.com/cantworkitout/status/2104937869634662749">September 29, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>A few notable quotes from Bulkhead CEO Joe Brammer's latest <a href="https://x.com/Brammflakes/status/2104937869634662749?s=20">Wardogs discussion video</a> on X, in which he reacts to a video from YouTuber <a href="https://youtu.be/OjmPDs2ABTU">JbowenDaMan</a>.</p><p>Wardogs continues to be one of my favorite games of the year, but almost three weeks into early access, I understand why developer Bulkhead was anticipating agita as players got deeper into its progression. The 100-player FPS has a <a href="https://www.pcgamer.com/games/fps/i-did-the-math-on-my-wardogs-xp-grind-and-now-i-wish-i-hadnt/">serious XP grind</a>, and some say they were having a better time before the most dedicated players started unlocking the highest tiers of vehicles, armor, and weapons.</p><p>Brammer's insights on player feedback and the studio's philosophy on balance are a useful lens into how Bulkhead sees its game—first and foremost a sandbox shooter where no two matches are the same, and not a competitive FPS that requires perfect balance.</p><p>"Sometimes in our game, we're going to be OK with something being a bit overpowered for a season and then underpowered next season, to keep it interesting," he said. "That doesn't mean I think level four armor is working, or that our balancing is great. I think the endgame is a bit sh*t."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="coHabSYDGh5XZTEM8avhZE" name="WD_Screenshot_Ghellie Suit_WD1" alt="WARDOGS" src="https://cdn.mos.cms.futurecdn.net/coHabSYDGh5XZTEM8avhZE-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Team17)</span></figcaption></figure><p>It can be quite discouraging to face heavily-armored players with a pea shooter, or get smacked around by the strongest vehicles, so I'm curious what Bulkhead is considering to improve the endgame. Many think the thicker armors should go away entirely, and I admit I've had the same reaction when my killers shrug off six bullets to the chest, but that would rid the game of valuable build variety.</p><p>Wardogs firefights are asymmetrical by nature, and I wouldn't want to change that. While I'm unlocking stuff slower than the best players, the truth is that I'm also playing like a cheapskate—buying level two armor and cheaper guns because I don't want to risk a $20k loadout. Going into fights at a disadvantage is its own thrill, because I can still eat a bigger fish by getting the drop on them, and then become the bigger fish by looting their stuff.</p><p>Top of my mind is the changing playstyles of Wardogs week-to-week. Recently I've had a lot of matches where very few teammates want to do my favorite thing—push the Hot Zone and fight—and instead choose to focus on building or attacking FOBs. It can be frustrating to the point of not wanting to play, but as Jbowen and Brammer note, Wardogs is more fun when you're willing to adapt what you're doing to the current shape of the match. Instead of getting annoyed, I could try to pivot to hunting FOBs, learning anti-air, or practicing my pilot skills.</p><p>Brammer also reminded folks that Wardogs' planned metagame features will affect progression in the future. Bulkhead plans to add Tarkov-style skills that are improved through repetition, like tactical sprint duration and staying in-scope when cycling a sniper rifle bolt. Skills will be persistent, not wiped from season to season. In addition to cash and XP, a future "intel" resource will be used for unlocking gun parts and attachments that go beyond the current crop of grips, scopes, and muzzles.</p><p>"You're playing 25% of the game," as Brammer put it.</p><p>Sounds intriguing and intimidating. I really like how approachable Wardogs is right now, and my experience with full gunsmith systems in Battlefield 6 and CoD have me worried players will optimize guns until they're boring, but maybe Bulkhead's approach will be different.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/wardogs-boss-talks-balance-xp-and-why-the-endgame-is-sh-t-right-now/</link>
                                                                            <description>
                            <![CDATA[ Bulkhead is aware of the "mortar spam meta." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">RMEGQvtKCeG8oHhrqhxXrF</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/5X2trJGNeT8taFz3b56iPZ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 29 Sep 2026 20:48:08 +0000</pubDate>                                                                                                                                <updated>Tue, 29 Sep 2026 20:53:46 +0000</updated>
                                                                                                                                            <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Morgan Park ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/VVB5GCgA3xLhkX8FVAWw5D-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/5X2trJGNeT8taFz3b56iPZ-1920-80.jpg">
                                                            <media:credit><![CDATA[Bulkhead]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Wardogs]]></media:description>                                                            <media:text><![CDATA[Wardogs]]></media:text>
                                <media:title type="plain"><![CDATA[Wardogs]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/5X2trJGNeT8taFz3b56iPZ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2104937869634662749"><p lang="en" dir="ltr">Dev Reacts: @jbowendaman made an awesome video that I thought warranted a response this morning about balancing and XP. Appreciate you all still playing our game, this video ended up longer than I thought! Link to orginal video: https://t.co/1tF0F9Mo94 pic.twitter.com/ERi8CltXVK<a href="https://twitter.com/cantworkitout/status/2104937869634662749">September 29, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>A few notable quotes from Bulkhead CEO Joe Brammer's latest <a href="https://x.com/Brammflakes/status/2104937869634662749?s=20">Wardogs discussion video</a> on X, in which he reacts to a video from YouTuber <a href="https://youtu.be/OjmPDs2ABTU">JbowenDaMan</a>.</p><p>Wardogs continues to be one of my favorite games of the year, but almost three weeks into early access, I understand why developer Bulkhead was anticipating agita as players got deeper into its progression. The 100-player FPS has a <a href="https://www.pcgamer.com/games/fps/i-did-the-math-on-my-wardogs-xp-grind-and-now-i-wish-i-hadnt/">serious XP grind</a>, and some say they were having a better time before the most dedicated players started unlocking the highest tiers of vehicles, armor, and weapons.</p><p>Brammer's insights on player feedback and the studio's philosophy on balance are a useful lens into how Bulkhead sees its game—first and foremost a sandbox shooter where no two matches are the same, and not a competitive FPS that requires perfect balance.</p><p>"Sometimes in our game, we're going to be OK with something being a bit overpowered for a season and then underpowered next season, to keep it interesting," he said. "That doesn't mean I think level four armor is working, or that our balancing is great. I think the endgame is a bit sh*t."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="coHabSYDGh5XZTEM8avhZE" name="WD_Screenshot_Ghellie Suit_WD1" alt="WARDOGS" src="https://cdn.mos.cms.futurecdn.net/coHabSYDGh5XZTEM8avhZE-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Team17)</span></figcaption></figure><p>It can be quite discouraging to face heavily-armored players with a pea shooter, or get smacked around by the strongest vehicles, so I'm curious what Bulkhead is considering to improve the endgame. Many think the thicker armors should go away entirely, and I admit I've had the same reaction when my killers shrug off six bullets to the chest, but that would rid the game of valuable build variety.</p><p>Wardogs firefights are asymmetrical by nature, and I wouldn't want to change that. While I'm unlocking stuff slower than the best players, the truth is that I'm also playing like a cheapskate—buying level two armor and cheaper guns because I don't want to risk a $20k loadout. Going into fights at a disadvantage is its own thrill, because I can still eat a bigger fish by getting the drop on them, and then become the bigger fish by looting their stuff.</p><p>Top of my mind is the changing playstyles of Wardogs week-to-week. Recently I've had a lot of matches where very few teammates want to do my favorite thing—push the Hot Zone and fight—and instead choose to focus on building or attacking FOBs. It can be frustrating to the point of not wanting to play, but as Jbowen and Brammer note, Wardogs is more fun when you're willing to adapt what you're doing to the current shape of the match. Instead of getting annoyed, I could try to pivot to hunting FOBs, learning anti-air, or practicing my pilot skills.</p><p>Brammer also reminded folks that Wardogs' planned metagame features will affect progression in the future. Bulkhead plans to add Tarkov-style skills that are improved through repetition, like tactical sprint duration and staying in-scope when cycling a sniper rifle bolt. Skills will be persistent, not wiped from season to season. In addition to cash and XP, a future "intel" resource will be used for unlocking gun parts and attachments that go beyond the current crop of grips, scopes, and muzzles.</p><p>"You're playing 25% of the game," as Brammer put it.</p><p>Sounds intriguing and intimidating. I really like how approachable Wardogs is right now, and my experience with full gunsmith systems in Battlefield 6 and CoD have me worried players will optimize guns until they're boring, but maybe Bulkhead's approach will be different.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ How every major character in Dostoevsky's Crime and Punishment would fare if they had to survive the plot of Halo 1 ]]></title>
                                                                                                <dc:content><![CDATA[ <p>All other games writers are cowards. Wealth and power have conspired to intimidate them into silence, to concern themselves with trifles instead of things that actually matter. Not me, though. I'm brave, and strong; my voice won't be quieted. I don't care about the consequences that come for speaking the truth. Here is the article no other outlet dares write.</p><p>Here is how the main characters of Crime and Punishment would fare if they had to survive the plot of Halo 1.</p><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/8uQ33MhCWuhcBc5Vsm5vxd.jpg" alt="Raskolnikov in Crime and Punishment (1970)." /></p></div><div class="card__content"><h3 class="card__title">Rodion Romanovich Raskolnikov</h3><div class="card__description-wrapper"><div class="card__description"><p>Rodya's melee specialisation would steer him well through the Pillar of Autumn, where close quarters let him get up and close with grunts and elites, but I'm sceptical of his ability to operate autonomously in the broader, ranged theatres of Truth and Reconciliation. Assuming for the sake of argument that he was able to familiarise himself with the rhythm of focusing plasma fire to take out enemy shields before switching rapidly to the M6 pistol to finish them off, I think he would go to pieces in 343 Guilty Spark, where the horror and human tragedy of the Flood's first appearance would traumatise him to the point of paralysis.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/QB2PshnY4TRWofqJUhCA6X.jpg" alt="Razumikhin in Crime and Punishment (1970)." /></p></div><div class="card__content"><h3 class="card__title">Dmitri Prokofyich Razumikhin</h3><div class="card__description-wrapper"><div class="card__description"><p>Razumikhin, whose name more-or-less translates to Brain Guy, would undoubtedly prove himself a canny strategist, but his hard core of empathetic humanity would turn from asset to obstacle when it came time to butcher a room filled with sleeping grunts in Assault on the Control Room. Ultimately, Razumikhin's odds of survival would depend on whether his was a singleplayer or co-op campaign, as in the latter case he would be an adept support to a more ruthless warrior, who could make up for Dmitri's softer, academic inclinations.</p></div></div></div></div><div class="card card--standard card--rows-1 card--align-center"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/NkNNApzZc3t8pj8eKcb3qW.jpg" alt="Marmeladov in Crime and Punishment (1970)." /></p></div><div class="card__content"><h3 class="card__title">Semyon Zakharovich Marmeladov</h3><div class="card__description-wrapper"><div class="card__description"><p>Crushed by Warthog.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/uBdXexdmttBgNk9XG3vg4X.jpg" alt="Sonya in Crime and Punishment (1970)." /></p></div><div class="card__content"><h3 class="card__title">Sofya Semyonovna Marmeladova</h3><div class="card__description-wrapper"><div class="card__description"><p>As the moral heart of Dostoevsky's novel, Sofya seems ill-suited to the demands that Bungie's seminal 2001 first-person shooter would place on her. But don't count her out; she is perhaps the book's most indefatigable character, refusing to abandon Raskolnikov to his shame and guilt over an unforgivable crime much as she might refuse to leave a platoon of marines without Scorpion tank support. Her weakness is not her combat strength but rather her intense religious faith, which could plausibly see her sign up with the Covenant as Halo 1's closest analogue to the Russian Orthodox Church.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/sGdbc9jqZN8tiAmxpTPZoW.jpg" alt="Avdotya in Crime and Punishment (1970)." /></p></div><div class="card__content"><h3 class="card__title">Avdotya Romanovna Raskolnikova</h3><div class="card__description-wrapper"><div class="card__description"><p>Raskolnikov's sister Dunya would absolutely tank the entire thing solo. Legendary difficulty, all skulls on. She's using backpack reloads and animation cancels to put ceaseless fire down range as she proceeds swiftly across classic levels like The Silent Cartographer. She knows all the level skips but doesn't use them. <3-hour completion time.</p></div></div></div></div><div class="card card--standard card--rows-1 card--align-center"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/M4hGDw3QsoBTfTFV7yPqKX.jpg" alt="Svidrigailov in Crime and Punishment (1970)." /></p></div><div class="card__content"><h3 class="card__title">Arkady Ivanovich Svidrigailov</h3><div class="card__description-wrapper"><div class="card__description"><p>Banned for comments on voice chat. Last online a year ago.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/qmMdazEVaHvKSVZh6fxQ4X.jpg" alt="Luzhin in Crime and Punishment (1970)." /></p></div><div class="card__content"><h3 class="card__title">Pyotr Petrovich Luzhin</h3><div class="card__description-wrapper"><div class="card__description"><p>Dunya's doughy husband-to-be would fare poorly practically from the outset. In co-op, he would demand to drive all the vehicles but would not be skilled at it, and his insistence on hoarding rare and powerful weapons like the M41 SPNKr rocket launcher would dramatically decrease the combat effectiveness of his unit. In solo, these issues would remain, with the added drawback that he has no squad to make up for his deficiencies. One also cannot discount the possibility he would simply be so weird about Cortana he would be summarily executed by Captain Keyes.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/A2A3Zs93X7RMs8S8xwif5X.jpg" alt="Porfiry in Crime and Punishment (1970)." /></p></div><div class="card__content"><h3 class="card__title">Porfiry Petrovich</h3><div class="card__description-wrapper"><div class="card__description"><p>Quietly survived the events on Alpha Halo several years ago. If you search you will find him in Halo Infinite, which he's not loving. </p></div></div></div></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/halo/how-every-major-character-in-dostoevskys-crime-and-punishment-would-fare-if-they-had-to-survive-the-plot-of-halo-1/</link>
                                                                            <description>
                            <![CDATA[ That's right. I finally did it. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ZHrxZt5h9MwG9tFyjusqy3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/m5BgWFngJeE6DLz262LbvG-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 29 Sep 2026 16:36:09 +0000</pubDate>                                                                                                                                <updated>Tue, 29 Sep 2026 21:00:41 +0000</updated>
                                                                                                                                            <category><![CDATA[Halo]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                    <category><![CDATA[FPS]]></category>
                                                                                                <author><![CDATA[ joshua.wolens@futurenet.com (Joshua Wolens) ]]></author>                    <dc:creator><![CDATA[ Joshua Wolens ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/oYajqiFjn2Rwz4msxoLFyP-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;&lt;br&gt;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/m5BgWFngJeE6DLz262LbvG-1920-80.jpg">
                                                            <media:credit><![CDATA[Gorky Film Studio / Bungie]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A split image showing Rodion Raskolnikov next to Master Chief.]]></media:description>                                                            <media:text><![CDATA[A split image showing Rodion Raskolnikov next to Master Chief.]]></media:text>
                                <media:title type="plain"><![CDATA[A split image showing Rodion Raskolnikov next to Master Chief.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/m5BgWFngJeE6DLz262LbvG-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>All other games writers are cowards. Wealth and power have conspired to intimidate them into silence, to concern themselves with trifles instead of things that actually matter. Not me, though. I'm brave, and strong; my voice won't be quieted. I don't care about the consequences that come for speaking the truth. Here is the article no other outlet dares write.</p><p>Here is how the main characters of Crime and Punishment would fare if they had to survive the plot of Halo 1.</p><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/8uQ33MhCWuhcBc5Vsm5vxd.jpg" alt="Raskolnikov in Crime and Punishment (1970)." /></p></div><div class="card__content"><h3 class="card__title">Rodion Romanovich Raskolnikov</h3><div class="card__description-wrapper"><div class="card__description"><p>Rodya's melee specialisation would steer him well through the Pillar of Autumn, where close quarters let him get up and close with grunts and elites, but I'm sceptical of his ability to operate autonomously in the broader, ranged theatres of Truth and Reconciliation. Assuming for the sake of argument that he was able to familiarise himself with the rhythm of focusing plasma fire to take out enemy shields before switching rapidly to the M6 pistol to finish them off, I think he would go to pieces in 343 Guilty Spark, where the horror and human tragedy of the Flood's first appearance would traumatise him to the point of paralysis.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/QB2PshnY4TRWofqJUhCA6X.jpg" alt="Razumikhin in Crime and Punishment (1970)." /></p></div><div class="card__content"><h3 class="card__title">Dmitri Prokofyich Razumikhin</h3><div class="card__description-wrapper"><div class="card__description"><p>Razumikhin, whose name more-or-less translates to Brain Guy, would undoubtedly prove himself a canny strategist, but his hard core of empathetic humanity would turn from asset to obstacle when it came time to butcher a room filled with sleeping grunts in Assault on the Control Room. Ultimately, Razumikhin's odds of survival would depend on whether his was a singleplayer or co-op campaign, as in the latter case he would be an adept support to a more ruthless warrior, who could make up for Dmitri's softer, academic inclinations.</p></div></div></div></div><div class="card card--standard card--rows-1 card--align-center"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/NkNNApzZc3t8pj8eKcb3qW.jpg" alt="Marmeladov in Crime and Punishment (1970)." /></p></div><div class="card__content"><h3 class="card__title">Semyon Zakharovich Marmeladov</h3><div class="card__description-wrapper"><div class="card__description"><p>Crushed by Warthog.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/uBdXexdmttBgNk9XG3vg4X.jpg" alt="Sonya in Crime and Punishment (1970)." /></p></div><div class="card__content"><h3 class="card__title">Sofya Semyonovna Marmeladova</h3><div class="card__description-wrapper"><div class="card__description"><p>As the moral heart of Dostoevsky's novel, Sofya seems ill-suited to the demands that Bungie's seminal 2001 first-person shooter would place on her. But don't count her out; she is perhaps the book's most indefatigable character, refusing to abandon Raskolnikov to his shame and guilt over an unforgivable crime much as she might refuse to leave a platoon of marines without Scorpion tank support. Her weakness is not her combat strength but rather her intense religious faith, which could plausibly see her sign up with the Covenant as Halo 1's closest analogue to the Russian Orthodox Church.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/sGdbc9jqZN8tiAmxpTPZoW.jpg" alt="Avdotya in Crime and Punishment (1970)." /></p></div><div class="card__content"><h3 class="card__title">Avdotya Romanovna Raskolnikova</h3><div class="card__description-wrapper"><div class="card__description"><p>Raskolnikov's sister Dunya would absolutely tank the entire thing solo. Legendary difficulty, all skulls on. She's using backpack reloads and animation cancels to put ceaseless fire down range as she proceeds swiftly across classic levels like The Silent Cartographer. She knows all the level skips but doesn't use them. <3-hour completion time.</p></div></div></div></div><div class="card card--standard card--rows-1 card--align-center"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/M4hGDw3QsoBTfTFV7yPqKX.jpg" alt="Svidrigailov in Crime and Punishment (1970)." /></p></div><div class="card__content"><h3 class="card__title">Arkady Ivanovich Svidrigailov</h3><div class="card__description-wrapper"><div class="card__description"><p>Banned for comments on voice chat. Last online a year ago.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/qmMdazEVaHvKSVZh6fxQ4X.jpg" alt="Luzhin in Crime and Punishment (1970)." /></p></div><div class="card__content"><h3 class="card__title">Pyotr Petrovich Luzhin</h3><div class="card__description-wrapper"><div class="card__description"><p>Dunya's doughy husband-to-be would fare poorly practically from the outset. In co-op, he would demand to drive all the vehicles but would not be skilled at it, and his insistence on hoarding rare and powerful weapons like the M41 SPNKr rocket launcher would dramatically decrease the combat effectiveness of his unit. In solo, these issues would remain, with the added drawback that he has no squad to make up for his deficiencies. One also cannot discount the possibility he would simply be so weird about Cortana he would be summarily executed by Captain Keyes.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/A2A3Zs93X7RMs8S8xwif5X.jpg" alt="Porfiry in Crime and Punishment (1970)." /></p></div><div class="card__content"><h3 class="card__title">Porfiry Petrovich</h3><div class="card__description-wrapper"><div class="card__description"><p>Quietly survived the events on Alpha Halo several years ago. If you search you will find him in Halo Infinite, which he's not loving. </p></div></div></div></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Bodied ]]></title>
                                                                                                <dc:content><![CDATA[ <figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6vraEi5ikjXbw3P3rVjqn6" name="20260925125059_1" alt="Wardogs Blue team scores 1 point" src="https://cdn.mos.cms.futurecdn.net/6vraEi5ikjXbw3P3rVjqn6-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Bulkhead)</span></figcaption></figure><p><strong>How bad is the Blue team in Wardogs? We scored 1 point. </strong>I have never seen a score this low until this moment, and of course it was Blue. I've seen enough to accept that <a href="https://www.pcgamer.com/games/fps/wardogs-players-are-actively-avoiding-one-team-in-particular-they-are-literally-the-dumbest-people-on-the-planet/" target="_blank">Blue team is cursed</a>, and I think it has more to do with experienced players actively avoiding the color than anything else. Winning isn't really important in Wardogs, so it's not a big deal to get stomped, but this was tough enough beating that I had to take a break with Red and Green for a while.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fps/bodied/</link>
                                                                            <description>
                            <![CDATA[ Bodied ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">CJNyk3dSirM2vZdR2SjfqA</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/6vraEi5ikjXbw3P3rVjqn6-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 28 Sep 2026 23:27:37 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[FPS]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Morgan Park ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/VVB5GCgA3xLhkX8FVAWw5D-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/6vraEi5ikjXbw3P3rVjqn6-1920-80.jpg">
                                                            <media:credit><![CDATA[Bulkhead]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Wardogs Blue team scores 1 point]]></media:description>                                                            <media:text><![CDATA[Wardogs Blue team scores 1 point]]></media:text>
                                <media:title type="plain"><![CDATA[Wardogs Blue team scores 1 point]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/6vraEi5ikjXbw3P3rVjqn6-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6vraEi5ikjXbw3P3rVjqn6" name="20260925125059_1" alt="Wardogs Blue team scores 1 point" src="https://cdn.mos.cms.futurecdn.net/6vraEi5ikjXbw3P3rVjqn6-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Bulkhead)</span></figcaption></figure><p><strong>How bad is the Blue team in Wardogs? We scored 1 point. </strong>I have never seen a score this low until this moment, and of course it was Blue. I've seen enough to accept that <a href="https://www.pcgamer.com/games/fps/wardogs-players-are-actively-avoiding-one-team-in-particular-they-are-literally-the-dumbest-people-on-the-planet/" target="_blank">Blue team is cursed</a>, and I think it has more to do with experienced players actively avoiding the color than anything else. Winning isn't really important in Wardogs, so it's not a big deal to get stomped, but this was tough enough beating that I had to take a break with Red and Green for a while.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
            </channel>
</rss>