<?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/uk/rss/" rel="self" type="application/rss+xml" />
                            <title><![CDATA[ PCGamer latest ]]></title>
                <link>https://www.pcgamer.com</link>
        <description><![CDATA[  ]]></description>
                                    <lastBuildDate>Sat, 24 Oct 2026 18:58:24 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ Top Xbox exec promoted in brand 'reset' leaves after 3 months in role ]]></title>
                                                                                                <dc:content><![CDATA[ <p>As reported by <a href="https://www.theverge.com/news/1018037/xbox-chief-operating-officer-helen-chiang-departure" target="_blank">The Verge</a>, Xbox Chief Operating Officer Helen Chiang is leaving the company after three months in the role⁠—though Chiang had previously been a Microsoft employee for 21 years. Xbox had not previously operated with a COO in its hierarchy, and the role was created as part of CEO Asha Sharma's <a href="https://www.pcgamer.com/gaming-industry/microsoft-ceo-says-xboxs-streamlining-process-is-great-to-see-following-its-most-recent-round-of-layoffs/" target="_blank">controversial brand "reset."</a></p><p>Sharma announced the personnel change in an October 23 internal memo, and did not offer an explanation for Chiang's departure. "Her immediate responsibilities are being split up between other Xbox leaders for now," Sharma wrote. "We'll share more on COO leadership as plans are finalized."</p><p>Microsoft shared a boilerplate statement on the departure to <a href="https://www.eurogamer.net/xbox-coo-helen-chiang-leaves-microsoft" target="_blank">Eurogamer</a>: "We don't discuss individual personnel matters. We're grateful for Helen's years of service and wish her well." However, an anonymous source within Microsoft also told Eurogamer that Chiang was "terminated for policy violations."</p><p>According to Sharma's original reset announcement, the COO was tasked "with end-to-end P&L [profit and loss] responsibility across content, hardware, platform, and services." Given Xbox's current focus on cost-cutting and maximizing revenue, that sounds like a fairly key role in Sharma's project.</p><p>It's hard to imagine Chiang's departure having any significant impact on Xbox's strategy or its execution, but it hardly inspires confidence to see such a quick turnaround in an executive-level position, particularly given the overall instability and uncertainty at Xbox.</p><div class="product"><a data-dimension112="abab7e80-cfdc-11f1-99e1-9b6931c94503" 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="abab7e80-cfdc-11f1-99e1-9b6931c94503" 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/gaming-industry/top-xbox-exec-promoted-in-brand-reset-leaves-after-3-months-in-role/</link>
                                                                            <description>
                            <![CDATA[ Is that good? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">N3JhWCCyg77pZcjEiLa5CK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/nnXTHjAJbZ7bw4xzhZJCw-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 24 Oct 2026 18:58:24 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Industry]]></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/nnXTHjAJbZ7bw4xzhZJCw-1920-80.jpg">
                                                            <media:credit><![CDATA[Xbox logo: Photo by Tomohiro Ohsumi/Getty Images, Carl &amp;quot;CJ&amp;quot; Johnson: Rockstar/Take-Two Interactive]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[CJ &quot;ah shit, here we go again&quot; meme image laid over Xbox logo seen during the Tokyo Game Show 2024 at Makuhari Messe on September 26, 2024 in Chiba, Japan]]></media:description>                                                            <media:text><![CDATA[CJ &quot;ah shit, here we go again&quot; meme image laid over Xbox logo seen during the Tokyo Game Show 2024 at Makuhari Messe on September 26, 2024 in Chiba, Japan]]></media:text>
                                <media:title type="plain"><![CDATA[CJ &quot;ah shit, here we go again&quot; meme image laid over Xbox logo seen during the Tokyo Game Show 2024 at Makuhari Messe on September 26, 2024 in Chiba, Japan]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/nnXTHjAJbZ7bw4xzhZJCw-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>As reported by <a href="https://www.theverge.com/news/1018037/xbox-chief-operating-officer-helen-chiang-departure" target="_blank">The Verge</a>, Xbox Chief Operating Officer Helen Chiang is leaving the company after three months in the role⁠—though Chiang had previously been a Microsoft employee for 21 years. Xbox had not previously operated with a COO in its hierarchy, and the role was created as part of CEO Asha Sharma's <a href="https://www.pcgamer.com/gaming-industry/microsoft-ceo-says-xboxs-streamlining-process-is-great-to-see-following-its-most-recent-round-of-layoffs/" target="_blank">controversial brand "reset."</a></p><p>Sharma announced the personnel change in an October 23 internal memo, and did not offer an explanation for Chiang's departure. "Her immediate responsibilities are being split up between other Xbox leaders for now," Sharma wrote. "We'll share more on COO leadership as plans are finalized."</p><p>Microsoft shared a boilerplate statement on the departure to <a href="https://www.eurogamer.net/xbox-coo-helen-chiang-leaves-microsoft" target="_blank">Eurogamer</a>: "We don't discuss individual personnel matters. We're grateful for Helen's years of service and wish her well." However, an anonymous source within Microsoft also told Eurogamer that Chiang was "terminated for policy violations."</p><p>According to Sharma's original reset announcement, the COO was tasked "with end-to-end P&L [profit and loss] responsibility across content, hardware, platform, and services." Given Xbox's current focus on cost-cutting and maximizing revenue, that sounds like a fairly key role in Sharma's project.</p><p>It's hard to imagine Chiang's departure having any significant impact on Xbox's strategy or its execution, but it hardly inspires confidence to see such a quick turnaround in an executive-level position, particularly given the overall instability and uncertainty at Xbox.</p><div class="product"><a data-dimension112="abab7e80-cfdc-11f1-99e1-9b6931c94503" 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="abab7e80-cfdc-11f1-99e1-9b6931c94503" 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[ Penguin Colony review: A daringly weird horror game whose atmosphere and surprises overcome its rough edges ]]></title>
                                                                                                <dc:content><![CDATA[ <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> Lovecraftian horror through the eyes of a penguin.<br><strong>Release date</strong> October 16, 2026<br><strong>Expect to pay</strong> $15 / £13<br><strong>Developer </strong>Origame Digital<br><strong>Publisher </strong>Fellow Traveller<br><strong>Reviewed on</strong> RX 9070 XT, Core i5 12600K, 32 GB RAM, Steam Deck<br><strong>Multiplayer </strong>No<br><strong>Steam Deck </strong>Verified<br><strong>Link </strong><a data-analytics-id="inline-link" href="https://store.steampowered.com/app/3695930/Penguin_Colony/" target="_blank">Steam</a></p></div></div><p>Penguin Colony is a work of cosmic horror that I would recommend to anyone with even a passing interest in scares from <em>the beyond</em>, even though its unique penguin platforming can be frustrating to wrangle. It's a radical recontextualization of an H.P. Lovecraft classic with a clear affection for the writer's storytelling, but also scathing contempt for his racism.</p><p>For my money, it's not October without a weird-ass new indie horror game leaving a lasting impression on me, and Penguin Colony has satisfied my annual craving. You are a penguin witnessing the events of the Lovecraft story, At the Mountains of Madness. Your powers are honk, slide, swim, and hop. </p><p>Rather than being limited to a specific bird, you are able to possess any penguin you come across, theoretically using different species' abilities to tackle different movement challenges. Aside from using little baby penguins to squeeze into tight spaces, I was almost exclusively a <a href="https://en.wikipedia.org/wiki/Rockhopper_penguin" target="_blank">Rockhopper</a> main: Their impressive vertical jump was a boon in many areas. They shoulda hooped instead of investigating The Strange.</p><p>The GOAT, PC Gamer <a href="https://www.youtube.com/watch?v=dRoJYZG-aTs&list=PLHzN3MktVPzXoJRC6JAxATx8XIkiiD3Tu" target="_blank">Tales from The Hard Drive</a> host Lenval Brown, narrates the adventure from the perspective of a customarily neurotic and verbose Lovecraft protagonist. Brown's delivery lends everything a similar emotional weight to his iconic performance in Disco Elysium, and he makes for a comforting, familiar presence⁠ even as things go all nasty crazy style.</p><h2 id="waddle-on">Waddle on</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Cxej37DiqTGbmNYWDKwS33-1920-80.jpg" alt="Penguin looking toward camera alongside crazy nazis" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cUtDZakyX6iQXJaUF3Zfz-1920-80.jpg" alt="Penguin facing camera with ice fields visible in background" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5ECkkFfbSHe3evfsEV8tu-1920-80.jpg" alt="Penguin approaching ruins with location card "Great Obelisk"" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cVQwBrkT4eNZ9XKsAgot23-1920-80.jpg" alt="black and white view of Nazi camp with text "Head to the whisper of great [unintelligible], infant lord of the [unintelligible]"" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure></figure><p>I remain conflicted over Penguin Colony's movement and mechanics: I didn't find them especially <em>fun</em>, they got in the way, but that also felt weirdly appropriate. As a penguin, waddling around is kinda shitty and sluggish, particularly as the levels shift away from their native habitat.</p><p>Most charitably, there's a Foddian (Getting Over It, <a href="https://www.pcgamer.com/games/sim/baby-steps-review-one-of-the-funniest-games-ive-ever-played-is-also-one-of-the-most-frustrating/" target="_blank">Baby Steps</a>) quality to the mechanical exploration. It got me to really lean in for some tricky traversal as the atmosphere reached its most suffocating and intense in the caves and structures deep under the arctic ice⁠. I felt frustrated and restless as Penguin Colony's coolest levels opened up before me, held back as I was by this little penguin body. But that dovetails quite well with Penguin Colony's whole premise: that you are an inhuman observer of a human (and something else) story.</p><p>A more clear-cut negative was an inconsistency with a mantling (<em>do penguins mantle?</em>) feature (<em>was this intentional?</em>) that felt more like a clipping glitch, letting me clear some ledges but not others. Penguin Colony's appropriately minimalist UI has one glaring exception: A Shadow of the Colossus-style circular stamina meter that appears only when your stamina is depleting. It is distractingly massive and neon-colored, and it usually wasn't clear what the relationship was between what I was doing and the stamina bar's drain. It had a mind of its own, and was never a welcome sight during my playtime.</p><p>At its best, though, the penguin parkour contributed to this feeling that I was a small, insignificant thing skirting the edges of a drama I only partially understood. We as humankind are effectively unknowable elder gods to the rest of the animal kingdom, and Penguin Colony largely succeeded in evoking a one-of-a-kind sense of dual-layer cosmic horror through its mechanics.</p><h2 id="side-stories">Side stories</h2><p>None of what follows is an explicit "Vader is Luke's da" spoiler, but this is definitely a game that thrives on surprise and interpretation. If you are already convinced you'd like to play, please leave the browser tab open⁠—ideally on multiple devices and refreshing regularly⁠—until you've completed Penguin Colony. Then come back and finish reading.<strong> </strong></p><p>Penguin Colony is not a 1:1 retelling of At the Mountains of Madness. Lenval Brown voices a new character named Howard Blakely⁠—as opposed to the original story's William Dyer⁠—and the passages he narrates are a pitch-perfect imitation of Lovecraft's distinctive prose.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/mVsQw4pHeCc8hiNgbbk5nQ-1920-80.jpg" alt="black and white drawing of two Nazi soldiers with text "Don't you know what Wehrmacht means? It means Defense Forces not offensive forces"" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/L9tsX4WyxiAvsxAeoGSPZQ-1920-80.jpg" alt="penguin in cage elevator similar to ones from Bloodborne" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wzDnjy42KTPqM4tgFBAimQ-1920-80.jpg" alt="Penguin fleeing monster amid ruins in Penguin Golony" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/P4Q6SAkPgEgufpXMSMWekQ-1920-80.jpg" alt="Penguin amid giant, inert penguins in Penguin Colony" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure></figure><p>Each level ends with a brief interlude where you control members of a party of Māori warriors who inherited a tradition of fighting and containing the evil at the south of the world. Blakely is a sympathetic American working with an expedition of Nazis, specifically their famous division devoted to finding The Ark of the Covenant, Thor's Hammer, the Easter Bunny, etc. The warriors are on a quest to stop the Nazis and suppress the outer evil they inadvertently awakened.</p><p>The war party interludes gradually built up the feeling that I was getting dispatches from another, "better" game. And I love that: I don't think I've ever played a game like Penguin Colony before, one where it feels like the full story is happening in another room, and I only get a keyhole view of what's really going on.</p><p>You get out what you put into this cryptic mystery: It's suffused with unique, cursive hieroglyphs, and I eventually realized that they're a replacement cipher for the alphabet. It pays to play with a notebook and pen nearby⁠—cracking this code was a rewarding little side activity that added to my understanding of the deeper plot.</p><p>The back half of Penguin Colony takes place among the twisting megastructures of an alien city under the ice, and Origame Digital manages to evoke an incredible sense of scale and ancient, terrible purpose with these levels: They reminded me of 2022's criminally underrated <a href="https://www.pcgamer.com/scorn-review/" target="_blank">Scorn</a>, as well as the stunning <a href="https://www.youtube.com/watch?v=P79N7RtS8HU&list=RDP79N7RtS8HU&start_radio=1" target="_blank">Ash Lake</a> in Dark Souls' deepest depths. You don't fully understand what you're looking at, but you get that it is of a staggering profundity.</p><h2 id="case-of-the-vapours">Case of the vapours</h2><p>I notice a tendency in cosmic horror writing to shy away from the more unseemly aspects of H.P. Lovecraft's legacy, this instinct to say "Thank you for the outer horrors and cyclopean ruins, H.P., I'm going to tactfully gloss over what you named your cat, as well as your assorted thoughts on untermenschen, as though you are my least favorite uncle cornering me at a family gathering."</p><p>Penguin Colony proverbially says "fuck it, we ball" in this regard, making Lovecraft's racial fixations a very real, very impactful part of the horror. Blakely is an "enlightened" man of modernity who gets along just peachy with his expedition mates from the Third Reich. He is the neurotic, asylum-bound Lovecraft protagonist at his most cowardly, self-indulgent, and contemptible, and very much feels like a stand-in for old Howard Phillips himself.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/hFfQoPTJyiX98MidBvdtVf-1920-80.jpg" alt="Penguin standing before vast megastructures" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/S96wMsambZEw8uKtjU7acf-1920-80.jpg" alt="Penguin prompted to squawk looking at glowing hieroglyphs" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TnyhVcY5iNyPKhpw9jRHbf-1920-80.jpg" alt="disheveled man in Penguin Colony" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/3WZ6dmLucxkWvRrjwyqNcf-1920-80.jpg" alt="close up of bloodshot eye in Penguin Colony" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure></figure><p>The Māori warriors are everything Blakely is not, with minimal dialogue compared to Blakely's voluminous narration. Their laconic characterization is instead delivered through their actions and fellowship with each other. Their camaraderie stands in contrast with Blakely's solipsistic navel-gazing. They are proactive, and oppose the influence of outer beings rather than waiting to be changed by them. They are motivated to protect others, even to the point of self-sacrifice, in contrast with Blakely's vulgar, "scientific" curiosity or the Nazis' brutal nationalism.</p><p>It rules that this is all roiling just under the surface of Penguin Colony. It invites you to draw your own conclusions about what you're witnessing, rather than didactically explaining a point of view. The only times it indulges in explicit political messaging are with a land acknowledgement and content warning at the beginning of the game, then a blistering indictment of the industry's inaction regarding the genocide of Palestinians by Israel after the credits. I found these direct addresses of the player to be all the more impactful paired with Penguin Colony's otherwise cryptic delivery.</p><p>Even with its rough edges, I love Penguin Colony: It's a rich, multilayered piece of interactive storytelling in an impressively compact package. It's a unique exploration of cosmic horror, one that rebels against genre grandaddy H.P. Lovecraft's signature 19th century freak boy racism with a tale of indigenous revenge. One you observe through the eyes of a penguin.</p><div class="product"><a data-dimension112="dd7fd9a2-cfd1-11f1-a564-3f07dbf55928" 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="dd7fd9a2-cfd1-11f1-a564-3f07dbf55928" 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/horror/penguin-colony-review/</link>
                                                                            <description>
                            <![CDATA[ Something ancient and horrible stirs in the farthest south: Are you bad enough penguin to… not really do much about it? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">hWtoCNkvtgMZPiUDPSErMb</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/zZTTjF3rcB8LvDfbHX23jU-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 24 Oct 2026 18:10:01 +0000</pubDate>                                                                                                                                <updated>Sat, 24 Oct 2026 18:58:42 +0000</updated>
                                                                                                                                            <category><![CDATA[Horror]]></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/zZTTjF3rcB8LvDfbHX23jU-1920-80.jpg">
                                                            <media:credit><![CDATA[Origame Digital]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Penguin Colony key art showing three figures in stylized fashion on purple background]]></media:description>                                                            <media:text><![CDATA[Penguin Colony key art showing three figures in stylized fashion on purple background]]></media:text>
                                <media:title type="plain"><![CDATA[Penguin Colony key art showing three figures in stylized fashion on purple background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/zZTTjF3rcB8LvDfbHX23jU-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <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> Lovecraftian horror through the eyes of a penguin.<br><strong>Release date</strong> October 16, 2026<br><strong>Expect to pay</strong> $15 / £13<br><strong>Developer </strong>Origame Digital<br><strong>Publisher </strong>Fellow Traveller<br><strong>Reviewed on</strong> RX 9070 XT, Core i5 12600K, 32 GB RAM, Steam Deck<br><strong>Multiplayer </strong>No<br><strong>Steam Deck </strong>Verified<br><strong>Link </strong><a data-analytics-id="inline-link" href="https://store.steampowered.com/app/3695930/Penguin_Colony/" target="_blank">Steam</a></p></div></div><p>Penguin Colony is a work of cosmic horror that I would recommend to anyone with even a passing interest in scares from <em>the beyond</em>, even though its unique penguin platforming can be frustrating to wrangle. It's a radical recontextualization of an H.P. Lovecraft classic with a clear affection for the writer's storytelling, but also scathing contempt for his racism.</p><p>For my money, it's not October without a weird-ass new indie horror game leaving a lasting impression on me, and Penguin Colony has satisfied my annual craving. You are a penguin witnessing the events of the Lovecraft story, At the Mountains of Madness. Your powers are honk, slide, swim, and hop. </p><p>Rather than being limited to a specific bird, you are able to possess any penguin you come across, theoretically using different species' abilities to tackle different movement challenges. Aside from using little baby penguins to squeeze into tight spaces, I was almost exclusively a <a href="https://en.wikipedia.org/wiki/Rockhopper_penguin" target="_blank">Rockhopper</a> main: Their impressive vertical jump was a boon in many areas. They shoulda hooped instead of investigating The Strange.</p><p>The GOAT, PC Gamer <a href="https://www.youtube.com/watch?v=dRoJYZG-aTs&list=PLHzN3MktVPzXoJRC6JAxATx8XIkiiD3Tu" target="_blank">Tales from The Hard Drive</a> host Lenval Brown, narrates the adventure from the perspective of a customarily neurotic and verbose Lovecraft protagonist. Brown's delivery lends everything a similar emotional weight to his iconic performance in Disco Elysium, and he makes for a comforting, familiar presence⁠ even as things go all nasty crazy style.</p><h2 id="waddle-on">Waddle on</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Cxej37DiqTGbmNYWDKwS33-1920-80.jpg" alt="Penguin looking toward camera alongside crazy nazis" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cUtDZakyX6iQXJaUF3Zfz-1920-80.jpg" alt="Penguin facing camera with ice fields visible in background" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5ECkkFfbSHe3evfsEV8tu-1920-80.jpg" alt="Penguin approaching ruins with location card "Great Obelisk"" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cVQwBrkT4eNZ9XKsAgot23-1920-80.jpg" alt="black and white view of Nazi camp with text "Head to the whisper of great [unintelligible], infant lord of the [unintelligible]"" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure></figure><p>I remain conflicted over Penguin Colony's movement and mechanics: I didn't find them especially <em>fun</em>, they got in the way, but that also felt weirdly appropriate. As a penguin, waddling around is kinda shitty and sluggish, particularly as the levels shift away from their native habitat.</p><p>Most charitably, there's a Foddian (Getting Over It, <a href="https://www.pcgamer.com/games/sim/baby-steps-review-one-of-the-funniest-games-ive-ever-played-is-also-one-of-the-most-frustrating/" target="_blank">Baby Steps</a>) quality to the mechanical exploration. It got me to really lean in for some tricky traversal as the atmosphere reached its most suffocating and intense in the caves and structures deep under the arctic ice⁠. I felt frustrated and restless as Penguin Colony's coolest levels opened up before me, held back as I was by this little penguin body. But that dovetails quite well with Penguin Colony's whole premise: that you are an inhuman observer of a human (and something else) story.</p><p>A more clear-cut negative was an inconsistency with a mantling (<em>do penguins mantle?</em>) feature (<em>was this intentional?</em>) that felt more like a clipping glitch, letting me clear some ledges but not others. Penguin Colony's appropriately minimalist UI has one glaring exception: A Shadow of the Colossus-style circular stamina meter that appears only when your stamina is depleting. It is distractingly massive and neon-colored, and it usually wasn't clear what the relationship was between what I was doing and the stamina bar's drain. It had a mind of its own, and was never a welcome sight during my playtime.</p><p>At its best, though, the penguin parkour contributed to this feeling that I was a small, insignificant thing skirting the edges of a drama I only partially understood. We as humankind are effectively unknowable elder gods to the rest of the animal kingdom, and Penguin Colony largely succeeded in evoking a one-of-a-kind sense of dual-layer cosmic horror through its mechanics.</p><h2 id="side-stories">Side stories</h2><p>None of what follows is an explicit "Vader is Luke's da" spoiler, but this is definitely a game that thrives on surprise and interpretation. If you are already convinced you'd like to play, please leave the browser tab open⁠—ideally on multiple devices and refreshing regularly⁠—until you've completed Penguin Colony. Then come back and finish reading.<strong> </strong></p><p>Penguin Colony is not a 1:1 retelling of At the Mountains of Madness. Lenval Brown voices a new character named Howard Blakely⁠—as opposed to the original story's William Dyer⁠—and the passages he narrates are a pitch-perfect imitation of Lovecraft's distinctive prose.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/mVsQw4pHeCc8hiNgbbk5nQ-1920-80.jpg" alt="black and white drawing of two Nazi soldiers with text "Don't you know what Wehrmacht means? It means Defense Forces not offensive forces"" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/L9tsX4WyxiAvsxAeoGSPZQ-1920-80.jpg" alt="penguin in cage elevator similar to ones from Bloodborne" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wzDnjy42KTPqM4tgFBAimQ-1920-80.jpg" alt="Penguin fleeing monster amid ruins in Penguin Golony" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/P4Q6SAkPgEgufpXMSMWekQ-1920-80.jpg" alt="Penguin amid giant, inert penguins in Penguin Colony" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure></figure><p>Each level ends with a brief interlude where you control members of a party of Māori warriors who inherited a tradition of fighting and containing the evil at the south of the world. Blakely is a sympathetic American working with an expedition of Nazis, specifically their famous division devoted to finding The Ark of the Covenant, Thor's Hammer, the Easter Bunny, etc. The warriors are on a quest to stop the Nazis and suppress the outer evil they inadvertently awakened.</p><p>The war party interludes gradually built up the feeling that I was getting dispatches from another, "better" game. And I love that: I don't think I've ever played a game like Penguin Colony before, one where it feels like the full story is happening in another room, and I only get a keyhole view of what's really going on.</p><p>You get out what you put into this cryptic mystery: It's suffused with unique, cursive hieroglyphs, and I eventually realized that they're a replacement cipher for the alphabet. It pays to play with a notebook and pen nearby⁠—cracking this code was a rewarding little side activity that added to my understanding of the deeper plot.</p><p>The back half of Penguin Colony takes place among the twisting megastructures of an alien city under the ice, and Origame Digital manages to evoke an incredible sense of scale and ancient, terrible purpose with these levels: They reminded me of 2022's criminally underrated <a href="https://www.pcgamer.com/scorn-review/" target="_blank">Scorn</a>, as well as the stunning <a href="https://www.youtube.com/watch?v=P79N7RtS8HU&list=RDP79N7RtS8HU&start_radio=1" target="_blank">Ash Lake</a> in Dark Souls' deepest depths. You don't fully understand what you're looking at, but you get that it is of a staggering profundity.</p><h2 id="case-of-the-vapours">Case of the vapours</h2><p>I notice a tendency in cosmic horror writing to shy away from the more unseemly aspects of H.P. Lovecraft's legacy, this instinct to say "Thank you for the outer horrors and cyclopean ruins, H.P., I'm going to tactfully gloss over what you named your cat, as well as your assorted thoughts on untermenschen, as though you are my least favorite uncle cornering me at a family gathering."</p><p>Penguin Colony proverbially says "fuck it, we ball" in this regard, making Lovecraft's racial fixations a very real, very impactful part of the horror. Blakely is an "enlightened" man of modernity who gets along just peachy with his expedition mates from the Third Reich. He is the neurotic, asylum-bound Lovecraft protagonist at his most cowardly, self-indulgent, and contemptible, and very much feels like a stand-in for old Howard Phillips himself.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/hFfQoPTJyiX98MidBvdtVf-1920-80.jpg" alt="Penguin standing before vast megastructures" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/S96wMsambZEw8uKtjU7acf-1920-80.jpg" alt="Penguin prompted to squawk looking at glowing hieroglyphs" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TnyhVcY5iNyPKhpw9jRHbf-1920-80.jpg" alt="disheveled man in Penguin Colony" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/3WZ6dmLucxkWvRrjwyqNcf-1920-80.jpg" alt="close up of bloodshot eye in Penguin Colony" /><figcaption><small role="credit">Origame Digital</small></figcaption></figure></figure><p>The Māori warriors are everything Blakely is not, with minimal dialogue compared to Blakely's voluminous narration. Their laconic characterization is instead delivered through their actions and fellowship with each other. Their camaraderie stands in contrast with Blakely's solipsistic navel-gazing. They are proactive, and oppose the influence of outer beings rather than waiting to be changed by them. They are motivated to protect others, even to the point of self-sacrifice, in contrast with Blakely's vulgar, "scientific" curiosity or the Nazis' brutal nationalism.</p><p>It rules that this is all roiling just under the surface of Penguin Colony. It invites you to draw your own conclusions about what you're witnessing, rather than didactically explaining a point of view. The only times it indulges in explicit political messaging are with a land acknowledgement and content warning at the beginning of the game, then a blistering indictment of the industry's inaction regarding the genocide of Palestinians by Israel after the credits. I found these direct addresses of the player to be all the more impactful paired with Penguin Colony's otherwise cryptic delivery.</p><p>Even with its rough edges, I love Penguin Colony: It's a rich, multilayered piece of interactive storytelling in an impressively compact package. It's a unique exploration of cosmic horror, one that rebels against genre grandaddy H.P. Lovecraft's signature 19th century freak boy racism with a tale of indigenous revenge. One you observe through the eyes of a penguin.</p><div class="product"><a data-dimension112="dd7fd9a2-cfd1-11f1-a564-3f07dbf55928" 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="dd7fd9a2-cfd1-11f1-a564-3f07dbf55928" 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[ BioWare's incredible legacy will continue as long as there are RPGs ]]></title>
                                                                                                <dc:content><![CDATA[ <div  class="fancy-box"><div class="fancy_box-title">Dungeon Master</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="ckZUwfxbakq5yXMJMfSmBW" name="logo_dungeon" caption="" alt="The Dungeon Master column logo" src="https://cdn.mos.cms.futurecdn.net/ckZUwfxbakq5yXMJMfSmBW-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">For my column this week I was going to write about climbing all over monsters in Dragon Dogma 2's chilly Dark Arisen expansion, but then EA decided to finally <a data-analytics-id="inline-link" href="https://www.pcgamer.com/gaming-industry/rip-bioware-ea-has-shut-down-the-legendary-rpg-developer/">murder BioWare</a> after years of slowly poisoning it. So sadly I am pivoting to this eulogy.</p></div></div><p>It's hard to discuss BioWare's demise without detailing the corporate meddling that led to one of gaming's most celebrated and enduring studios getting the axe. BioWare made mistakes, undeniably, but the buck stops at the executives who gutted its teams and never understood, for instance, the popularity of Dragon Age.</p><p>But things are bleak enough and you know all this already. So instead, I want to celebrate BioWare's impressive impact, which will continue for as long as studios are designing RPGs. </p><p>Even if BioWare ceased to exist after its incredible run of Infinity Engine games, it would still be considered an icon. Baldur's Gate was, for so many people, <em>the </em>CRPG, defining an era of roleplaying games and echoing across the decades. We're still talking about it, and studios are still designing games built on that old foundation. </p><p>Owlcat, Obsidian, Larian—three of the biggest RPG studios of the current era have all dipped into that well. Without BioWare we'd not have the Pathfinder CRPGs, Pillars of Eternity or Tyranny, and <a href="https://www.pcgamer.com/uk/baldur-s-gate-3/" target="_blank">Baldur's Gate 3</a> certainly wouldn't exist. </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="uKhJjjYSqE7VViixq9D9RX" name="irenicus" alt="Jon Irenicus, the antagonist of BG2, pouting" src="https://cdn.mos.cms.futurecdn.net/uKhJjjYSqE7VViixq9D9RX-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/uKhJjjYSqE7VViixq9D9RX-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: BioWare)</span></figcaption></figure><p>Obsidian as we know it would likely be a very different studio without BioWare, if it existed at all. It formed after the closure of Black Isle Studios, which published Baldur's Gate, and it relied on BioWare's Infinity Engine for Icewind Dale and Planescape: Torment. That relationship continued under Obsidian, with the team following up BioWare's Neverwinter Nights and KotOR with celebrated sequels, before making <a href="https://www.pcgamer.com/uk/pillars-of-eternity/">Pillars of Eternity</a>, BG's spiritual successor.</p><div><blockquote><p>Obsidian as we know it would likely be a very different studio without BioWare.</p></blockquote></div><p>The modern resurgence of CRPGs, born out of a love of BioWare and Black Isle's library, probably would not have happened if the two studios had not made such a huge impression. <a href="https://www.pcgamer.com/uk/disco-elysium/" target="_blank">Disco Elysium</a>, for instance, owes a great deal to Planescape: Torment, and if ZA/UM had never created Disco, we wouldn't have games like <a href="https://www.pcgamer.com/uk/esoteric-ebb/" target="_blank">Esoteric Ebb</a> or <a href="https://www.pcgamer.com/uk/zero-parades-for-dead-spies/" target="_blank">Zero Parades</a> either. </p><p>Following Baldur's Gate, BioWare gave us Neverwinter Nights in 2002, a game that was still undeniably a CRPG, but one that catered to the demand for 3D graphics. Neverwinter Nights was solid, but its real legacy was the Aurora Engine and the Aurora Toolset.</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="xFqPoz4G2gGnFz3PYmTX3R" name="PCG361.mon_positive.g_neverwinternights1.jpg" alt="nwn" src="https://cdn.mos.cms.futurecdn.net/xFqPoz4G2gGnFz3PYmTX3R-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/xFqPoz4G2gGnFz3PYmTX3R-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: Beamdog)</span></figcaption></figure><p>BioWare gave players the power of game creation with the toolset, with which they spawned countless worlds, modules, mods and persistent servers—effectively community-run MMOs. It was my first foray into modding, when I created a D&D adventure for my flatmate's birthday. I was a broke student, so I couldn't afford a gift, but I could absolutely skive class and make a cool game. </p><p>Folks are still playing with the toolset today, in a community that has persevered for over two decades. </p><p>Also in 2002, a small Polish developer was founded. CD Projekt started life as a localisation studio, and it worked with BioWare and Interplay to create the Polish version of Baldur's Gate. From that relationship, it was given the job of porting Baldur's Gate: Dark Alliance to PC. Unfortunately, that port was a victim of Interplay's demise, but bigger and better things were on the horizon. </p><p>The company formed a new studio to develop its own games, known as CD Projekt Red, and started work on the original Witcher. The studio then licensed the Aurora Engine from BioWare, which it heavily modified to create Geralt's first big videogame romp. </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:1280px;"><p class="vanilla-image-block" style="padding-top:62.50%;"><img id="R8C5wbhFsnmrFhRPtHiGvU" name="Witcher 1.jpg" alt="Geralt meditating" src="https://cdn.mos.cms.futurecdn.net/R8C5wbhFsnmrFhRPtHiGvU-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1280" height="800" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/R8C5wbhFsnmrFhRPtHiGvU-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div></figure><p>CDPR's joint CEO Michał Nowakowski <a href="https://www.pcgamer.com/gaming-industry/cd-projekt-boss-pays-tribute-to-bioware-for-helping-bring-the-witcher-to-life-20-years-ago-bioware-has-been-a-massive-part-of-cdpr-history/" target="_blank">paid tribute to BioWare</a> after the closure announcement, saying, "Bioware has been a massive part of CDPR history. We befriended them when localizing and selling Baldur’s Gate games in Poland, Czech, and Slovakia. And later they were [a] great help when lending us their engine for Witcher 1, sharing their wisdom and even giving us a spot at their booth at E3."</p><div><blockquote><p>As the popularity of CRPGs started to wane and consoles began to dominate, BioWare adapted and pivoted.</p></blockquote></div><p>As the popularity of CRPGs started to wane and consoles began to dominate, BioWare adapted and pivoted. Star Wars: Knights of the Old Republic was still secretly a CRPG, but one that you could play on console with your controller, with so much of the classic CRPG complexity hidden from view. </p><p>KotOR kicked off a series that continued with KotOR 2, from Obsidian, and BioWare returned to the series for SWTOR, a MMO that continues today under developer Broadsword. At the time of its launch, it was the most expensive MMO ever made, and it continues to be an astonishing achievement in terms of the absurd amount of dialogue and voice acting. </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:1200px;"><p class="vanilla-image-block" style="padding-top:56.08%;"><img id="iUto3z5sS8sxsRQu8Zs69m" name="malgus.jpg" alt="Darth Malgus" src="https://cdn.mos.cms.futurecdn.net/iUto3z5sS8sxsRQu8Zs69m-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1200" height="673" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/iUto3z5sS8sxsRQu8Zs69m-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: EA)</span></figcaption></figure><p>With KotOR, BioWare really started to refine the features that would go on to influence so many RPGs (and games in other genres). BioWare RPGs have always featured big, game-changing decisions, letting you determine through your choices who lives, who dies, and who gets to become the protagonist's love interest. But in KotOR, we started to see this really become codified.  </p><p>The romances, the alignment system, the ability to influence companions and even turn them to the Dark Side, these systems are part of the DNA of modern RPGs. Even now, we describe games that feature big, signposted story branches as having BioWare-style choices. </p><p>Jade Empire didn't make nearly as big a splash in 2005, but it's here we see BioWare experimenting with action-RPG mechanics. I love Jade Empire, and it further developed the BioWare-style choices, but it also felt a bit like it was following a trend rather than setting one. Story-driven action-RPGs weren't new. </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:1000px;"><p class="vanilla-image-block" style="padding-top:56.30%;"><img id="HhuDkt5xZvEjqXCNsiMyNi" name="saren.jpg" alt="Saren" src="https://cdn.mos.cms.futurecdn.net/HhuDkt5xZvEjqXCNsiMyNi-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1000" height="563" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/HhuDkt5xZvEjqXCNsiMyNi-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div></figure><p>With Mass Effect, though, it attempted something different, and it was duly rewarded. KotOR and Jade Empire saw the studio try to adapt to changing tastes, but with Mass Effect BioWare had finally figured out how to move on from CRPGs. </p><div><blockquote><p>BioWare had finally figured out how to move on from CRPGs.</p></blockquote></div><p>The studio that gave us Baldur's Gate developing a third-person shooter sounded like a disaster waiting to happen, but instead BioWare made something incredible. Never before in a BioWare game had we been able to play such a well-defined protagonist, but the studio maintained the player agency it was so loved for, letting us create all these different versions of Shepard. There's so much more to the character than the binary Paragon/Renegade system. </p><p>Mass Effect is also where BioWare's experiments with choice and consequence really paid off. Do we wipe out an alien species or allow one of the galaxy's biggest threats to survive? Do we betray the Council or risk the deaths of countless humans? Do we date Liara or the space racist? And then we got to see these choices reverberate across the sequels. Years of decisions culminating in a fight for the galaxy's survival. </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="QLBVemEasSnJmdfJ6VMfKF" name="me trailer" alt="Liara T'Soni in Mass Effect: Universe trailer" src="https://cdn.mos.cms.futurecdn.net/QLBVemEasSnJmdfJ6VMfKF-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/QLBVemEasSnJmdfJ6VMfKF-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: BioWare/Electronic Arts)</span></figcaption></figure><p>With BioWare's closure, we'll never get to see what it was planning for the fifth outing, though after Andromeda I'm not sure we would have been happy with it—even though the <a href="https://www.pcgamer.com/games/mass-effect/someone-leaked-a-mass-effect-5-trailer-and-now-i-feel-even-worse-because-it-looks-really-good/" target="_blank">leaked trailer looks rad</a>. But Mass Effect lives on. <a href="https://www.pcgamer.com/movies-tv/mass-effects-amazon-series-is-reportedly-continuing-after-bioware-shutdown-whichll-make-an-uncomfortable-gravestone-for-the-studios-work/" target="_blank">The Amazon series is reportedly still going forward</a>, and not one but two new games are on the horizon that are carrying the torch: Owlcat's <a href="https://www.pcgamer.com/uk/the-expanse-osiris-reborn/" target="_blank">The Expanse: Osiris Reborn</a> and Archetype's <a href="https://www.pcgamer.com/uk/exodus/" target="_blank">Exodus</a>. Both are coming next year. </p><p>In 2009, BioWare finally released Dragon Age: Origins, which had been in development for seven years, underwent some significant changes, and was framed as a spiritual successor to Baldur's Gate. And boy did it live up to those high expectations. A few months after launch, it had already hit 3.2 million sales. BioWare moved on from CRPGs, only to go and release this all-timer a couple of years later. </p><p>While the stuido would go on to chip away at series' the CRPG elements, culminating in 2024's not-so-great action-RPG The Veilguard, Origins at least showed the world that CRPGs were still viable, and that console gamers were perfectly capable of enjoying a more methodical, complex 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:2222px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="bTQXAx999o9s5ZpdAgBv6B" name="dragon-age-origins-morrigan.jpg" alt="Dragon Age: Origins - Morrigan holds up her hands in exasperation" src="https://cdn.mos.cms.futurecdn.net/bTQXAx999o9s5ZpdAgBv6B-1920-80.jpg" mos="" align="middle" fullscreen="1" width="2222" height="1250" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/bTQXAx999o9s5ZpdAgBv6B-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: BioWare)</span></figcaption></figure><p>Origins went on to influence a new generation of videogame developers, not just as an RPG, but as a successful blockbuster game that stopped pretending queer people didn't exist. Sure, Femshep could date Liara in Mass Effect, but BioWare obfuscated the queer romance by making the Asari genderless, even though Liara is absolutely female coded. It could also be argued that the Liara romance played into the fetishisation of lesbians, titillating straight men without actually depicting a queer romance. </p><div><blockquote><p>Sorry, bigots, you lost!</p></blockquote></div><p>BioWare continued to represent queer relationships in its other RPGs, sometimes with specific characters, and sometimes by making every character playersexual. And it got a lot of shit for this from the conservative nutjobs. Thankfully, those idiots were fighting a losing battle. </p><p>Just look at how many RPGs have followed suit. Not just in allowing the player to embark on a queer romance, but their depiction of queer characters in general. Even the fairly conservative <a href="https://www.pcgamer.com/uk/kingdom-come-deliverance-2/" target="_blank">Kingdom Come: Deliverance 2</a>, where the game director constantly complains about "wokeness", features a genuinely fantastic queer romance. Sorry, bigots, you lost!</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:1280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="L35AMDntFt4CuQc36M2mn" name="Dragon-Age-Romance" alt="Dorian romance" src="https://cdn.mos.cms.futurecdn.net/L35AMDntFt4CuQc36M2mn-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1280" height="720" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/L35AMDntFt4CuQc36M2mn-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: BioWare)</span></figcaption></figure><p>That it was able to do so much of this while trapped inside EA's dev-killing prison is even more impressive. Mass Effect and Dragon Age came out of the previous era, despite EA being the publisher at the time of their respective launches, but BioWare continued to take big swings despite the less than ideal situation the devs found themselves in. </p><p>Yes, I write for PCG and I am about to defend Dragon Age 2. What a shock! But DA2 is a great example of what BioWare was capable of, even when EA was going out of its way to set it up for failure. Despite an absurd deadline that led to extreme crunch and so many cut corners, BioWare was able to put out some of its greatest writing, while introducing beloved and enduring characters like Varric, Cassandra and Hawke. The game was compromised from the get-go, but there's still so much brilliance in there. </p><p>BioWare just kept beating the odds. It was the same with Dragon Age: Inquisition. EA wanted all of its games to use a single engine, Frostbite, leaving BioWare working with new tools that simply weren't designed for RPG development. It was apparently a bit of a nightmare for the team, which once again had to crunch to get the game out the door. But again, it was fantastic—finding a middle ground between Origins and DA2, while also going mostly open world. </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:1087px;"><p class="vanilla-image-block" style="padding-top:58.14%;"><img id="MB3P84zk7fGfWz3xXmAfMg" name="dragon age inquisition art.JPG" alt="Inquisition art" src="https://cdn.mos.cms.futurecdn.net/MB3P84zk7fGfWz3xXmAfMg-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1087" height="632" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/MB3P84zk7fGfWz3xXmAfMg-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: Bioware)</span></figcaption></figure><p>Inquisition was BioWare's last great game, but what an exceptional run! It sucks that its reward for all these achievements was death by a thousand cuts, and that it became a punching bag for the anti-woke mob. But I refuse to accept that this mars its legacy, or that its demise is anything other than incredibly sad. </p><p>And yes, I've been a pretty vocal BioWare detractor over the last few years. I could barely get through Andromeda, bounced off Anthem immediately, and I thought that The Veilguard was unmitigated rubbish, full of annoying characters, repetitive combat and a poorly constructed narrative. At the end of 2024, I said that I'd <a href="https://www.pcgamer.com/games/dragon-age/after-years-of-holding-out-hope-2024-was-the-year-i-finally-gave-up-on-bioware/">finally given up on BioWare</a>. And earlier this year, I wrote about how <a href="https://www.pcgamer.com/games/mass-effect/how-bioware-can-make-an-unlikely-comeback-and-why-it-never-will-the-first-step-is-cancelling-mass-effect/">BioWare could feasibly make a comeback</a>, but that it never would. </p><div><blockquote><p>What I wanted was to see that old boldness return.</p></blockquote></div><p>None of this meant that I wanted to see BioWare's demise. What I wanted was to see that old boldness return. A new game, some big swings, the philosophy of the BioWare of old, even if so many of the people who made those games happen had left or been made redundant. It's a shame we never got to see what that would look like.</p><p>I don't want to dismiss the incredible work so many other developers have done elevating the RPG genre—they own their achievements. But at the same time, it's impossible to imagine RPGs without BioWare. Its importance cannot be overstated. You did well, BioWare, and even this grumpy old man will miss you. </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="c55bf8f0-cf0a-11f1-981c-270b9664a75a" 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="c55bf8f0-cf0a-11f1-981c-270b9664a75a" 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/rpg/biowares-incredible-legacy-will-continue-as-long-as-there-are-rpgs/</link>
                                                                            <description>
                            <![CDATA[ EA is shutting down the venerable studio, but its impact will persevere. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">65AmewyE9YRQM9CfUhtzcb</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/QaMGHy7ehiZ56gLwQYcngN-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 24 Oct 2026 18:00:00 +0000</pubDate>                                                                                                                                <updated>Sat, 24 Oct 2026 18:15:53 +0000</updated>
                                                                                                                                            <category><![CDATA[RPG]]></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>
                                                                                                                                <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/QaMGHy7ehiZ56gLwQYcngN-1920-80.jpg">
                                                            <media:credit><![CDATA[BioWare]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Shepard hugging Garrus]]></media:description>                                                            <media:text><![CDATA[Shepard hugging Garrus]]></media:text>
                                <media:title type="plain"><![CDATA[Shepard hugging Garrus]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/QaMGHy7ehiZ56gLwQYcngN-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Dungeon Master</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="ckZUwfxbakq5yXMJMfSmBW" name="logo_dungeon" caption="" alt="The Dungeon Master column logo" src="https://cdn.mos.cms.futurecdn.net/ckZUwfxbakq5yXMJMfSmBW-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">For my column this week I was going to write about climbing all over monsters in Dragon Dogma 2's chilly Dark Arisen expansion, but then EA decided to finally <a data-analytics-id="inline-link" href="https://www.pcgamer.com/gaming-industry/rip-bioware-ea-has-shut-down-the-legendary-rpg-developer/">murder BioWare</a> after years of slowly poisoning it. So sadly I am pivoting to this eulogy.</p></div></div><p>It's hard to discuss BioWare's demise without detailing the corporate meddling that led to one of gaming's most celebrated and enduring studios getting the axe. BioWare made mistakes, undeniably, but the buck stops at the executives who gutted its teams and never understood, for instance, the popularity of Dragon Age.</p><p>But things are bleak enough and you know all this already. So instead, I want to celebrate BioWare's impressive impact, which will continue for as long as studios are designing RPGs. </p><p>Even if BioWare ceased to exist after its incredible run of Infinity Engine games, it would still be considered an icon. Baldur's Gate was, for so many people, <em>the </em>CRPG, defining an era of roleplaying games and echoing across the decades. We're still talking about it, and studios are still designing games built on that old foundation. </p><p>Owlcat, Obsidian, Larian—three of the biggest RPG studios of the current era have all dipped into that well. Without BioWare we'd not have the Pathfinder CRPGs, Pillars of Eternity or Tyranny, and <a href="https://www.pcgamer.com/uk/baldur-s-gate-3/" target="_blank">Baldur's Gate 3</a> certainly wouldn't exist. </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="uKhJjjYSqE7VViixq9D9RX" name="irenicus" alt="Jon Irenicus, the antagonist of BG2, pouting" src="https://cdn.mos.cms.futurecdn.net/uKhJjjYSqE7VViixq9D9RX-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/uKhJjjYSqE7VViixq9D9RX-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: BioWare)</span></figcaption></figure><p>Obsidian as we know it would likely be a very different studio without BioWare, if it existed at all. It formed after the closure of Black Isle Studios, which published Baldur's Gate, and it relied on BioWare's Infinity Engine for Icewind Dale and Planescape: Torment. That relationship continued under Obsidian, with the team following up BioWare's Neverwinter Nights and KotOR with celebrated sequels, before making <a href="https://www.pcgamer.com/uk/pillars-of-eternity/">Pillars of Eternity</a>, BG's spiritual successor.</p><div><blockquote><p>Obsidian as we know it would likely be a very different studio without BioWare.</p></blockquote></div><p>The modern resurgence of CRPGs, born out of a love of BioWare and Black Isle's library, probably would not have happened if the two studios had not made such a huge impression. <a href="https://www.pcgamer.com/uk/disco-elysium/" target="_blank">Disco Elysium</a>, for instance, owes a great deal to Planescape: Torment, and if ZA/UM had never created Disco, we wouldn't have games like <a href="https://www.pcgamer.com/uk/esoteric-ebb/" target="_blank">Esoteric Ebb</a> or <a href="https://www.pcgamer.com/uk/zero-parades-for-dead-spies/" target="_blank">Zero Parades</a> either. </p><p>Following Baldur's Gate, BioWare gave us Neverwinter Nights in 2002, a game that was still undeniably a CRPG, but one that catered to the demand for 3D graphics. Neverwinter Nights was solid, but its real legacy was the Aurora Engine and the Aurora Toolset.</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="xFqPoz4G2gGnFz3PYmTX3R" name="PCG361.mon_positive.g_neverwinternights1.jpg" alt="nwn" src="https://cdn.mos.cms.futurecdn.net/xFqPoz4G2gGnFz3PYmTX3R-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/xFqPoz4G2gGnFz3PYmTX3R-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: Beamdog)</span></figcaption></figure><p>BioWare gave players the power of game creation with the toolset, with which they spawned countless worlds, modules, mods and persistent servers—effectively community-run MMOs. It was my first foray into modding, when I created a D&D adventure for my flatmate's birthday. I was a broke student, so I couldn't afford a gift, but I could absolutely skive class and make a cool game. </p><p>Folks are still playing with the toolset today, in a community that has persevered for over two decades. </p><p>Also in 2002, a small Polish developer was founded. CD Projekt started life as a localisation studio, and it worked with BioWare and Interplay to create the Polish version of Baldur's Gate. From that relationship, it was given the job of porting Baldur's Gate: Dark Alliance to PC. Unfortunately, that port was a victim of Interplay's demise, but bigger and better things were on the horizon. </p><p>The company formed a new studio to develop its own games, known as CD Projekt Red, and started work on the original Witcher. The studio then licensed the Aurora Engine from BioWare, which it heavily modified to create Geralt's first big videogame romp. </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:1280px;"><p class="vanilla-image-block" style="padding-top:62.50%;"><img id="R8C5wbhFsnmrFhRPtHiGvU" name="Witcher 1.jpg" alt="Geralt meditating" src="https://cdn.mos.cms.futurecdn.net/R8C5wbhFsnmrFhRPtHiGvU-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1280" height="800" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/R8C5wbhFsnmrFhRPtHiGvU-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div></figure><p>CDPR's joint CEO Michał Nowakowski <a href="https://www.pcgamer.com/gaming-industry/cd-projekt-boss-pays-tribute-to-bioware-for-helping-bring-the-witcher-to-life-20-years-ago-bioware-has-been-a-massive-part-of-cdpr-history/" target="_blank">paid tribute to BioWare</a> after the closure announcement, saying, "Bioware has been a massive part of CDPR history. We befriended them when localizing and selling Baldur’s Gate games in Poland, Czech, and Slovakia. And later they were [a] great help when lending us their engine for Witcher 1, sharing their wisdom and even giving us a spot at their booth at E3."</p><div><blockquote><p>As the popularity of CRPGs started to wane and consoles began to dominate, BioWare adapted and pivoted.</p></blockquote></div><p>As the popularity of CRPGs started to wane and consoles began to dominate, BioWare adapted and pivoted. Star Wars: Knights of the Old Republic was still secretly a CRPG, but one that you could play on console with your controller, with so much of the classic CRPG complexity hidden from view. </p><p>KotOR kicked off a series that continued with KotOR 2, from Obsidian, and BioWare returned to the series for SWTOR, a MMO that continues today under developer Broadsword. At the time of its launch, it was the most expensive MMO ever made, and it continues to be an astonishing achievement in terms of the absurd amount of dialogue and voice acting. </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:1200px;"><p class="vanilla-image-block" style="padding-top:56.08%;"><img id="iUto3z5sS8sxsRQu8Zs69m" name="malgus.jpg" alt="Darth Malgus" src="https://cdn.mos.cms.futurecdn.net/iUto3z5sS8sxsRQu8Zs69m-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1200" height="673" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/iUto3z5sS8sxsRQu8Zs69m-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: EA)</span></figcaption></figure><p>With KotOR, BioWare really started to refine the features that would go on to influence so many RPGs (and games in other genres). BioWare RPGs have always featured big, game-changing decisions, letting you determine through your choices who lives, who dies, and who gets to become the protagonist's love interest. But in KotOR, we started to see this really become codified.  </p><p>The romances, the alignment system, the ability to influence companions and even turn them to the Dark Side, these systems are part of the DNA of modern RPGs. Even now, we describe games that feature big, signposted story branches as having BioWare-style choices. </p><p>Jade Empire didn't make nearly as big a splash in 2005, but it's here we see BioWare experimenting with action-RPG mechanics. I love Jade Empire, and it further developed the BioWare-style choices, but it also felt a bit like it was following a trend rather than setting one. Story-driven action-RPGs weren't new. </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:1000px;"><p class="vanilla-image-block" style="padding-top:56.30%;"><img id="HhuDkt5xZvEjqXCNsiMyNi" name="saren.jpg" alt="Saren" src="https://cdn.mos.cms.futurecdn.net/HhuDkt5xZvEjqXCNsiMyNi-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1000" height="563" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/HhuDkt5xZvEjqXCNsiMyNi-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div></figure><p>With Mass Effect, though, it attempted something different, and it was duly rewarded. KotOR and Jade Empire saw the studio try to adapt to changing tastes, but with Mass Effect BioWare had finally figured out how to move on from CRPGs. </p><div><blockquote><p>BioWare had finally figured out how to move on from CRPGs.</p></blockquote></div><p>The studio that gave us Baldur's Gate developing a third-person shooter sounded like a disaster waiting to happen, but instead BioWare made something incredible. Never before in a BioWare game had we been able to play such a well-defined protagonist, but the studio maintained the player agency it was so loved for, letting us create all these different versions of Shepard. There's so much more to the character than the binary Paragon/Renegade system. </p><p>Mass Effect is also where BioWare's experiments with choice and consequence really paid off. Do we wipe out an alien species or allow one of the galaxy's biggest threats to survive? Do we betray the Council or risk the deaths of countless humans? Do we date Liara or the space racist? And then we got to see these choices reverberate across the sequels. Years of decisions culminating in a fight for the galaxy's survival. </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="QLBVemEasSnJmdfJ6VMfKF" name="me trailer" alt="Liara T'Soni in Mass Effect: Universe trailer" src="https://cdn.mos.cms.futurecdn.net/QLBVemEasSnJmdfJ6VMfKF-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/QLBVemEasSnJmdfJ6VMfKF-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: BioWare/Electronic Arts)</span></figcaption></figure><p>With BioWare's closure, we'll never get to see what it was planning for the fifth outing, though after Andromeda I'm not sure we would have been happy with it—even though the <a href="https://www.pcgamer.com/games/mass-effect/someone-leaked-a-mass-effect-5-trailer-and-now-i-feel-even-worse-because-it-looks-really-good/" target="_blank">leaked trailer looks rad</a>. But Mass Effect lives on. <a href="https://www.pcgamer.com/movies-tv/mass-effects-amazon-series-is-reportedly-continuing-after-bioware-shutdown-whichll-make-an-uncomfortable-gravestone-for-the-studios-work/" target="_blank">The Amazon series is reportedly still going forward</a>, and not one but two new games are on the horizon that are carrying the torch: Owlcat's <a href="https://www.pcgamer.com/uk/the-expanse-osiris-reborn/" target="_blank">The Expanse: Osiris Reborn</a> and Archetype's <a href="https://www.pcgamer.com/uk/exodus/" target="_blank">Exodus</a>. Both are coming next year. </p><p>In 2009, BioWare finally released Dragon Age: Origins, which had been in development for seven years, underwent some significant changes, and was framed as a spiritual successor to Baldur's Gate. And boy did it live up to those high expectations. A few months after launch, it had already hit 3.2 million sales. BioWare moved on from CRPGs, only to go and release this all-timer a couple of years later. </p><p>While the stuido would go on to chip away at series' the CRPG elements, culminating in 2024's not-so-great action-RPG The Veilguard, Origins at least showed the world that CRPGs were still viable, and that console gamers were perfectly capable of enjoying a more methodical, complex 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:2222px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="bTQXAx999o9s5ZpdAgBv6B" name="dragon-age-origins-morrigan.jpg" alt="Dragon Age: Origins - Morrigan holds up her hands in exasperation" src="https://cdn.mos.cms.futurecdn.net/bTQXAx999o9s5ZpdAgBv6B-1920-80.jpg" mos="" align="middle" fullscreen="1" width="2222" height="1250" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/bTQXAx999o9s5ZpdAgBv6B-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: BioWare)</span></figcaption></figure><p>Origins went on to influence a new generation of videogame developers, not just as an RPG, but as a successful blockbuster game that stopped pretending queer people didn't exist. Sure, Femshep could date Liara in Mass Effect, but BioWare obfuscated the queer romance by making the Asari genderless, even though Liara is absolutely female coded. It could also be argued that the Liara romance played into the fetishisation of lesbians, titillating straight men without actually depicting a queer romance. </p><div><blockquote><p>Sorry, bigots, you lost!</p></blockquote></div><p>BioWare continued to represent queer relationships in its other RPGs, sometimes with specific characters, and sometimes by making every character playersexual. And it got a lot of shit for this from the conservative nutjobs. Thankfully, those idiots were fighting a losing battle. </p><p>Just look at how many RPGs have followed suit. Not just in allowing the player to embark on a queer romance, but their depiction of queer characters in general. Even the fairly conservative <a href="https://www.pcgamer.com/uk/kingdom-come-deliverance-2/" target="_blank">Kingdom Come: Deliverance 2</a>, where the game director constantly complains about "wokeness", features a genuinely fantastic queer romance. Sorry, bigots, you lost!</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:1280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="L35AMDntFt4CuQc36M2mn" name="Dragon-Age-Romance" alt="Dorian romance" src="https://cdn.mos.cms.futurecdn.net/L35AMDntFt4CuQc36M2mn-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1280" height="720" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/L35AMDntFt4CuQc36M2mn-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: BioWare)</span></figcaption></figure><p>That it was able to do so much of this while trapped inside EA's dev-killing prison is even more impressive. Mass Effect and Dragon Age came out of the previous era, despite EA being the publisher at the time of their respective launches, but BioWare continued to take big swings despite the less than ideal situation the devs found themselves in. </p><p>Yes, I write for PCG and I am about to defend Dragon Age 2. What a shock! But DA2 is a great example of what BioWare was capable of, even when EA was going out of its way to set it up for failure. Despite an absurd deadline that led to extreme crunch and so many cut corners, BioWare was able to put out some of its greatest writing, while introducing beloved and enduring characters like Varric, Cassandra and Hawke. The game was compromised from the get-go, but there's still so much brilliance in there. </p><p>BioWare just kept beating the odds. It was the same with Dragon Age: Inquisition. EA wanted all of its games to use a single engine, Frostbite, leaving BioWare working with new tools that simply weren't designed for RPG development. It was apparently a bit of a nightmare for the team, which once again had to crunch to get the game out the door. But again, it was fantastic—finding a middle ground between Origins and DA2, while also going mostly open world. </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:1087px;"><p class="vanilla-image-block" style="padding-top:58.14%;"><img id="MB3P84zk7fGfWz3xXmAfMg" name="dragon age inquisition art.JPG" alt="Inquisition art" src="https://cdn.mos.cms.futurecdn.net/MB3P84zk7fGfWz3xXmAfMg-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1087" height="632" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/MB3P84zk7fGfWz3xXmAfMg-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: Bioware)</span></figcaption></figure><p>Inquisition was BioWare's last great game, but what an exceptional run! It sucks that its reward for all these achievements was death by a thousand cuts, and that it became a punching bag for the anti-woke mob. But I refuse to accept that this mars its legacy, or that its demise is anything other than incredibly sad. </p><p>And yes, I've been a pretty vocal BioWare detractor over the last few years. I could barely get through Andromeda, bounced off Anthem immediately, and I thought that The Veilguard was unmitigated rubbish, full of annoying characters, repetitive combat and a poorly constructed narrative. At the end of 2024, I said that I'd <a href="https://www.pcgamer.com/games/dragon-age/after-years-of-holding-out-hope-2024-was-the-year-i-finally-gave-up-on-bioware/">finally given up on BioWare</a>. And earlier this year, I wrote about how <a href="https://www.pcgamer.com/games/mass-effect/how-bioware-can-make-an-unlikely-comeback-and-why-it-never-will-the-first-step-is-cancelling-mass-effect/">BioWare could feasibly make a comeback</a>, but that it never would. </p><div><blockquote><p>What I wanted was to see that old boldness return.</p></blockquote></div><p>None of this meant that I wanted to see BioWare's demise. What I wanted was to see that old boldness return. A new game, some big swings, the philosophy of the BioWare of old, even if so many of the people who made those games happen had left or been made redundant. It's a shame we never got to see what that would look like.</p><p>I don't want to dismiss the incredible work so many other developers have done elevating the RPG genre—they own their achievements. But at the same time, it's impossible to imagine RPGs without BioWare. Its importance cannot be overstated. You did well, BioWare, and even this grumpy old man will miss you. </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="c55bf8f0-cf0a-11f1-981c-270b9664a75a" 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="c55bf8f0-cf0a-11f1-981c-270b9664a75a" 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[ Now it's over, WoW: Forever's beta has left me with just one fear—its endgame ]]></title>
                                                                                                <dc:content><![CDATA[ <div  class="fancy-box"><div class="fancy_box-title">Terminally Online</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="PgGhmt5pTtxusaQQX3dHPF" name="logo_terminally" caption="" alt="The Terminally Online logo." src="https://cdn.mos.cms.futurecdn.net/PgGhmt5pTtxusaQQX3dHPF-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">This is <a data-analytics-id="inline-link" href="https://www.pcgamer.com/tag/terminally-online/" target="_blank">Terminally Online</a>:<strong> </strong>PC Gamer's very own MMO column. Every other week, I'll be sharing my thoughts on the genre, interviewing fellow MMO-heads like me, taking a deep-dive into mechanics we've all taken for granted, and, occasionally, bringing in guest writers to talk about their MMO of choice.</p></div></div><p><a href="https://www.pcgamer.com/world-of-warcraft-forever/">World of Warcraft: Forever</a>'s beta has just ended, and I'm basically sold, for now. I've had such a good time, in fact, that I dipped at around level 26 on my warrior (and 16 on a Shaman) because I didn't want to spoil or burn myself out before the full thing releases in November and I am consumed in a quest-drunk fugue.</p><p>But there is one thing that's rattling around in the back of my mind: This version of WoW is designed to be played perpetually (so in MMO terms, for about 10-20 years, give or take) at the level cap. There won't be any expansions, and the game will continue to expand horizontally.</p><p>Which leaves a major  question hanging over its endgame. Now, collecting a few interviews together, we've seen a smidge of what that'll look like. In an interview with <a href="https://youtu.be/FI5BAeTKGCI" target="_blank">SkillUp</a>, associate production director Clay Stone contrasts overtly horizontal progression systems (such as the Legacy tree) and gear, which he notes "our intention very much is to try to limit the amount of power progression as we release each raid tier." </p><p>Speaking to <a href="https://nordic.ign.com/world-of-warcraft-forever/112801/world-of-warcraft-forever-needs-to-truly-be-forever-interview" target="_blank">IGN Nordic</a>, lead game designer Tim Jones says that "we're not going to make a Tier 2 raid without making the loot better … Tier 2 and Tier 3 raids will therefore have better gear, but we're going to be responsible about it. We still want gear from previous raids to remain useful, such as the Onslaught Girdle."</p><p>In other words, Forever'll still absolutely have a vertical progression, but your best-in-slot might include gear from all sorts of raids, which… oh, boy.</p><p>I'm not going to put a wooden plaque on my chest and say the end is nigh. If Forever's raid tiers only increase your overall item level by a couple of digits, then it really is not that much of a problem. It's essentially playing out that power creep in slow-motion, and if it takes a decade for there to be a numerical difference between, say, tier 1 and a hypothetical set of tier 10 gear that matters for more people than just hardcore min-maxers? It's all gravy, baby.</p><p>But as someone with a vested interest in these sorts of systems, I can't help but wonder if Blizzard is just making broad, sweeping assumptions about the way it <em>has </em>to do things at endgame. Forever is going to be purpose-built to keep folks in this rehashed version of classic Azeroth for a very long time. Is it not poison to the entire exercise, then, to purposefully introduce vertical progression at all?</p><h2 id="going-up-up-up">Going up, up, up</h2><p>I can see a few issues—or let's call them <em>challenges</em>—with this approach. Firstly, three tiers is manageable. But if Forever continues to add raid tiers, then those small incremental increases in gear power slowly stop becoming incremental 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:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="3yhvmXABMTiUYvTKkm3X27" name="WoW Forever Beta Dwarf Guard" alt="A screenshot of the World of Warcraft: Forever beta. A Dwarf with a long bear wields a spear on a snowy hill." src="https://cdn.mos.cms.futurecdn.net/3yhvmXABMTiUYvTKkm3X27-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 Entertainment)</span></figcaption></figure><p>Unless a character can set foot in a tier 3 raid comfortably without getting gear from the first two tiers, what you've done is essentially created an attunement questline. That questline being, 'do several tiers of raiding to get up to snuff'.</p><p>In a game that resets every expansion, or season, this is a non-issue. But Forever'll have the task of bridging that gap the wider it gets—either with catch-up gear, which kills the older raids dead, or by issuing stat squishes, which never feels good on the other end of things.</p><p>The other problem is that, even if you do solve those problems, you've only got so many players. The wider the raiding scene is spread apart over the course of these raid tiers, the harder it becomes to find a group or a guild to do the specific raid that <em>you </em>need. </p><p>This can be solved, as these interviews mention, by giving each class useful best-in-slot gear from lower tiers so that they have an incentive to go back and do them. But there's another problem there, too: Characters only have so many equipment slots, and what's considered a BiS getup is dependent on a ton of other difficult-to-tune factors.</p><p>My point being: Blizzard really cannot rely on <em>gearing </em>to keep Forever's raiding scene alive in the long run, and yet (at least to start off with) it'll be mimicking old patterns. Just smaller, more controlled, and slower-paced. It's a little like trying to avoid an iceberg by designing the world's slowest boat. Sure, you're avoiding it for longer, but if you don't put a steering wheel on the damn thing you're gonna crash.</p><div><blockquote><p>It's a little like trying to avoid an iceberg by designing the world's slowest boat.</p></blockquote></div><p>This is by far Forever's biggest risk. Playing the game casually is going to rock. Questing is going to rock. Levelling alts is going to rock. Forever has already convinced me of all of these things—but the delicate, finickity balance of a pseudo-horizontal endgame is far harder. </p><p>You have to wonder if a developer who has been designing linear progression systems for over two decades is simply finding it hard to break from that ingrained patterning. Jones' words: "We're not going to make a tier 2 raid without making the loot better." They're sticking in my craw, because… well, why <em>not</em>? Why are there tiered raids to begin with? </p><p>You could do as Guild Wars 2 does—new classes or skill trees to unlock that require endgame feats, character power for specific zones that'll stay relevant in perpetuity, an equivalent of "masteries". Basically, expanding the definition of what endgame <em>is, </em>and then having raids be a part of that ecosystem, rather than trying to slow-death power creep.</p><p>Blizzard's going to have to learn some very hard lessons to get there, though. I think this attitude towards tiers will work absolutely fine for a while, but there will come a point where the developer has to wonder if it wants to keep kicking the can down the road or really, genuinely reinvent what an endgame is in World of Warcraft. And that'll be either very exciting or very, very messy. Perhaps both.</p><div class="product"><a data-dimension112="89bfda76-cee4-11f1-93e6-d14d26810fa1" 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="89bfda76-cee4-11f1-93e6-d14d26810fa1" 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/world-of-warcraft/now-its-over-wow-forevers-beta-has-left-me-with-just-one-fear-its-endgame/</link>
                                                                            <description>
                            <![CDATA[ How do you zig when all you know is zag? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">kJbZvisw7HPze7fLU2D6XS</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/cnhx4mTdSyZ8kB2GqHMDPJ-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Sat, 24 Oct 2026 17:00:00 +0000</pubDate>                                                                                                                                <updated>Sat, 24 Oct 2026 18:15:53 +0000</updated>
                                                                                                                                            <category><![CDATA[World of Warcraft]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                    <category><![CDATA[MMO]]></category>
                                                                                                <author><![CDATA[ harvey.randall@futurenet.com (Harvey Randall) ]]></author>                    <dc:creator><![CDATA[ Harvey Randall ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Rws7mDGqrkaXrNKCH4jZ2D-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/cnhx4mTdSyZ8kB2GqHMDPJ-1920-80.png">
                                                            <media:credit><![CDATA[Blizzard]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A group of raiders tackling a dungeon in World of Warcraft: Forever.]]></media:description>                                                            <media:text><![CDATA[A group of raiders tackling a dungeon in World of Warcraft: Forever.]]></media:text>
                                <media:title type="plain"><![CDATA[A group of raiders tackling a dungeon in World of Warcraft: Forever.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/cnhx4mTdSyZ8kB2GqHMDPJ-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Terminally Online</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="PgGhmt5pTtxusaQQX3dHPF" name="logo_terminally" caption="" alt="The Terminally Online logo." src="https://cdn.mos.cms.futurecdn.net/PgGhmt5pTtxusaQQX3dHPF-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">This is <a data-analytics-id="inline-link" href="https://www.pcgamer.com/tag/terminally-online/" target="_blank">Terminally Online</a>:<strong> </strong>PC Gamer's very own MMO column. Every other week, I'll be sharing my thoughts on the genre, interviewing fellow MMO-heads like me, taking a deep-dive into mechanics we've all taken for granted, and, occasionally, bringing in guest writers to talk about their MMO of choice.</p></div></div><p><a href="https://www.pcgamer.com/world-of-warcraft-forever/">World of Warcraft: Forever</a>'s beta has just ended, and I'm basically sold, for now. I've had such a good time, in fact, that I dipped at around level 26 on my warrior (and 16 on a Shaman) because I didn't want to spoil or burn myself out before the full thing releases in November and I am consumed in a quest-drunk fugue.</p><p>But there is one thing that's rattling around in the back of my mind: This version of WoW is designed to be played perpetually (so in MMO terms, for about 10-20 years, give or take) at the level cap. There won't be any expansions, and the game will continue to expand horizontally.</p><p>Which leaves a major  question hanging over its endgame. Now, collecting a few interviews together, we've seen a smidge of what that'll look like. In an interview with <a href="https://youtu.be/FI5BAeTKGCI" target="_blank">SkillUp</a>, associate production director Clay Stone contrasts overtly horizontal progression systems (such as the Legacy tree) and gear, which he notes "our intention very much is to try to limit the amount of power progression as we release each raid tier." </p><p>Speaking to <a href="https://nordic.ign.com/world-of-warcraft-forever/112801/world-of-warcraft-forever-needs-to-truly-be-forever-interview" target="_blank">IGN Nordic</a>, lead game designer Tim Jones says that "we're not going to make a Tier 2 raid without making the loot better … Tier 2 and Tier 3 raids will therefore have better gear, but we're going to be responsible about it. We still want gear from previous raids to remain useful, such as the Onslaught Girdle."</p><p>In other words, Forever'll still absolutely have a vertical progression, but your best-in-slot might include gear from all sorts of raids, which… oh, boy.</p><p>I'm not going to put a wooden plaque on my chest and say the end is nigh. If Forever's raid tiers only increase your overall item level by a couple of digits, then it really is not that much of a problem. It's essentially playing out that power creep in slow-motion, and if it takes a decade for there to be a numerical difference between, say, tier 1 and a hypothetical set of tier 10 gear that matters for more people than just hardcore min-maxers? It's all gravy, baby.</p><p>But as someone with a vested interest in these sorts of systems, I can't help but wonder if Blizzard is just making broad, sweeping assumptions about the way it <em>has </em>to do things at endgame. Forever is going to be purpose-built to keep folks in this rehashed version of classic Azeroth for a very long time. Is it not poison to the entire exercise, then, to purposefully introduce vertical progression at all?</p><h2 id="going-up-up-up">Going up, up, up</h2><p>I can see a few issues—or let's call them <em>challenges</em>—with this approach. Firstly, three tiers is manageable. But if Forever continues to add raid tiers, then those small incremental increases in gear power slowly stop becoming incremental 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:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="3yhvmXABMTiUYvTKkm3X27" name="WoW Forever Beta Dwarf Guard" alt="A screenshot of the World of Warcraft: Forever beta. A Dwarf with a long bear wields a spear on a snowy hill." src="https://cdn.mos.cms.futurecdn.net/3yhvmXABMTiUYvTKkm3X27-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 Entertainment)</span></figcaption></figure><p>Unless a character can set foot in a tier 3 raid comfortably without getting gear from the first two tiers, what you've done is essentially created an attunement questline. That questline being, 'do several tiers of raiding to get up to snuff'.</p><p>In a game that resets every expansion, or season, this is a non-issue. But Forever'll have the task of bridging that gap the wider it gets—either with catch-up gear, which kills the older raids dead, or by issuing stat squishes, which never feels good on the other end of things.</p><p>The other problem is that, even if you do solve those problems, you've only got so many players. The wider the raiding scene is spread apart over the course of these raid tiers, the harder it becomes to find a group or a guild to do the specific raid that <em>you </em>need. </p><p>This can be solved, as these interviews mention, by giving each class useful best-in-slot gear from lower tiers so that they have an incentive to go back and do them. But there's another problem there, too: Characters only have so many equipment slots, and what's considered a BiS getup is dependent on a ton of other difficult-to-tune factors.</p><p>My point being: Blizzard really cannot rely on <em>gearing </em>to keep Forever's raiding scene alive in the long run, and yet (at least to start off with) it'll be mimicking old patterns. Just smaller, more controlled, and slower-paced. It's a little like trying to avoid an iceberg by designing the world's slowest boat. Sure, you're avoiding it for longer, but if you don't put a steering wheel on the damn thing you're gonna crash.</p><div><blockquote><p>It's a little like trying to avoid an iceberg by designing the world's slowest boat.</p></blockquote></div><p>This is by far Forever's biggest risk. Playing the game casually is going to rock. Questing is going to rock. Levelling alts is going to rock. Forever has already convinced me of all of these things—but the delicate, finickity balance of a pseudo-horizontal endgame is far harder. </p><p>You have to wonder if a developer who has been designing linear progression systems for over two decades is simply finding it hard to break from that ingrained patterning. Jones' words: "We're not going to make a tier 2 raid without making the loot better." They're sticking in my craw, because… well, why <em>not</em>? Why are there tiered raids to begin with? </p><p>You could do as Guild Wars 2 does—new classes or skill trees to unlock that require endgame feats, character power for specific zones that'll stay relevant in perpetuity, an equivalent of "masteries". Basically, expanding the definition of what endgame <em>is, </em>and then having raids be a part of that ecosystem, rather than trying to slow-death power creep.</p><p>Blizzard's going to have to learn some very hard lessons to get there, though. I think this attitude towards tiers will work absolutely fine for a while, but there will come a point where the developer has to wonder if it wants to keep kicking the can down the road or really, genuinely reinvent what an endgame is in World of Warcraft. And that'll be either very exciting or very, very messy. Perhaps both.</p><div class="product"><a data-dimension112="89bfda76-cee4-11f1-93e6-d14d26810fa1" 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="89bfda76-cee4-11f1-93e6-d14d26810fa1" 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[ New Blood CEO confirms it: the worst way to sell immersive sims like Gloomwood and Fallen Aces is to call them immersive sims ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Fans of Deus Ex, Dishonored and Gloomwood like to roll the words 'immersive sim' around their mouths as often as possible, savouring the fond associations with first-person drawer-rifling and guilt-ridden murder.</p><p>Yet there's something like consensus emerging among the makers of these games: it's really hard to sell an immersive sim while calling it by its name. "Is it a good marketing term? No," says New Blood Interactive CEO Dave Oshry. "It sucks. It's awful."</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="PN49fLBoCxDm8tpDqKuXLR" name="ss_767c1f746550a39ca4456d79303352487f95492a.1920x1080.jpg" alt="Gloomwood enemies congregating in urban area before crucified demonic enemy" src="https://cdn.mos.cms.futurecdn.net/PN49fLBoCxDm8tpDqKuXLR-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/PN49fLBoCxDm8tpDqKuXLR-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: New Blood)</span></figcaption></figure><p>New Blood was first known for its boomer shooters, namely <a href="https://www.pcgamer.com/dusk-review/" target="_blank">Dusk</a> and <a href="https://www.pcgamer.com/intense-retro-shooter-ultrakill-is-even-more-metal-than-doom/" target="_blank">Ultrakill</a>, but has sunk years into two early access imsims, the well-regarded <a href="https://www.pcgamer.com/gloomwood-is-too-good-to-play-unfinished/" target="_blank">Gloomwood</a> and <a href="https://www.pcgamer.com/games/fps/one-of-the-best-shooters-around-just-got-a-barely-recognizable-second-episode-and-its-only-usd12/" target="_blank">Fallen Aces</a>. Oshry likes to joke that he's "dumping all the money into immersive sims so we can go broke like the great studios that came before us, like Looking Glass."</p><p>Yet he'd never heard the term immersive sim until Gloomwood lead Dillon Rogers started work on his Thief-and-Resi-riffing open world. "He's like, 'That's what these are called'. I'm like, 'I have never heard that before in my life. What the fuck are you talking about?'"</p><p>Oshry wasn't new to the genre. He'd grown up adoring Deus Ex and Thief. "But Thief was a stealth game," he protests. "I called it a stealth game. Deus Ex I called an FPS-RPG because it was an FPS, but it was an RPG. You had points that you put in stuff. That's what an RPG is, like Diablo."</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="LWJqcFFvfrZySZj5CgRwGL" name="fallen aces.jpg" alt="Fallen Aces goon getting held up making surprised face" src="https://cdn.mos.cms.futurecdn.net/LWJqcFFvfrZySZj5CgRwGL-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/LWJqcFFvfrZySZj5CgRwGL-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: New Blood)</span></figcaption></figure><p>Of course, ploughing points into skills and traits is something that's proliferated across mainstream games of all kinds in the decades since. But it's true: back in the year 2000, it was largely the preserve of RPGs. Deus Ex, with its dialogue, narrative choices and deadly greasel combat seemed a natural enough addition to that genre.</p><p>"System Shock and Deus Ex, they were RPGs," Oshry says. "People called them RPGs. That's the funny thing about an immersive sim. You're immersed in this world. You're building your character. Yeah, that's called an RPG, brother. That's a roleplaying game."</p><p>Does this age-old squabble over definitions really matter, so long as the games are good? Well, perhaps it does. Because immersive sims are considered to be niche and unworkable by many major publishers. Whereas RPGs? "They make lots of money and sell lots of copies," Oshry says. "You could argue that Baldur's Gate 3 is an immersive sim, because of the way that Larian builds their games. It's not first-person but you can stack boxes and use spells to pull things towards you and solve problems in unique ways." </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="QeCfENeW8J9Kg2QKLdpagQ" name="F10pDh0aYAA9oA-.jfif" alt="Red-Clad Gloomwood merchant standing before table full of treasure" src="https://cdn.mos.cms.futurecdn.net/QeCfENeW8J9Kg2QKLdpagQ-1920-80.jfif" mos="" align="middle" fullscreen="1" width="2560" height="1440" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/QeCfENeW8J9Kg2QKLdpagQ-1920-80.jfif' 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: New Blood)</span></figcaption></figure><p>The argument is one I've heard made before—in fact, I've even heard senior Larian developers refer to their Forgotten Realms opus as an immersive sim. But you won't find that phrase anywhere in its trailers or on its Steam page. "If you market something as an RPG, I think you'll do better than marketing it as an immersive sim," Oshry says.</p><p>A couple of years ago, Arkane founder Raphael Colantonio told me the same thing. "Nobody wonders what an RPG is," he said. "We might debate whether the Bethesda RPGs are an immersive sim or not, but who cares? The market just understands what an RPG is. Same with Baldur's Gate. If you say, 'This is an immersive sim,' you're going to have a tiny percentage of people that are super excited because they know what it means. And then the other ones, they're going to be like, 'What is it?'"</p><p>During the making of Arkane's Prey, the developer wasted lots of time explaining to its intended audience what an imsim was. Time that might have been better spent selling potential players on the joyous possibilities of the gloo cannon. Bethesda was disappointed by Prey's sales, and set the studio to work on Redfall instead—a route that ultimately led to Arkane Austin's closure under Xbox.</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="UqfzUB8yrcHHZqajxp9jLf" name="fallen aces 2.jpg" alt="Fallen Aces" src="https://cdn.mos.cms.futurecdn.net/UqfzUB8yrcHHZqajxp9jLf-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/UqfzUB8yrcHHZqajxp9jLf-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: Trey Powell and Jason Bond)</span></figcaption></figure><p>You could argue that 'immersive sim' is an inside baseball term that broke containment. For the alumni of Looking Glass, it was crucial—a way of codifying a shared set of principles in a '90s era when the vocabulary of game design was far from locked down. Figures like Warren Spector began to spread its use through interviews and <a href="https://www.gamedeveloper.com/design/postmortem-ion-storm-s-i-deus-ex-i-">postmortems</a>. And for fans, adopting the term felt a little like joining a club.</p><p>"I think the term immersive simulation, if you know what that is, then you know what you're getting," Oshry says. "'Oh, cool! It's a game where I can solve problems by stacking boxes and crawling through vents and stabbing people in the back.' But it's not a good marketing term. And I don't think it helps. It's very niche, because if you say immersive sim, people are like, 'So it's a simulator?' Mainstream people have no idea what that means, and the people who know what it means, you didn't have to sell it to them anyway. Because they're looking for games like that."</p><p>When New Blood first started promoting Gloomwood, Oshry attempted to sidestep the imsim problem, but created a new one. "In my marketing genius, I was like, 'Let's call it Thief with guns,'" he says. "It's an easy sell. But it's a blessing and a curse bringing in all these fans of the Thief games who expect all these things from you. And Gloomwood's obviously not just Thief with guns, it takes from Call of Cthulhu and Resident Evil. Like most of our games, it's a mishmash of so many genres. 'Thief with guns' was a really easy elevator pitch. But it comes with a lot of expectations."</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="xK2k9HXz24SRMfC6MLR8U7" name="gloomwood trailer.jpg" alt="Gloomwood pc gaming show 2022" src="https://cdn.mos.cms.futurecdn.net/xK2k9HXz24SRMfC6MLR8U7-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/xK2k9HXz24SRMfC6MLR8U7-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: New Blood Interactive)</span></figcaption></figure><p>By contrast, 'boomer shooter' has proven to be a straightforwardly useful marketing term throughout New Blood's existence. "There's people who are like, 'What do you mean, boomer shooter? Boomers didn't play these games.'" Oshry says. "That's not what it means. Also, yes, they do. My dad was a boomer, he played these games. I guess John Romero and John Carmack are Gen X, but Sandy Peterson sure as fuck is a boomer. But you say boomer shooter, people know exactly what it is. Yeah, it's a game like Doom and Quake and stuff."</p><p>You'll notice that, when New Blood bundles Gloomwood and Fallen Aces together with the Stalker-like Blood West on Steam, they're collectively called 'the stealth trilogy'. "Because that's what draws people in," Oshry says. "If we called it the immersive sim trilogy, nobody would fucking buy the 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="cc698b32-cef4-11f1-912e-0b30273973a9" 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="cc698b32-cef4-11f1-912e-0b30273973a9" 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/sim/new-blood-ceo-confirms-it-the-worst-way-to-sell-immersive-sims-like-gloomwood-and-fallen-aces-is-to-call-them-immersive-sims/</link>
                                                                            <description>
                            <![CDATA[ "It's not a good marketing term. And I don't think it helps." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">dqU8AwPrrLxbeLn97W7b4T</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/jauXXTWFiZrQ8ZBvYhvWQQ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 24 Oct 2026 16:00:00 +0000</pubDate>                                                                                                                                <updated>Sat, 24 Oct 2026 18:15:53 +0000</updated>
                                                                                                                                            <category><![CDATA[Sim]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jeremy Peel ]]></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/jauXXTWFiZrQ8ZBvYhvWQQ-1920-80.jpg">
                                                            <media:credit><![CDATA[New Blood Interactive]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[monochrome blue and red comic book man pointing gun at screen]]></media:description>                                                            <media:text><![CDATA[monochrome blue and red comic book man pointing gun at screen]]></media:text>
                                <media:title type="plain"><![CDATA[monochrome blue and red comic book man pointing gun at screen]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/jauXXTWFiZrQ8ZBvYhvWQQ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Fans of Deus Ex, Dishonored and Gloomwood like to roll the words 'immersive sim' around their mouths as often as possible, savouring the fond associations with first-person drawer-rifling and guilt-ridden murder.</p><p>Yet there's something like consensus emerging among the makers of these games: it's really hard to sell an immersive sim while calling it by its name. "Is it a good marketing term? No," says New Blood Interactive CEO Dave Oshry. "It sucks. It's awful."</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="PN49fLBoCxDm8tpDqKuXLR" name="ss_767c1f746550a39ca4456d79303352487f95492a.1920x1080.jpg" alt="Gloomwood enemies congregating in urban area before crucified demonic enemy" src="https://cdn.mos.cms.futurecdn.net/PN49fLBoCxDm8tpDqKuXLR-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/PN49fLBoCxDm8tpDqKuXLR-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: New Blood)</span></figcaption></figure><p>New Blood was first known for its boomer shooters, namely <a href="https://www.pcgamer.com/dusk-review/" target="_blank">Dusk</a> and <a href="https://www.pcgamer.com/intense-retro-shooter-ultrakill-is-even-more-metal-than-doom/" target="_blank">Ultrakill</a>, but has sunk years into two early access imsims, the well-regarded <a href="https://www.pcgamer.com/gloomwood-is-too-good-to-play-unfinished/" target="_blank">Gloomwood</a> and <a href="https://www.pcgamer.com/games/fps/one-of-the-best-shooters-around-just-got-a-barely-recognizable-second-episode-and-its-only-usd12/" target="_blank">Fallen Aces</a>. Oshry likes to joke that he's "dumping all the money into immersive sims so we can go broke like the great studios that came before us, like Looking Glass."</p><p>Yet he'd never heard the term immersive sim until Gloomwood lead Dillon Rogers started work on his Thief-and-Resi-riffing open world. "He's like, 'That's what these are called'. I'm like, 'I have never heard that before in my life. What the fuck are you talking about?'"</p><p>Oshry wasn't new to the genre. He'd grown up adoring Deus Ex and Thief. "But Thief was a stealth game," he protests. "I called it a stealth game. Deus Ex I called an FPS-RPG because it was an FPS, but it was an RPG. You had points that you put in stuff. That's what an RPG is, like Diablo."</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="LWJqcFFvfrZySZj5CgRwGL" name="fallen aces.jpg" alt="Fallen Aces goon getting held up making surprised face" src="https://cdn.mos.cms.futurecdn.net/LWJqcFFvfrZySZj5CgRwGL-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/LWJqcFFvfrZySZj5CgRwGL-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: New Blood)</span></figcaption></figure><p>Of course, ploughing points into skills and traits is something that's proliferated across mainstream games of all kinds in the decades since. But it's true: back in the year 2000, it was largely the preserve of RPGs. Deus Ex, with its dialogue, narrative choices and deadly greasel combat seemed a natural enough addition to that genre.</p><p>"System Shock and Deus Ex, they were RPGs," Oshry says. "People called them RPGs. That's the funny thing about an immersive sim. You're immersed in this world. You're building your character. Yeah, that's called an RPG, brother. That's a roleplaying game."</p><p>Does this age-old squabble over definitions really matter, so long as the games are good? Well, perhaps it does. Because immersive sims are considered to be niche and unworkable by many major publishers. Whereas RPGs? "They make lots of money and sell lots of copies," Oshry says. "You could argue that Baldur's Gate 3 is an immersive sim, because of the way that Larian builds their games. It's not first-person but you can stack boxes and use spells to pull things towards you and solve problems in unique ways." </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="QeCfENeW8J9Kg2QKLdpagQ" name="F10pDh0aYAA9oA-.jfif" alt="Red-Clad Gloomwood merchant standing before table full of treasure" src="https://cdn.mos.cms.futurecdn.net/QeCfENeW8J9Kg2QKLdpagQ-1920-80.jfif" mos="" align="middle" fullscreen="1" width="2560" height="1440" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/QeCfENeW8J9Kg2QKLdpagQ-1920-80.jfif' 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: New Blood)</span></figcaption></figure><p>The argument is one I've heard made before—in fact, I've even heard senior Larian developers refer to their Forgotten Realms opus as an immersive sim. But you won't find that phrase anywhere in its trailers or on its Steam page. "If you market something as an RPG, I think you'll do better than marketing it as an immersive sim," Oshry says.</p><p>A couple of years ago, Arkane founder Raphael Colantonio told me the same thing. "Nobody wonders what an RPG is," he said. "We might debate whether the Bethesda RPGs are an immersive sim or not, but who cares? The market just understands what an RPG is. Same with Baldur's Gate. If you say, 'This is an immersive sim,' you're going to have a tiny percentage of people that are super excited because they know what it means. And then the other ones, they're going to be like, 'What is it?'"</p><p>During the making of Arkane's Prey, the developer wasted lots of time explaining to its intended audience what an imsim was. Time that might have been better spent selling potential players on the joyous possibilities of the gloo cannon. Bethesda was disappointed by Prey's sales, and set the studio to work on Redfall instead—a route that ultimately led to Arkane Austin's closure under Xbox.</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="UqfzUB8yrcHHZqajxp9jLf" name="fallen aces 2.jpg" alt="Fallen Aces" src="https://cdn.mos.cms.futurecdn.net/UqfzUB8yrcHHZqajxp9jLf-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/UqfzUB8yrcHHZqajxp9jLf-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: Trey Powell and Jason Bond)</span></figcaption></figure><p>You could argue that 'immersive sim' is an inside baseball term that broke containment. For the alumni of Looking Glass, it was crucial—a way of codifying a shared set of principles in a '90s era when the vocabulary of game design was far from locked down. Figures like Warren Spector began to spread its use through interviews and <a href="https://www.gamedeveloper.com/design/postmortem-ion-storm-s-i-deus-ex-i-">postmortems</a>. And for fans, adopting the term felt a little like joining a club.</p><p>"I think the term immersive simulation, if you know what that is, then you know what you're getting," Oshry says. "'Oh, cool! It's a game where I can solve problems by stacking boxes and crawling through vents and stabbing people in the back.' But it's not a good marketing term. And I don't think it helps. It's very niche, because if you say immersive sim, people are like, 'So it's a simulator?' Mainstream people have no idea what that means, and the people who know what it means, you didn't have to sell it to them anyway. Because they're looking for games like that."</p><p>When New Blood first started promoting Gloomwood, Oshry attempted to sidestep the imsim problem, but created a new one. "In my marketing genius, I was like, 'Let's call it Thief with guns,'" he says. "It's an easy sell. But it's a blessing and a curse bringing in all these fans of the Thief games who expect all these things from you. And Gloomwood's obviously not just Thief with guns, it takes from Call of Cthulhu and Resident Evil. Like most of our games, it's a mishmash of so many genres. 'Thief with guns' was a really easy elevator pitch. But it comes with a lot of expectations."</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="xK2k9HXz24SRMfC6MLR8U7" name="gloomwood trailer.jpg" alt="Gloomwood pc gaming show 2022" src="https://cdn.mos.cms.futurecdn.net/xK2k9HXz24SRMfC6MLR8U7-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/xK2k9HXz24SRMfC6MLR8U7-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: New Blood Interactive)</span></figcaption></figure><p>By contrast, 'boomer shooter' has proven to be a straightforwardly useful marketing term throughout New Blood's existence. "There's people who are like, 'What do you mean, boomer shooter? Boomers didn't play these games.'" Oshry says. "That's not what it means. Also, yes, they do. My dad was a boomer, he played these games. I guess John Romero and John Carmack are Gen X, but Sandy Peterson sure as fuck is a boomer. But you say boomer shooter, people know exactly what it is. Yeah, it's a game like Doom and Quake and stuff."</p><p>You'll notice that, when New Blood bundles Gloomwood and Fallen Aces together with the Stalker-like Blood West on Steam, they're collectively called 'the stealth trilogy'. "Because that's what draws people in," Oshry says. "If we called it the immersive sim trilogy, nobody would fucking buy the 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="cc698b32-cef4-11f1-912e-0b30273973a9" 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="cc698b32-cef4-11f1-912e-0b30273973a9" 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 mouse P.I. for hire from Mouse: P.I. For Hire joins the meat boy from Super Meat Boy 3D in gaming's latest indie crossover ]]></title>
                                                                                                <dc:content><![CDATA[ <p>It seems like there's a new slightly-humorous-for-its-incongruity collab between game devs every other week at this point, and the latest in this sacred lineage is a team-up between Super Meat Boy 3D and Mouse: P.I. For Hire. </p><p>The latter game's titular mouse detective has been squished into a cube-like shape and sent to navigate a hellish labyrinth full of sawblades for the rest of his miserable existence. Oh, and the screen goes all black-and-white when you play as him, just like the FPS he comes from. </p><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/Z5tAKoc1JRo" allowfullscreen></iframe></div></div><p>This might all seem downstream of cynical money devourers like Fortnite, but at least these games share something in both being indie(ish) cartoony pastiches with a gore-slick twist. Besides, Meat Boy is an OG when it comes to invasions of strangers' videogames. </p><p>You could play as him in the Bit.Trip games, and in turn CommanderVideo cameoed in Super Meat Boy. If you're too Gen A to understand a single word I just said about the halcyon days of 2010s indie gaming, that's okay. I'll just go lay down and die.</p><p>But if you want to jump up and die, spectacularly and repeatedly, that's what Super Meat Boy 3D is for. PC Gamer Australian Editor Shaun Prescott wasn't exactly head over heels for it in <a href="https://www.pcgamer.com/games/action/super-meat-boy-3d-has-no-vibe/">his impressions</a>—he said it had "no vibe," lacking the skeezy-yet-tasteful tastelessness of Edmund McMillen's touch—but still felt pretty good as far its running and jumping and exploding were concerned. Seems like that's enough for some, as the game currently sits at a Very Positive rating <a href="https://store.steampowered.com/app/3288210/Super_Meat_Boy_3D/" target="_blank">on Steam</a>.</p><p>Meanwhile, contributor Phil Iwaniuk said Mouse: P.I. For Hire was a "bona fide classic" in his 86% <a href="https://www.pcgamer.com/games/fps/mouse-pi-for-hire-review/">review</a> for Mouse, adding that there's more to it than "just an eye-grabbing art style." Normally these crossovers go both ways to some extent, but I'm not sure how Super Meat Boy would fit into a noir detective story. Cause of death: giant sawblade? Seems pretty open-and-shut.</p><div class="product"><a data-dimension112="9c0e102a-cfc1-11f1-a5f7-ff535c00560d" 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="9c0e102a-cfc1-11f1-a5f7-ff535c00560d" 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/action/the-mouse-p-i-for-hire-from-mouse-p-i-for-hire-joins-the-meat-boy-from-super-meat-boy-3d-in-gamings-latest-indie-crossover/</link>
                                                                            <description>
                            <![CDATA[ Of mice and meat. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LsxYMAhNsaubhqD4gCmjmV</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/iWfNSQCED57W2crFvwTk93-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Sat, 24 Oct 2026 15:46:15 +0000</pubDate>                                                                                                                                <updated>Sat, 24 Oct 2026 16:12:05 +0000</updated>
                                                                                                                                            <category><![CDATA[Action]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                                    <dc:creator><![CDATA[ Justin Wagner ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/3yTcG3EnWfJ6YqZzDouj5c-320-70.jpg ]]></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/iWfNSQCED57W2crFvwTk93-1920-80.png">
                                                            <media:credit><![CDATA[Team Meat, Fumi Games]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The titular detective from Mouse: P.I. with stubby, Meat Boy-esque proportions.]]></media:description>                                                            <media:text><![CDATA[The titular detective from Mouse: P.I. with stubby, Meat Boy-esque proportions.]]></media:text>
                                <media:title type="plain"><![CDATA[The titular detective from Mouse: P.I. with stubby, Meat Boy-esque proportions.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/iWfNSQCED57W2crFvwTk93-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It seems like there's a new slightly-humorous-for-its-incongruity collab between game devs every other week at this point, and the latest in this sacred lineage is a team-up between Super Meat Boy 3D and Mouse: P.I. For Hire. </p><p>The latter game's titular mouse detective has been squished into a cube-like shape and sent to navigate a hellish labyrinth full of sawblades for the rest of his miserable existence. Oh, and the screen goes all black-and-white when you play as him, just like the FPS he comes from. </p><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/Z5tAKoc1JRo" allowfullscreen></iframe></div></div><p>This might all seem downstream of cynical money devourers like Fortnite, but at least these games share something in both being indie(ish) cartoony pastiches with a gore-slick twist. Besides, Meat Boy is an OG when it comes to invasions of strangers' videogames. </p><p>You could play as him in the Bit.Trip games, and in turn CommanderVideo cameoed in Super Meat Boy. If you're too Gen A to understand a single word I just said about the halcyon days of 2010s indie gaming, that's okay. I'll just go lay down and die.</p><p>But if you want to jump up and die, spectacularly and repeatedly, that's what Super Meat Boy 3D is for. PC Gamer Australian Editor Shaun Prescott wasn't exactly head over heels for it in <a href="https://www.pcgamer.com/games/action/super-meat-boy-3d-has-no-vibe/">his impressions</a>—he said it had "no vibe," lacking the skeezy-yet-tasteful tastelessness of Edmund McMillen's touch—but still felt pretty good as far its running and jumping and exploding were concerned. Seems like that's enough for some, as the game currently sits at a Very Positive rating <a href="https://store.steampowered.com/app/3288210/Super_Meat_Boy_3D/" target="_blank">on Steam</a>.</p><p>Meanwhile, contributor Phil Iwaniuk said Mouse: P.I. For Hire was a "bona fide classic" in his 86% <a href="https://www.pcgamer.com/games/fps/mouse-pi-for-hire-review/">review</a> for Mouse, adding that there's more to it than "just an eye-grabbing art style." Normally these crossovers go both ways to some extent, but I'm not sure how Super Meat Boy would fit into a noir detective story. Cause of death: giant sawblade? Seems pretty open-and-shut.</p><div class="product"><a data-dimension112="9c0e102a-cfc1-11f1-a5f7-ff535c00560d" 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="9c0e102a-cfc1-11f1-a5f7-ff535c00560d" 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[ Japan Actors Union pushes for heavy restrictions on AI copying dead actors ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The Japan Actors Union, an org consisting of around 2,600 actors and voice actors, recently <a href="https://www.nippairen.com/about/jau_guideline.html" target="_blank">announced a series of measures</a> to protect the rights of performers in the industry with regard to generative AI (reported in English via <a href="https://automaton-media.com/en/news/japan-actors-union-reveals-new-guidelines-to-combat-unauthorized-ai-voice-cloning-including-strict-ban-on-copying-voices-of-deceased-seiyuu/" target="_blank">Automaton Media</a>). </p><p>It's been a hot topic both <a href="https://www.pcgamer.com/gaming-industry/the-voice-of-shinji-in-evangelion-says-ai-voice-cloning-is-heartbreaking-calls-for-japanese-government-to-intervene/">in Japan</a> and here in the west, with Leon Kennedy actor Nick Apostolides arguing AI voice acting was something of an oxymoron: "AI can speak lines, but there's nothing human behind it," <a href="https://www.pcgamer.com/games/resident-evil/leon-kennedys-voice-actor-doesnt-believe-ai-can-replace-human-performances-and-paying-for-an-actors-voice-session-is-not-that-big-of-a-deal-for-games-as-big-as-arc-raiders/">he said</a>.</p><p>Rather than a full-on ban or tight regulation, the union's proposed guidelines push for consent at "every stage." Companies would have to disclose when an actor's voice will be used for training, and they would also be required to negotiate compensation with actors. In other words, agreeing to have your voice generated for a short-form advertisement or whatever would be like licensing your likeness to go on a cereal box. </p><p>These consent guidelines would also apply to AI-translated performances, and in a more restrictive way to the mimicry of deceased actors, such as <a href="https://www.pcgamer.com/games/rpg/tupac-shakur-will-appear-in-the-next-yakuza-game-snoop-dogg-reveals/">Tupac's controversial "appearance"</a> in the upcoming Stranger Than Heaven. </p><p>The guidelines would ban using AI to copy a dead actor's voice unless consent had been obtained prior to their death. They would also require consent from the actor's living family, estate, or other administrative org, as well as royalty payments to those parties. </p><p>"It protects the dignity, honor, and legacy of deceased performers from commercial exploitation," said the union (auto-translated from Japanese). "We respect the wishes of the person during their lifetime to the greatest extent, and when generating AI, strict permission from the family (or administrator) who inherits the rights is mandatory to prevent desecration of the deceased."</p><p>Given the AI-related catastrophes we've seen in this field of the voicework world, like a facsimile of James Earl Jones slinging <a href="https://www.pcgamer.com/games/battle-royale/fortnite-added-an-ai-powered-darth-vader-and-surprise-players-immediately-tricked-him-into-saying-slurs/">AI-generated slurs in Fortnite</a>, these guidelines seem fairly gentle and reasonable. Time will tell if these pushes for actors' rights will take hold on a larger scale within the Japanese entertainment industry and otherwise.</p><div class="product"><a data-dimension112="3061238e-cfbd-11f1-9739-b17a93c06630" 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="3061238e-cfbd-11f1-9739-b17a93c06630" 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/software/ai/japan-actors-union-pushes-for-heavy-restrictions-on-ai-copying-dead-actors/</link>
                                                                            <description>
                            <![CDATA[ It's part of a broader set of guidelines the union hopes to set an industry-wide precedent for. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">d7ebDorVs2EP3XuDRMnicA</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/NYFR7QhivdoNWL5CenjD8c-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 24 Oct 2026 15:33:23 +0000</pubDate>                                                                                                                                <updated>Sat, 24 Oct 2026 16:12:15 +0000</updated>
                                                                                                                                            <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Justin Wagner ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/3yTcG3EnWfJ6YqZzDouj5c-320-70.jpg ]]></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/NYFR7QhivdoNWL5CenjD8c-1920-80.jpg">
                                                            <media:credit><![CDATA[Sega]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[stranger than heaven]]></media:description>                                                            <media:text><![CDATA[stranger than heaven]]></media:text>
                                <media:title type="plain"><![CDATA[stranger than heaven]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/NYFR7QhivdoNWL5CenjD8c-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The Japan Actors Union, an org consisting of around 2,600 actors and voice actors, recently <a href="https://www.nippairen.com/about/jau_guideline.html" target="_blank">announced a series of measures</a> to protect the rights of performers in the industry with regard to generative AI (reported in English via <a href="https://automaton-media.com/en/news/japan-actors-union-reveals-new-guidelines-to-combat-unauthorized-ai-voice-cloning-including-strict-ban-on-copying-voices-of-deceased-seiyuu/" target="_blank">Automaton Media</a>). </p><p>It's been a hot topic both <a href="https://www.pcgamer.com/gaming-industry/the-voice-of-shinji-in-evangelion-says-ai-voice-cloning-is-heartbreaking-calls-for-japanese-government-to-intervene/">in Japan</a> and here in the west, with Leon Kennedy actor Nick Apostolides arguing AI voice acting was something of an oxymoron: "AI can speak lines, but there's nothing human behind it," <a href="https://www.pcgamer.com/games/resident-evil/leon-kennedys-voice-actor-doesnt-believe-ai-can-replace-human-performances-and-paying-for-an-actors-voice-session-is-not-that-big-of-a-deal-for-games-as-big-as-arc-raiders/">he said</a>.</p><p>Rather than a full-on ban or tight regulation, the union's proposed guidelines push for consent at "every stage." Companies would have to disclose when an actor's voice will be used for training, and they would also be required to negotiate compensation with actors. In other words, agreeing to have your voice generated for a short-form advertisement or whatever would be like licensing your likeness to go on a cereal box. </p><p>These consent guidelines would also apply to AI-translated performances, and in a more restrictive way to the mimicry of deceased actors, such as <a href="https://www.pcgamer.com/games/rpg/tupac-shakur-will-appear-in-the-next-yakuza-game-snoop-dogg-reveals/">Tupac's controversial "appearance"</a> in the upcoming Stranger Than Heaven. </p><p>The guidelines would ban using AI to copy a dead actor's voice unless consent had been obtained prior to their death. They would also require consent from the actor's living family, estate, or other administrative org, as well as royalty payments to those parties. </p><p>"It protects the dignity, honor, and legacy of deceased performers from commercial exploitation," said the union (auto-translated from Japanese). "We respect the wishes of the person during their lifetime to the greatest extent, and when generating AI, strict permission from the family (or administrator) who inherits the rights is mandatory to prevent desecration of the deceased."</p><p>Given the AI-related catastrophes we've seen in this field of the voicework world, like a facsimile of James Earl Jones slinging <a href="https://www.pcgamer.com/games/battle-royale/fortnite-added-an-ai-powered-darth-vader-and-surprise-players-immediately-tricked-him-into-saying-slurs/">AI-generated slurs in Fortnite</a>, these guidelines seem fairly gentle and reasonable. Time will tell if these pushes for actors' rights will take hold on a larger scale within the Japanese entertainment industry and otherwise.</p><div class="product"><a data-dimension112="3061238e-cfbd-11f1-9739-b17a93c06630" 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="3061238e-cfbd-11f1-9739-b17a93c06630" 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[ Are we in the cozy gaming gold rush era? 'Cozy' has grown over 250% on Steam and 200% in my inbox since 2024 ]]></title>
                                                                                                <dc:content><![CDATA[ <h2 id="cozy-games-on-google">Cozy games on Google</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/wjvEs3YP8JhfPmVVFLfSHS-1920-80.jpg" alt="Google Trends graph for the past 5 years of "cozy games"" /><figcaption>The past five years of search demand on Google for cozy games, relaxing games, and casual games.<small role="credit">Google Trends</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/eXjrT353LDvUBwvo6HrbHS-1920-80.jpg" alt="Google Trends graph for the past 5 years of "cozy games"" /><figcaption>Interestingly, the resurgence of "casual games" is even more pronounced at a worldwide view.<small role="credit">Google Trends</small></figcaption></figure></figure><p>First let's check back in on the same Google Search data I pulled in 2023 to compare how much we, the audience, are actually seeking cozy games. We're looking at <a href="https://trends.google.com/explore?q=cozy%2520games%2Crelaxing%2520games%2Ccasual%2520games&date=today%205-y&geo=US">the past five years or search interest</a> for the terms: cozy games, relaxing games, and casual games. </p><p>The main term "cozy games" is <em>twice</em> as popular as it was in 2023 when I identified the surprising spike the phrase had already experienced between 2020 and 2023. Google doesn't share raw search volume so this is all relative, not absolute, but it's still clear evidence that the interest in cozy games has continued to explode.</p><p>What is surprising to me is the comeback for the phrase "casual games." It's one we used a lot in the late twenty-teens but was eclipsed by "cozy" around 2022. Anecdotally, I think "casual" suffered from also being pejorative and may have fallen away in favor of the more positive tone "cozy." They aren't exactly interchangeable terms, but it's interesting to see casual make such a sharp comeback this year, which may mean some cozy gamers are reclaiming it. </p><h2 id="cozy-games-on-steam">Cozy games on Steam</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:1337px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="TB3x7e38USmbNChYVU3AU" name="cozy tag on steam 2026" alt="Steam's "cozy" tag page featuring the game Tiny Glade" src="https://cdn.mos.cms.futurecdn.net/TB3x7e38USmbNChYVU3AU-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1337" height="752" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/TB3x7e38USmbNChYVU3AU-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: Steam, Pounce Light)</span></figcaption></figure><p>Okay, then what about the supply of cozy games? Yeah, that's gone up too.</p><div ><table><thead><tr><th class="firstcol " ><p><strong>Year</strong></p></th><th  ><p><strong>"Cozy" tagged games on Steam</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><a href="https://steamdb.info/tag/97376/?displayOnly=Game&max_release=2024-12-31&min_release=2024-01-01">2024</a></p></td><td  ><p>389</p></td></tr><tr><td class="firstcol " ><p><a href="https://steamdb.info/tag/97376/?displayOnly=Game&max_release=2025-12-31&min_release=2025-01-01">2025</a></p></td><td  ><p>650</p></td></tr><tr><td class="firstcol " ><p><a href="https://steamdb.info/tag/97376/?displayOnly=Game&max_release=2026-10-20&min_release=2026-01-01">2026 </a>(so far)</p></td><td  ><p>1,341</p></td></tr></tbody></table></div><p>This isn't a perfect measure either. It doesn't capture every game that cozy gamers might like, only every game that has been user-tagged that way. Naturally, the number of games identified as "cozy" goes up as the term itself becomes a popular descriptor.</p><p>When you look at the number of games tagged as "cozy" that launched last year between the same dates as this year (January to October), it's 468 last year to this year's 1,341. That's a 186% increase. Subgenres like tidying up games, farm sim idlers, and desktop companions are all booming with dozens of new choices each month, spawning new and more niche microgenres in their wake.</p><p>The <a href="https://www.pcgamer.com/gaming-industry/steam-week-in-review-steam-next-fest-has-over-8-000-demos-as-worthless-vibe-coded-slop-levels-up/">sharp rise in AI slop games</a> contributes to that, certainly, but I'm not sure it's necessarily affecting cozy games more than other genres.</p><h2 id="cozy-games-in-my-inbox">Cozy games in my inbox</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cAxkd6D8y5iwfd6VRevWaB" name="Fields Of Aaru Demo Screenshot 2026.10.19 - 20.36.52.18" alt="Fields of Aaru - A character runs across a wood bridge in an ancient Egyptian village river" src="https://cdn.mos.cms.futurecdn.net/cAxkd6D8y5iwfd6VRevWaB-1920-80.png" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Fields of Aaru </span><span class="credit" itemprop="copyrightHolder">(Image credit: Zymartu Games)</span></figcaption></figure><p>A source that you can't pull from public data is my poor, overstuffed inbox (which I <a href="https://www.pcgamer.com/software/you-have-how-many-unread-emails-pc-gamer-shares-their-inbox-shame/" target="_blank">ritually clean</a>). This is really the basis of my "gold rush" thesis: the biggest change in cozy gaming in the past three years is that developers and publishers are using the word much more than before. They sure are deploying it in subject lines from PR teams, lemme tell ya.</p><p>Back in my 2023 article I quoted a measly 15 emails from the year including the word "cozy." Let's look at the three years since.</p><div ><table><thead><tr><th class="firstcol " ><p><strong>Year</strong></p></th><th  ><p><strong>"Cozy" emails in my inbox</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p>2024</p></td><td  ><p>365</p></td></tr><tr><td class="firstcol " ><p>2025</p></td><td  ><p>782</p></td></tr><tr><td class="firstcol " ><p>2026 (so far)</p></td><td  ><p>887</p></td></tr></tbody></table></div><p>What I'd suspected back in 2023 was that "cozy" gaming was about to get really weird as marketing teams started slapping the label onto things that may not really merit it. I am noticing that in my inbox a bit. I sure can't imagine a <a href="https://store.steampowered.com/app/5319690/Wasteland_Gunsmith_Simulator_Demo/">post-apocalyptic gunsmithing job sim</a> self-identifying as "cozy" four years ago. Is it abusing the term? I dunno, crafty repair sims are yet another one of those <a href="https://store.steampowered.com/app/3812600/ReStory_Chill_Electronics_Repairs/">exploding microgenres</a> of cozy game, so even if it's zombies and guns it feels pretty fair.</p><p>I still recall being aghast that cozy gamers were calling roguelike action game <a href="https://store.steampowered.com/app/1313140/Cult_of_the_Lamb/">Cult of the Lamb</a> a cozy game back in 2022 because of its small community sim feature. So I'm not sure PR emails can abuse the word more than cozy gamers themselves, who have already long been stretching the limits of a really flexible term.</p><div class="product"><a data-dimension112="5afd5790-cf16-11f1-86b2-9398833099a7" data-action="Deal Block" data-label="Best laptop games" data-dimension48="Best laptop games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:146px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="o2twU6ehEfeJDWWUZMiEsB" name="stardew square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/o2twU6ehEfeJDWWUZMiEsB-1920-80.jpg" mos="" align="middle" fullscreen="" width="146" height="146" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.pcgamer.com/best-laptop-games/" target="_blank" data-dimension112="5afd5790-cf16-11f1-86b2-9398833099a7" data-action="Deal Block" data-label="Best laptop games" data-dimension48="Best laptop games" data-dimension25=""><strong>Best laptop games</strong></a>: Low-spec life<br><a href="https://www.pcgamer.com/steam-deck-best-games/" target="_blank"><strong>Best Steam Deck games</strong></a>: Handheld must-haves<br><a href="https://www.pcgamer.com/best-browser-games/" target="_blank"><strong>Best browser games</strong></a>: No install needed<br><a href="https://www.pcgamer.com/best-indie-games/" target="_blank"><strong>Best indie games</strong></a>: Independent excellence<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><h2 id="cozy-gamers-in-the-wild">Cozy gamers in the wild</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MdWF9NmXMCPr5yawXUrPr4" name="20260702222945_1" alt="Fields of Mistria - A player is cheered by the town for winning the fall festival competition" src="https://cdn.mos.cms.futurecdn.net/MdWF9NmXMCPr5yawXUrPr4-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="caption-text">Fields of Mistria </span><span class="credit" itemprop="copyrightHolder">(Image credit: NPC Studio)</span></figcaption></figure><p>Back in 2023 I felt protective of cozy gamers. Approachable games like Animal Crossing and Stardew Valley had attracted newer gamers who didn't always have the same gaming lingo fluency, and I worried they could be targets for low quality copycats entering the space. I wanted them to love gaming and not get turned away by bad experiences.</p><p>I'm not worried anymore. Over the past three years cozy gamers have adapted fast. They've become an extremely savvy audience capable of taxonomically describing the exact real-time restocking shop sim that they're looking for. They trade game recommendations so quickly that it feels like even average cozy game fans keep up with new releases and announcements as a part time job. Cozy gamers have become, dare I say, hardcore.</p><p>I don't think cozy gamers are going to get less engaged any time soon, so the cozy gaming movement is aging out of "trend" status into an enduring corner of the broader gaming community. </p><p>What's next for cozy games then? Maybe a plateau or a wobble in the next three years as an inherently positive genre reckons with the cynicism from increasingly aggressive use of 'cozy' as a marketing tool and the growing number of disappointing AI copycats. </p><p>I still don't think it's peaked, though. Let's check back in in 2028.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/life-sim/are-we-in-the-cozy-gaming-gold-rush-era-cozy-has-grown-over-250-percent-on-steam-and-200-percent-in-my-inbox-since-2024/</link>
                                                                            <description>
                            <![CDATA[ Uh oh, everything is cozy now. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">pGKxXBrasHmzxAdhB2Kto6</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/LoFDNm5hwiEsSMamKFC2yU-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 24 Oct 2026 15:10:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Life Sim]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                <author><![CDATA[ lauren@pcgamer.com (Lauren Morton) ]]></author>                    <dc:creator><![CDATA[ Lauren Morton ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/CoudgUkKX2WLFCPMbGjoX5-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/LoFDNm5hwiEsSMamKFC2yU-1920-80.jpg">
                                                            <media:credit><![CDATA[Steam]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Cozy games in my library]]></media:description>                                                            <media:text><![CDATA[Cozy games in my library]]></media:text>
                                <media:title type="plain"><![CDATA[Cozy games in my library]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/LoFDNm5hwiEsSMamKFC2yU-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h2 id="cozy-games-on-google">Cozy games on Google</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/wjvEs3YP8JhfPmVVFLfSHS-1920-80.jpg" alt="Google Trends graph for the past 5 years of "cozy games"" /><figcaption>The past five years of search demand on Google for cozy games, relaxing games, and casual games.<small role="credit">Google Trends</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/eXjrT353LDvUBwvo6HrbHS-1920-80.jpg" alt="Google Trends graph for the past 5 years of "cozy games"" /><figcaption>Interestingly, the resurgence of "casual games" is even more pronounced at a worldwide view.<small role="credit">Google Trends</small></figcaption></figure></figure><p>First let's check back in on the same Google Search data I pulled in 2023 to compare how much we, the audience, are actually seeking cozy games. We're looking at <a href="https://trends.google.com/explore?q=cozy%2520games%2Crelaxing%2520games%2Ccasual%2520games&date=today%205-y&geo=US">the past five years or search interest</a> for the terms: cozy games, relaxing games, and casual games. </p><p>The main term "cozy games" is <em>twice</em> as popular as it was in 2023 when I identified the surprising spike the phrase had already experienced between 2020 and 2023. Google doesn't share raw search volume so this is all relative, not absolute, but it's still clear evidence that the interest in cozy games has continued to explode.</p><p>What is surprising to me is the comeback for the phrase "casual games." It's one we used a lot in the late twenty-teens but was eclipsed by "cozy" around 2022. Anecdotally, I think "casual" suffered from also being pejorative and may have fallen away in favor of the more positive tone "cozy." They aren't exactly interchangeable terms, but it's interesting to see casual make such a sharp comeback this year, which may mean some cozy gamers are reclaiming it. </p><h2 id="cozy-games-on-steam">Cozy games on Steam</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:1337px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="TB3x7e38USmbNChYVU3AU" name="cozy tag on steam 2026" alt="Steam's "cozy" tag page featuring the game Tiny Glade" src="https://cdn.mos.cms.futurecdn.net/TB3x7e38USmbNChYVU3AU-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1337" height="752" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/TB3x7e38USmbNChYVU3AU-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: Steam, Pounce Light)</span></figcaption></figure><p>Okay, then what about the supply of cozy games? Yeah, that's gone up too.</p><div ><table><thead><tr><th class="firstcol " ><p><strong>Year</strong></p></th><th  ><p><strong>"Cozy" tagged games on Steam</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><a href="https://steamdb.info/tag/97376/?displayOnly=Game&max_release=2024-12-31&min_release=2024-01-01">2024</a></p></td><td  ><p>389</p></td></tr><tr><td class="firstcol " ><p><a href="https://steamdb.info/tag/97376/?displayOnly=Game&max_release=2025-12-31&min_release=2025-01-01">2025</a></p></td><td  ><p>650</p></td></tr><tr><td class="firstcol " ><p><a href="https://steamdb.info/tag/97376/?displayOnly=Game&max_release=2026-10-20&min_release=2026-01-01">2026 </a>(so far)</p></td><td  ><p>1,341</p></td></tr></tbody></table></div><p>This isn't a perfect measure either. It doesn't capture every game that cozy gamers might like, only every game that has been user-tagged that way. Naturally, the number of games identified as "cozy" goes up as the term itself becomes a popular descriptor.</p><p>When you look at the number of games tagged as "cozy" that launched last year between the same dates as this year (January to October), it's 468 last year to this year's 1,341. That's a 186% increase. Subgenres like tidying up games, farm sim idlers, and desktop companions are all booming with dozens of new choices each month, spawning new and more niche microgenres in their wake.</p><p>The <a href="https://www.pcgamer.com/gaming-industry/steam-week-in-review-steam-next-fest-has-over-8-000-demos-as-worthless-vibe-coded-slop-levels-up/">sharp rise in AI slop games</a> contributes to that, certainly, but I'm not sure it's necessarily affecting cozy games more than other genres.</p><h2 id="cozy-games-in-my-inbox">Cozy games in my inbox</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cAxkd6D8y5iwfd6VRevWaB" name="Fields Of Aaru Demo Screenshot 2026.10.19 - 20.36.52.18" alt="Fields of Aaru - A character runs across a wood bridge in an ancient Egyptian village river" src="https://cdn.mos.cms.futurecdn.net/cAxkd6D8y5iwfd6VRevWaB-1920-80.png" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Fields of Aaru </span><span class="credit" itemprop="copyrightHolder">(Image credit: Zymartu Games)</span></figcaption></figure><p>A source that you can't pull from public data is my poor, overstuffed inbox (which I <a href="https://www.pcgamer.com/software/you-have-how-many-unread-emails-pc-gamer-shares-their-inbox-shame/" target="_blank">ritually clean</a>). This is really the basis of my "gold rush" thesis: the biggest change in cozy gaming in the past three years is that developers and publishers are using the word much more than before. They sure are deploying it in subject lines from PR teams, lemme tell ya.</p><p>Back in my 2023 article I quoted a measly 15 emails from the year including the word "cozy." Let's look at the three years since.</p><div ><table><thead><tr><th class="firstcol " ><p><strong>Year</strong></p></th><th  ><p><strong>"Cozy" emails in my inbox</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p>2024</p></td><td  ><p>365</p></td></tr><tr><td class="firstcol " ><p>2025</p></td><td  ><p>782</p></td></tr><tr><td class="firstcol " ><p>2026 (so far)</p></td><td  ><p>887</p></td></tr></tbody></table></div><p>What I'd suspected back in 2023 was that "cozy" gaming was about to get really weird as marketing teams started slapping the label onto things that may not really merit it. I am noticing that in my inbox a bit. I sure can't imagine a <a href="https://store.steampowered.com/app/5319690/Wasteland_Gunsmith_Simulator_Demo/">post-apocalyptic gunsmithing job sim</a> self-identifying as "cozy" four years ago. Is it abusing the term? I dunno, crafty repair sims are yet another one of those <a href="https://store.steampowered.com/app/3812600/ReStory_Chill_Electronics_Repairs/">exploding microgenres</a> of cozy game, so even if it's zombies and guns it feels pretty fair.</p><p>I still recall being aghast that cozy gamers were calling roguelike action game <a href="https://store.steampowered.com/app/1313140/Cult_of_the_Lamb/">Cult of the Lamb</a> a cozy game back in 2022 because of its small community sim feature. So I'm not sure PR emails can abuse the word more than cozy gamers themselves, who have already long been stretching the limits of a really flexible term.</p><div class="product"><a data-dimension112="5afd5790-cf16-11f1-86b2-9398833099a7" data-action="Deal Block" data-label="Best laptop games" data-dimension48="Best laptop games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:146px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="o2twU6ehEfeJDWWUZMiEsB" name="stardew square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/o2twU6ehEfeJDWWUZMiEsB-1920-80.jpg" mos="" align="middle" fullscreen="" width="146" height="146" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.pcgamer.com/best-laptop-games/" target="_blank" data-dimension112="5afd5790-cf16-11f1-86b2-9398833099a7" data-action="Deal Block" data-label="Best laptop games" data-dimension48="Best laptop games" data-dimension25=""><strong>Best laptop games</strong></a>: Low-spec life<br><a href="https://www.pcgamer.com/steam-deck-best-games/" target="_blank"><strong>Best Steam Deck games</strong></a>: Handheld must-haves<br><a href="https://www.pcgamer.com/best-browser-games/" target="_blank"><strong>Best browser games</strong></a>: No install needed<br><a href="https://www.pcgamer.com/best-indie-games/" target="_blank"><strong>Best indie games</strong></a>: Independent excellence<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><h2 id="cozy-gamers-in-the-wild">Cozy gamers in the wild</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MdWF9NmXMCPr5yawXUrPr4" name="20260702222945_1" alt="Fields of Mistria - A player is cheered by the town for winning the fall festival competition" src="https://cdn.mos.cms.futurecdn.net/MdWF9NmXMCPr5yawXUrPr4-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="caption-text">Fields of Mistria </span><span class="credit" itemprop="copyrightHolder">(Image credit: NPC Studio)</span></figcaption></figure><p>Back in 2023 I felt protective of cozy gamers. Approachable games like Animal Crossing and Stardew Valley had attracted newer gamers who didn't always have the same gaming lingo fluency, and I worried they could be targets for low quality copycats entering the space. I wanted them to love gaming and not get turned away by bad experiences.</p><p>I'm not worried anymore. Over the past three years cozy gamers have adapted fast. They've become an extremely savvy audience capable of taxonomically describing the exact real-time restocking shop sim that they're looking for. They trade game recommendations so quickly that it feels like even average cozy game fans keep up with new releases and announcements as a part time job. Cozy gamers have become, dare I say, hardcore.</p><p>I don't think cozy gamers are going to get less engaged any time soon, so the cozy gaming movement is aging out of "trend" status into an enduring corner of the broader gaming community. </p><p>What's next for cozy games then? Maybe a plateau or a wobble in the next three years as an inherently positive genre reckons with the cynicism from increasingly aggressive use of 'cozy' as a marketing tool and the growing number of disappointing AI copycats. </p><p>I still don't think it's peaked, though. Let's check back in in 2028.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The best feature in the original Alan Wake is an absence: the man has no reticle ]]></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>There's a recurring motif in <a href="https://www.pcgamer.com/alan-wake-review/" target="_blank">Alan Wake</a> which isn't played for laughs, yet is pretty funny nonetheless. Whenever the alcoholic FBI agent has a chance to peacefully capture our fugitive novelist, he blows it by firing his service pistol wildly through the air. The local police chief tells him to cool his jets; the late night radio host wants to know what's the matter with him. But Agent Nightingale can't help himself.</p><p>It's as if the pressure of having a target in his sights is simply too much. He flips the board, all the pieces fly everywhere, and Alan Wake is lost amid the trees. "I'll get you yet," Nightingale hollers into the dark. "Even if it kills me, y'hear me HP Lovecraft?"</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="idwennDRWPNj39UopSneGX" name="Alan Wake a" alt="Alan Wake" src="https://cdn.mos.cms.futurecdn.net/idwennDRWPNj39UopSneGX-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: Remedy)</span></figcaption></figure><p>Wake, meanwhile, remains impervious to the man's vendetta. "I'd fallen off so many cliffs it was ridiculous," he thinks to himself as he slides on his arse down a steep embankment, escaping Nightingale's clutches once again.</p><p>It's all a little embarrassing. But I do sympathise with the humiliated drunk behind the badge. There's something about aiming a gun in Bright Falls that messes with your head and gets the better of you. And I've identified precisely what that thing is: a missing reticle.</p><p>We don't talk about reticles a lot—in the same way you don't tend to notice your own nose, even though it's bang in the centre of your vision. But they're a standard of the third-person shooter genre: a way to indicate what direction you're firing without literal crosshairs. More broadly, they're part of how you orient yourself in a 3D world; some players find that without a reliable point of focus in the middle of the screen, motion sickness gets the better of them.</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="jQwkb8SeYtVPMkT5K6S8FX" name="Alan Wake e" alt="Alan Wake" src="https://cdn.mos.cms.futurecdn.net/jQwkb8SeYtVPMkT5K6S8FX-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/jQwkb8SeYtVPMkT5K6S8FX-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: Remedy)</span></figcaption></figure><p>Given that reticles often didn't feature during the shooter boom of the '90s, you can think of Remedy as early adopters. The studio equipped Max Payne with one in 2001, and stuck with the idea for the sequel two years later. The implementation of the reticle in those games was minimalist—a single, unchanging white dot—but it kept us steady. Steadier than a diet of painkillers did, at any rate.</p><p>Alan Wake, though, messes with the fundamentals. Its combat is rooted in a supernatural one-two punch. First, you direct your torch at the shadowy silhouettes that assault you to make them vulnerable to ballistic fire. Then you reach for your revolver or shotgun and shoot them in the head and torso until they burn up like a waste paper basket exposed to a cigarette. "I'd never fired a gun outside a shooting range," Wake narrates. "And now I'd just killed someone, or something." Typically for the genre, though, he soon gets over it, and starts shooting shadows in their dozens.</p><p>The torch is the closest thing Wake has to a reticle—a beam that roughly hits the spot your bullets are likely to land. But of course, the torch's light isn't painted on the screen as a fixed point; it's shifting constantly within 3D space. Any time Wake passes in front of a pile of logs or a fence post, the beam's length is cut by half or a third. If it's shining on a wall close to his face, the radius of the beam expands dramatically, becoming taller and wider than any enemy he might face.</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="Ej4XbBJXo6Kspa8MmMRaGX" name="Alan Wake g" alt="Alan Wake" src="https://cdn.mos.cms.futurecdn.net/Ej4XbBJXo6Kspa8MmMRaGX-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/Ej4XbBJXo6Kspa8MmMRaGX-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: Remedy)</span></figcaption></figure><p>You can pull the left trigger to focus your torch, in a move analogous to aiming down sights. But that comes with a complication: aiming drains your battery, and batteries are relatively rare in the forest that surrounds Bright Falls. Resource scarcity is one of the ways Remedy flirts with survival horror throughout Alan Wake.</p><p>What does all this mean during a fight? Usually that you're conserving energy. That you focus your beam only so long as it takes to break through the shadow armour of a charging opponent. Once they're weakened, you're incentivised <em>not</em> to aim down sights while firing your gun, in order to preserve battery life. As a result, you find yourself squinting at ghouls in the foggy mid-distance, attempting to put holes in them without any zoom or assistance from a reticle.</p><p>It's an unnerving feeling—as if the training wheels have come off and tripped you up in the process. And perhaps it's unworkable for those susceptible to certain kinds of nausea; it's notable that <a href="https://www.pcgamer.com/alan-wake-2-review/" target="_blank">Alan Wake 2</a>, launched in a more enlightened era of accessibility considerations, <em>does</em> have a traditional reticle that pops up when wielding your pistol. </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="fx2YFRk3LVjV3m5gknaiGX" name="Alan Wake c" alt="Alan Wake" src="https://cdn.mos.cms.futurecdn.net/fx2YFRk3LVjV3m5gknaiGX-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/fx2YFRk3LVjV3m5gknaiGX-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: Remedy)</span></figcaption></figure><p>But there's no doubt that the original's approach is effective, too. It lowers your confidence in your aim, heightens any panic you might be feeling, and tangibly plugs you into the game's atmosphere of unravellment. It's a quirk that elevates Alan Wake,  even when it begins to repeat familiar patterns in its combat design.</p><p>The rather uncertain quality to Alan Wake's shooting is mirrored in its level design as well. Remedy spent three years grappling with open world tech before finally resolving to build the game as a set of linear levels, and that initial ambition is still reflected in the geography of Bright Falls. There's enough room between checkpoints to wander from the path, and at times, the route ahead is distressingly vague.</p><p>On top of that, Remedy literally sprinkles non-linear storytelling—scattering pages from the game's manuscript throughout its levels, so that descriptions of fights to come become foreshadowing, and pages from previous scenes induce lingering guilt. </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="UPorLHYXovtJZPNTLnXRDX" name="Alan Wake" alt="Alan Wake" src="https://cdn.mos.cms.futurecdn.net/UPorLHYXovtJZPNTLnXRDX-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/UPorLHYXovtJZPNTLnXRDX-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: Remedy)</span></figcaption></figure><p>In one instance, a waitress who is infatuated with Wake becomes possessed, drugging the writer with tainted coffee. After coming to, Wake is furious, and leaves her rocking back and forth on the floor of her trailer. Only later does he find the sheet of paper that lays out her haunting perspective. "Rose was smiling so hard it hurt her face," it reads. "She crushed a bottlefull of sleeping pills into the coffee. Deep down inside, she was screaming in terror."</p><p>Remedy has made more sophisticated and varied action sequences since Alan Wake. But the woozy fear of its first-ever horror game has no handrails, and that's what makes it distinct. By ditching the reticle, paradoxically, the studio achieved its aim.</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="0a71856e-cef1-11f1-8719-2928fed8c5e2" 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="0a71856e-cef1-11f1-8719-2928fed8c5e2" 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/horror/the-best-feature-in-the-original-alan-wake-is-an-absence-the-man-has-no-reticle/</link>
                                                                            <description>
                            <![CDATA[ Remedy forgot the rules of third-person shooting to build its inaugural horror game. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">8KRWQu2GE7PJHAs2UB24s3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/SY4bRTAf7W5JrUVD9AVb3Z-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 24 Oct 2026 15:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Horror]]></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>
                                                                                                                                <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/SY4bRTAf7W5JrUVD9AVb3Z-1920-80.jpg">
                                                            <media:credit><![CDATA[Remedy]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Alan Wake ]]></media:description>                                                            <media:text><![CDATA[Alan Wake ]]></media:text>
                                <media:title type="plain"><![CDATA[Alan Wake ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/SY4bRTAf7W5JrUVD9AVb3Z-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>There's a recurring motif in <a href="https://www.pcgamer.com/alan-wake-review/" target="_blank">Alan Wake</a> which isn't played for laughs, yet is pretty funny nonetheless. Whenever the alcoholic FBI agent has a chance to peacefully capture our fugitive novelist, he blows it by firing his service pistol wildly through the air. The local police chief tells him to cool his jets; the late night radio host wants to know what's the matter with him. But Agent Nightingale can't help himself.</p><p>It's as if the pressure of having a target in his sights is simply too much. He flips the board, all the pieces fly everywhere, and Alan Wake is lost amid the trees. "I'll get you yet," Nightingale hollers into the dark. "Even if it kills me, y'hear me HP Lovecraft?"</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="idwennDRWPNj39UopSneGX" name="Alan Wake a" alt="Alan Wake" src="https://cdn.mos.cms.futurecdn.net/idwennDRWPNj39UopSneGX-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: Remedy)</span></figcaption></figure><p>Wake, meanwhile, remains impervious to the man's vendetta. "I'd fallen off so many cliffs it was ridiculous," he thinks to himself as he slides on his arse down a steep embankment, escaping Nightingale's clutches once again.</p><p>It's all a little embarrassing. But I do sympathise with the humiliated drunk behind the badge. There's something about aiming a gun in Bright Falls that messes with your head and gets the better of you. And I've identified precisely what that thing is: a missing reticle.</p><p>We don't talk about reticles a lot—in the same way you don't tend to notice your own nose, even though it's bang in the centre of your vision. But they're a standard of the third-person shooter genre: a way to indicate what direction you're firing without literal crosshairs. More broadly, they're part of how you orient yourself in a 3D world; some players find that without a reliable point of focus in the middle of the screen, motion sickness gets the better of them.</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="jQwkb8SeYtVPMkT5K6S8FX" name="Alan Wake e" alt="Alan Wake" src="https://cdn.mos.cms.futurecdn.net/jQwkb8SeYtVPMkT5K6S8FX-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/jQwkb8SeYtVPMkT5K6S8FX-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: Remedy)</span></figcaption></figure><p>Given that reticles often didn't feature during the shooter boom of the '90s, you can think of Remedy as early adopters. The studio equipped Max Payne with one in 2001, and stuck with the idea for the sequel two years later. The implementation of the reticle in those games was minimalist—a single, unchanging white dot—but it kept us steady. Steadier than a diet of painkillers did, at any rate.</p><p>Alan Wake, though, messes with the fundamentals. Its combat is rooted in a supernatural one-two punch. First, you direct your torch at the shadowy silhouettes that assault you to make them vulnerable to ballistic fire. Then you reach for your revolver or shotgun and shoot them in the head and torso until they burn up like a waste paper basket exposed to a cigarette. "I'd never fired a gun outside a shooting range," Wake narrates. "And now I'd just killed someone, or something." Typically for the genre, though, he soon gets over it, and starts shooting shadows in their dozens.</p><p>The torch is the closest thing Wake has to a reticle—a beam that roughly hits the spot your bullets are likely to land. But of course, the torch's light isn't painted on the screen as a fixed point; it's shifting constantly within 3D space. Any time Wake passes in front of a pile of logs or a fence post, the beam's length is cut by half or a third. If it's shining on a wall close to his face, the radius of the beam expands dramatically, becoming taller and wider than any enemy he might face.</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="Ej4XbBJXo6Kspa8MmMRaGX" name="Alan Wake g" alt="Alan Wake" src="https://cdn.mos.cms.futurecdn.net/Ej4XbBJXo6Kspa8MmMRaGX-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/Ej4XbBJXo6Kspa8MmMRaGX-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: Remedy)</span></figcaption></figure><p>You can pull the left trigger to focus your torch, in a move analogous to aiming down sights. But that comes with a complication: aiming drains your battery, and batteries are relatively rare in the forest that surrounds Bright Falls. Resource scarcity is one of the ways Remedy flirts with survival horror throughout Alan Wake.</p><p>What does all this mean during a fight? Usually that you're conserving energy. That you focus your beam only so long as it takes to break through the shadow armour of a charging opponent. Once they're weakened, you're incentivised <em>not</em> to aim down sights while firing your gun, in order to preserve battery life. As a result, you find yourself squinting at ghouls in the foggy mid-distance, attempting to put holes in them without any zoom or assistance from a reticle.</p><p>It's an unnerving feeling—as if the training wheels have come off and tripped you up in the process. And perhaps it's unworkable for those susceptible to certain kinds of nausea; it's notable that <a href="https://www.pcgamer.com/alan-wake-2-review/" target="_blank">Alan Wake 2</a>, launched in a more enlightened era of accessibility considerations, <em>does</em> have a traditional reticle that pops up when wielding your pistol. </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="fx2YFRk3LVjV3m5gknaiGX" name="Alan Wake c" alt="Alan Wake" src="https://cdn.mos.cms.futurecdn.net/fx2YFRk3LVjV3m5gknaiGX-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/fx2YFRk3LVjV3m5gknaiGX-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: Remedy)</span></figcaption></figure><p>But there's no doubt that the original's approach is effective, too. It lowers your confidence in your aim, heightens any panic you might be feeling, and tangibly plugs you into the game's atmosphere of unravellment. It's a quirk that elevates Alan Wake,  even when it begins to repeat familiar patterns in its combat design.</p><p>The rather uncertain quality to Alan Wake's shooting is mirrored in its level design as well. Remedy spent three years grappling with open world tech before finally resolving to build the game as a set of linear levels, and that initial ambition is still reflected in the geography of Bright Falls. There's enough room between checkpoints to wander from the path, and at times, the route ahead is distressingly vague.</p><p>On top of that, Remedy literally sprinkles non-linear storytelling—scattering pages from the game's manuscript throughout its levels, so that descriptions of fights to come become foreshadowing, and pages from previous scenes induce lingering guilt. </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="UPorLHYXovtJZPNTLnXRDX" name="Alan Wake" alt="Alan Wake" src="https://cdn.mos.cms.futurecdn.net/UPorLHYXovtJZPNTLnXRDX-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/UPorLHYXovtJZPNTLnXRDX-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: Remedy)</span></figcaption></figure><p>In one instance, a waitress who is infatuated with Wake becomes possessed, drugging the writer with tainted coffee. After coming to, Wake is furious, and leaves her rocking back and forth on the floor of her trailer. Only later does he find the sheet of paper that lays out her haunting perspective. "Rose was smiling so hard it hurt her face," it reads. "She crushed a bottlefull of sleeping pills into the coffee. Deep down inside, she was screaming in terror."</p><p>Remedy has made more sophisticated and varied action sequences since Alan Wake. But the woozy fear of its first-ever horror game has no handrails, and that's what makes it distinct. By ditching the reticle, paradoxically, the studio achieved its aim.</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="0a71856e-cef1-11f1-8719-2928fed8c5e2" 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="0a71856e-cef1-11f1-8719-2928fed8c5e2" 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[ 'I drank from the chalice of blood': indie dev scrubs his game of AI-generated voice lines, having previously described the technology as 'anti-human and anti-art' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Well, here's a headscratcher. Paolo Pedercini, developer of<a href="https://store.steampowered.com/app/3861870/Future_No_Thanks/" target="_blank"> Future? No Thanks!</a> recently admitted to using generative AI in his ecosocialist satire while also referring to the technology as "a technofascist, anti-human and anti-art project." Now, the developer has removed several AI generated voice lines from the game, following a backlash to his use of the very technology which the game lampoons.</p><p>You might remember Future? No Thanks! from another recent controversy, whereupon the game was briefly delayed after Steam<a href="https://www.pcgamer.com/gaming-industry/indie-game-gets-last-minute-steam-delay-while-valve-reviews-its-dozens-of-untextured-polygons-depicting-ass-and-boobs/"> held up its release</a> while it reviewed some fleeting nudity in the game. Pedercini—who also goes by Mollieindustria—received considerable support during that debacle. But the reaction to Future? No Thanks' AI use has been rather less supportive, prompting Pedercini to rework the game and respond to the backlash.</p><p>Pedercini originally revealed his AI use in a<a href="https://www.molleindustria.org/blog/future-no-thanks-ai-disclosure/" target="_blank"> blog post</a> (via<a href="https://www.rockpapershotgun.com/future-no-thanks-dev-removes-ai-generated-voices-from-game-and-offers-refunds-to-players-who-feel-betrayed" target="_blank"> Rock, Paper, Shotgun</a>). Apparently, the game contained several voice lines generated using text-to-speech, which Pedercini claimed, "used to be an uncontroversial technology and an early application of neural networks" before "AI bros started commercializing AI voices".  Alongside this, the game also includes "a tiny fraction" of AI generated code, which Pedercini said he used for things like "fixing a shader I didn't write which broke after an update" as well as "finishing touches and minor debugging."</p><p>In this blog, Pedercini defended his AI use by pointing out that Future? No Thanks! "satirizes generative AI and the careless ways it can be used," adding that the "100% no-AI stance" adopted by many game developers "is very recent, and the game was being developed before a consensus emerged." He also cited his role as an academic and game design teacher, stating "I have to look into these tools which most of my students use, and I was trying to figure out if there are non-brain-rotting ways to do so."</p><p>Yet it seems these arguments failed to convince Pedercini's audience, as yesterday he<a href="https://www.molleindustria.org/blog/future-no-thanks-update-now-with-no-ai-generated-voices/" target="_blank"> published another blog post</a> revealing he has now removed the offending TTS voice lines, replacing them with lines by human actors. Apparently, these lines were "recorded earlier this year," but Pedercini opted not to use them because he "thought the actual uncanny text-to-speech was funnier in that context."</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/HunhfOtzEEE" allowfullscreen></iframe></div></div><p>Although Pedercini has removed the lines, he's clearly not happy about it. In the second blog, he stated that he believes that "the game is worse not, but only, like, 0.001% worse." He also included a "personal update" through which he responded more broadly to the backlash.</p><p>"Somebody from Bluesky (the Twitter/X clone) dragged me due to a post disclosing what I foolishly thought a minor use of generative-AI in Future? No Thanks!" he explained. "I gave versions of that statement multiple times before, whenever asked by festivals and events." He also pointed out that, per Valve's<a href="https://www.linkedin.com/posts/simoncarless_interestingly-pc-video-game-platform-steam-ugcPost-7417944214812106752-Qzdl/"> updated AI disclosure rules</a>, "Steam doesn't require disclosure of generative AI for things like code assistance, so many people assume their favorite indie games don't use AI at all just because the developers stay mum".</p><p>The post then took a weirder turn. Pedercini admitted that his original blog "was not a good post," and that he thought "nobody would read it", before claiming that his AI disclosure resulted in "more insults than the time at the height of GamerGate when Adam Baldwin unleashed his half million followers on me."  He followed this by linking to a<a href="https://bsky.app/starter-pack/danjohnston.uk/3mt7inilh7s27"> list of game developers</a> that reject generative AI, claiming that "all studios" who haven't disclosed genAI use are "using it for coding in some capacity" and began his signoff with "I drank from the chalice of blood. Nothing will ever redeem me and my cursed little game."</p><p>As for what to make of all this (at least, the bits that aren't about drinking blood), I can sort-of understand Pedercini attempt at deploying TTS voice lines for satirical purposes, and he's correct in saying that TTS has a history that goes back further than modern LLMs. If that was <em>all </em>the genAI in the game, it would be more defensible.</p><p>But the fact he's also used generative coding tools for clearly non-satirical purposes is much harder to defend. Also, if you're making a game that satirises generative AI, the primary audience for which is going to be people who are avowedly against generative AI, it's probably prudent to ensure that the creation of said game is as far removed from generative AI as possible.</p><p>Yet among the references to gamergate and accusing the entire industry of secretly using AI, Pedercini did make two other points worth noting. First, he said that players who bought Future? No Thanks and "feel betrayed" by his use of AI can request a refund by emailing their Paypal or Venmo information to him. Second, he promised that his next project "will be completely hand-coded", as he had already determined that "AI-assisted programming is bad for me."</p><div class="product"><a data-dimension112="980718f0-cfb7-11f1-9ef7-4b48eebfa7df" 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="980718f0-cfb7-11f1-9ef7-4b48eebfa7df" 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/gaming-industry/game-development/i-drank-from-the-chalice-of-blood-indie-dev-scrubs-his-game-of-ai-generated-voice-lines-having-previously-described-the-technology-as-anti-human-and-anti-art/</link>
                                                                            <description>
                            <![CDATA[ Refund offered for players who "still feel betrayed" over AI use in Future? No Thanks! ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">JWXsvDJz7BKnMaXj6D4boK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/J2SZTYU49FSR6FCXmQ3dv9-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 24 Oct 2026 14:30:20 +0000</pubDate>                                                                                                                                <updated>Sat, 24 Oct 2026 14:31:50 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Development]]></category>
                                                    <category><![CDATA[Gaming Industry]]></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/J2SZTYU49FSR6FCXmQ3dv9-1920-80.jpg">
                                                            <media:credit><![CDATA[Mollieindustria]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A man wearing mirror shades sits on a pedestal in Future? No Thanks!]]></media:description>                                                            <media:text><![CDATA[A man wearing mirror shades sits on a pedestal in Future? No Thanks!]]></media:text>
                                <media:title type="plain"><![CDATA[A man wearing mirror shades sits on a pedestal in Future? No Thanks!]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/J2SZTYU49FSR6FCXmQ3dv9-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Well, here's a headscratcher. Paolo Pedercini, developer of<a href="https://store.steampowered.com/app/3861870/Future_No_Thanks/" target="_blank"> Future? No Thanks!</a> recently admitted to using generative AI in his ecosocialist satire while also referring to the technology as "a technofascist, anti-human and anti-art project." Now, the developer has removed several AI generated voice lines from the game, following a backlash to his use of the very technology which the game lampoons.</p><p>You might remember Future? No Thanks! from another recent controversy, whereupon the game was briefly delayed after Steam<a href="https://www.pcgamer.com/gaming-industry/indie-game-gets-last-minute-steam-delay-while-valve-reviews-its-dozens-of-untextured-polygons-depicting-ass-and-boobs/"> held up its release</a> while it reviewed some fleeting nudity in the game. Pedercini—who also goes by Mollieindustria—received considerable support during that debacle. But the reaction to Future? No Thanks' AI use has been rather less supportive, prompting Pedercini to rework the game and respond to the backlash.</p><p>Pedercini originally revealed his AI use in a<a href="https://www.molleindustria.org/blog/future-no-thanks-ai-disclosure/" target="_blank"> blog post</a> (via<a href="https://www.rockpapershotgun.com/future-no-thanks-dev-removes-ai-generated-voices-from-game-and-offers-refunds-to-players-who-feel-betrayed" target="_blank"> Rock, Paper, Shotgun</a>). Apparently, the game contained several voice lines generated using text-to-speech, which Pedercini claimed, "used to be an uncontroversial technology and an early application of neural networks" before "AI bros started commercializing AI voices".  Alongside this, the game also includes "a tiny fraction" of AI generated code, which Pedercini said he used for things like "fixing a shader I didn't write which broke after an update" as well as "finishing touches and minor debugging."</p><p>In this blog, Pedercini defended his AI use by pointing out that Future? No Thanks! "satirizes generative AI and the careless ways it can be used," adding that the "100% no-AI stance" adopted by many game developers "is very recent, and the game was being developed before a consensus emerged." He also cited his role as an academic and game design teacher, stating "I have to look into these tools which most of my students use, and I was trying to figure out if there are non-brain-rotting ways to do so."</p><p>Yet it seems these arguments failed to convince Pedercini's audience, as yesterday he<a href="https://www.molleindustria.org/blog/future-no-thanks-update-now-with-no-ai-generated-voices/" target="_blank"> published another blog post</a> revealing he has now removed the offending TTS voice lines, replacing them with lines by human actors. Apparently, these lines were "recorded earlier this year," but Pedercini opted not to use them because he "thought the actual uncanny text-to-speech was funnier in that context."</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/HunhfOtzEEE" allowfullscreen></iframe></div></div><p>Although Pedercini has removed the lines, he's clearly not happy about it. In the second blog, he stated that he believes that "the game is worse not, but only, like, 0.001% worse." He also included a "personal update" through which he responded more broadly to the backlash.</p><p>"Somebody from Bluesky (the Twitter/X clone) dragged me due to a post disclosing what I foolishly thought a minor use of generative-AI in Future? No Thanks!" he explained. "I gave versions of that statement multiple times before, whenever asked by festivals and events." He also pointed out that, per Valve's<a href="https://www.linkedin.com/posts/simoncarless_interestingly-pc-video-game-platform-steam-ugcPost-7417944214812106752-Qzdl/"> updated AI disclosure rules</a>, "Steam doesn't require disclosure of generative AI for things like code assistance, so many people assume their favorite indie games don't use AI at all just because the developers stay mum".</p><p>The post then took a weirder turn. Pedercini admitted that his original blog "was not a good post," and that he thought "nobody would read it", before claiming that his AI disclosure resulted in "more insults than the time at the height of GamerGate when Adam Baldwin unleashed his half million followers on me."  He followed this by linking to a<a href="https://bsky.app/starter-pack/danjohnston.uk/3mt7inilh7s27"> list of game developers</a> that reject generative AI, claiming that "all studios" who haven't disclosed genAI use are "using it for coding in some capacity" and began his signoff with "I drank from the chalice of blood. Nothing will ever redeem me and my cursed little game."</p><p>As for what to make of all this (at least, the bits that aren't about drinking blood), I can sort-of understand Pedercini attempt at deploying TTS voice lines for satirical purposes, and he's correct in saying that TTS has a history that goes back further than modern LLMs. If that was <em>all </em>the genAI in the game, it would be more defensible.</p><p>But the fact he's also used generative coding tools for clearly non-satirical purposes is much harder to defend. Also, if you're making a game that satirises generative AI, the primary audience for which is going to be people who are avowedly against generative AI, it's probably prudent to ensure that the creation of said game is as far removed from generative AI as possible.</p><p>Yet among the references to gamergate and accusing the entire industry of secretly using AI, Pedercini did make two other points worth noting. First, he said that players who bought Future? No Thanks and "feel betrayed" by his use of AI can request a refund by emailing their Paypal or Venmo information to him. Second, he promised that his next project "will be completely hand-coded", as he had already determined that "AI-assisted programming is bad for me."</p><div class="product"><a data-dimension112="980718f0-cfb7-11f1-9ef7-4b48eebfa7df" 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="980718f0-cfb7-11f1-9ef7-4b48eebfa7df" 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[ Award-winning sci-fi author NK Jemisin joins BioWare's mourners and scorns a broken industry for killing geese that 'laid the golden eggs' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The death of BioWare has provoked a whole lot of tributes, memorialisation, and plain old nostalgia as all sorts of people come together to remember the bangers the erstwhile king of RPGs put out in its prime. <a href="https://www.pcgamer.com/gaming-industry/cd-projekt-boss-pays-tribute-to-bioware-for-helping-bring-the-witcher-to-life-20-years-ago-bioware-has-been-a-massive-part-of-cdpr-history/">CD Projekt Red</a>, imsim founding father <a href="https://www.pcgamer.com/gaming-industry/game-industry-legend-warren-spector-blows-up-over-biowares-closure-its-utter-bulls-t/">Warren Spector</a>, and we here at PCG have all been trading BioWare memories (and sometimes lamenting the influence of EA, which acquired the studio back in 2007).</p><p>But the BioWare classics were big enough bangers to transcend videogames in their influence. Over on <a href="https://bsky.app/profile/nkjemisin.bsky.social/post/3mygbxwxfrc2s" target="_blank">Bluesky</a>, award-winning sci-fi and fantasy writer Nora Jemisin (better known as NK Jemisin) has been mourning the studio too.</p><p>"RIP Bioware. The [Mass Effect] and [Dragon Age] games were a literal inspiration, and I can't count how many times I've replayed my faves," Jemisin wrote. "I made lifelong friends on ME3 Multiplayer. I still think Jennifer Hepler is the best game writer I've seen, and Jennifer Hale's the best VA." </p><p>Hepler was a long-time Dragon Age writer who "<a href="https://nationalpost.com/news/canada/jennifer-hepler" target="_blank">was pretty much in charge of the dwarf origin story</a>" in Origins, and also shaped much of the setting's dwarven culture in general. Jennifer Hale, meanwhile, is Jennifer Hale: Dynaheir, Mazzy Fentan, Bastila Shan, the female Commander Shepard, and plenty else. Many people, myself included, first became aware of Hale through her contributions to BioWare's RPGs.</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>"Watching what's happening to the game industry [right now] is so frustrating," Jemisin continued. "It was the goose that laid the golden eggs, guys. All you had to do was not kill it." Alas, every new year brings bigger and more expensive games that demand bigger and more dramatic returns. When they fail to bring them in? It's devs who suffer, as evidenced by the swingeing bout of layoffs that have afflicted the industry over the last several years. Rarely ever touches the executives, though. Funny how that works.</p><div class="product"><a data-dimension112="ead015ae-ce32-11f1-8a0a-f73580bec635" 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="ead015ae-ce32-11f1-8a0a-f73580bec635" 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/gaming-industry/award-winning-sci-fi-author-nk-jemisin-joins-biowares-mourners-and-scorns-a-broken-industry-for-killing-geese-that-laid-the-golden-eggs/</link>
                                                                            <description>
                            <![CDATA[ "The [Mass Effect] and [Dragon Age] games were a literal inspiration." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">D3fK9Xb5He25TiEeQjDwFB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/w7WrWeEQuJfAzUrJLKWHhd-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 24 Oct 2026 14:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Industry]]></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/w7WrWeEQuJfAzUrJLKWHhd-1920-80.jpg">
                                                            <media:credit><![CDATA[Bioware]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Art from Bioware games: Knights of the Old Republic, Baldur&#039;s Gate 2, Dragon Age: Inquisition, and Mass Effect 3]]></media:description>                                                            <media:text><![CDATA[Art from Bioware games: Knights of the Old Republic, Baldur&#039;s Gate 2, Dragon Age: Inquisition, and Mass Effect 3]]></media:text>
                                <media:title type="plain"><![CDATA[Art from Bioware games: Knights of the Old Republic, Baldur&#039;s Gate 2, Dragon Age: Inquisition, and Mass Effect 3]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/w7WrWeEQuJfAzUrJLKWHhd-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The death of BioWare has provoked a whole lot of tributes, memorialisation, and plain old nostalgia as all sorts of people come together to remember the bangers the erstwhile king of RPGs put out in its prime. <a href="https://www.pcgamer.com/gaming-industry/cd-projekt-boss-pays-tribute-to-bioware-for-helping-bring-the-witcher-to-life-20-years-ago-bioware-has-been-a-massive-part-of-cdpr-history/">CD Projekt Red</a>, imsim founding father <a href="https://www.pcgamer.com/gaming-industry/game-industry-legend-warren-spector-blows-up-over-biowares-closure-its-utter-bulls-t/">Warren Spector</a>, and we here at PCG have all been trading BioWare memories (and sometimes lamenting the influence of EA, which acquired the studio back in 2007).</p><p>But the BioWare classics were big enough bangers to transcend videogames in their influence. Over on <a href="https://bsky.app/profile/nkjemisin.bsky.social/post/3mygbxwxfrc2s" target="_blank">Bluesky</a>, award-winning sci-fi and fantasy writer Nora Jemisin (better known as NK Jemisin) has been mourning the studio too.</p><p>"RIP Bioware. The [Mass Effect] and [Dragon Age] games were a literal inspiration, and I can't count how many times I've replayed my faves," Jemisin wrote. "I made lifelong friends on ME3 Multiplayer. I still think Jennifer Hepler is the best game writer I've seen, and Jennifer Hale's the best VA." </p><p>Hepler was a long-time Dragon Age writer who "<a href="https://nationalpost.com/news/canada/jennifer-hepler" target="_blank">was pretty much in charge of the dwarf origin story</a>" in Origins, and also shaped much of the setting's dwarven culture in general. Jennifer Hale, meanwhile, is Jennifer Hale: Dynaheir, Mazzy Fentan, Bastila Shan, the female Commander Shepard, and plenty else. Many people, myself included, first became aware of Hale through her contributions to BioWare's RPGs.</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>"Watching what's happening to the game industry [right now] is so frustrating," Jemisin continued. "It was the goose that laid the golden eggs, guys. All you had to do was not kill it." Alas, every new year brings bigger and more expensive games that demand bigger and more dramatic returns. When they fail to bring them in? It's devs who suffer, as evidenced by the swingeing bout of layoffs that have afflicted the industry over the last several years. Rarely ever touches the executives, though. Funny how that works.</p><div class="product"><a data-dimension112="ead015ae-ce32-11f1-8a0a-f73580bec635" 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="ead015ae-ce32-11f1-8a0a-f73580bec635" 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[ After 14 years of development, Factorio's final major update is out now ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The whistle has blown. The belts have stopped. The furnace is silent and cold. After 14 years of continual development,<a href="https://www.pcgamer.com/uk/factorio/" target="_blank"> Factorio</a> has received its final major update.</p><p>Developer Wube Software<a href="https://www.pcgamer.com/games/sim/factorios-next-major-update-will-also-be-its-last-as-its-developer-announces-it-has-reached-a-good-place-to-conclude-active-gameplay-development/"> revealed</a> that update 2.1 would be the last significant patch for its genre-defining factory building sim back in May, with the team deciding the game had "reached a good place to conclude active game development". The decision comes two years after Wube released Factorio's remarkable<a href="https://www.pcgamer.com/games/sim/factorio-space-age-review/"> Space Age expansion</a>, which lets players take their industrialisation efforts into the stars and across four wildly different alien planets.</p><p>If you were hoping Wube might sign off on Factorio on a similarly spectacular note, you may be disappointed. In its latest<a href="https://factorio.com/blog/post/fff-449" target="_blank"> Friday Facts</a> blog, the developer reiterates that 2.1 "isn't about new planets, enemies or research trees," and instead delivers "a big collection of quality of life, small features, polish, and the things we wanted to for 2.0 but didn't have time for."</p><p>This doesn't mean 2.1 has nothing of interest, however. Quite the opposite. The primary changes revolve around the space logistics introduced by Space Age, with Wube making it easier to ferry goods up into space and between planets. Rockets, for instance, can now carry multiple different items rather than just one thing, making it considerably easier to get space platforms built. On top of that, platforms can also transfer items between one another in orbit and automatically import items from all available locations.</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/oF1zCD7NwNY" allowfullscreen></iframe></div></div><p>Also on the space logistics front, Wube has added a constructable unloading bay that can be attached to landing pads, allowing inserters to pull out items and place them directly onto belts, into trains and so forth. This should make interplanetary logistics a bit easier.</p><p>There are also a bunch of non-Space Age related changes. Most interesting is an overhaul to the Biters that attack your base. Wube has altered the game so that biter expansion grouping scales with evolution, to ensure that clearing out biters poses a "meaningful challenge rather than lots of tiny annoying nests." Biters will also "choose more natural locations" to build new habitats and will expand their territory regardless of whether the player chooses to explore the map early.</p><p>Elsewhere, the update reintroduces fluid mixing prevention, makes some tweaks to Space Age's Quality system, and adds snazzy new graphics for assembling machines, oil refineries, rocket silos and heat exchangers. Finally, the patch adds a new rendering system that makes it easier for pumps to connect to rail fluid wagons. This might just be the thing I'm most excited about, because setting up fluid pumps is always an enormous faff.</p><p>While we may see some smaller patches in the future, 2.1 marks the definitive end of development for Factorio. As for what Wube's plan is going forward, the studio said it was working on some new prototypes back in May, but it stressed that "there will not be anything to share for a long time." For now, we'll just have to settle for playing one of the greatest games ever made.</p><div class="product"><a data-dimension112="f9d2f716-cfa3-11f1-9d4b-9b83ae878686" data-action="Deal Block" data-label="Best laptop games" data-dimension48="Best laptop games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:146px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="o2twU6ehEfeJDWWUZMiEsB" name="stardew square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/o2twU6ehEfeJDWWUZMiEsB-1920-80.jpg" mos="" align="middle" fullscreen="" width="146" height="146" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.pcgamer.com/best-laptop-games/" target="_blank" data-dimension112="f9d2f716-cfa3-11f1-9d4b-9b83ae878686" data-action="Deal Block" data-label="Best laptop games" data-dimension48="Best laptop games" data-dimension25=""><strong>Best laptop games</strong></a>: Low-spec life<br><a href="https://www.pcgamer.com/steam-deck-best-games/" target="_blank"><strong>Best Steam Deck games</strong></a>: Handheld must-haves<br><a href="https://www.pcgamer.com/best-browser-games/" target="_blank"><strong>Best browser games</strong></a>: No install needed<br><a href="https://www.pcgamer.com/best-indie-games/" target="_blank"><strong>Best indie games</strong></a>: Independent excellence<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/survival-crafting/after-14-years-of-development-factorios-final-major-update-is-out-now/</link>
                                                                            <description>
                            <![CDATA[ Patch 2.1 brings "a big collection" of small yet significant changes. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">caYuS2HQcgHxtL8eUDxoci</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/uAsTdLQ9j9CdRBgi5PaAhN-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 24 Oct 2026 12:10:44 +0000</pubDate>                                                                                                                                <updated>Sat, 24 Oct 2026 12:12:29 +0000</updated>
                                                                                                                                            <category><![CDATA[Survival & Crafting]]></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/uAsTdLQ9j9CdRBgi5PaAhN-1920-80.jpg">
                                                            <media:credit><![CDATA[Wube Software]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A space platform rocketing into space in Factorio: Space Age.]]></media:description>                                                            <media:text><![CDATA[A space platform rocketing into space in Factorio: Space Age.]]></media:text>
                                <media:title type="plain"><![CDATA[A space platform rocketing into space in Factorio: Space Age.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/uAsTdLQ9j9CdRBgi5PaAhN-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The whistle has blown. The belts have stopped. The furnace is silent and cold. After 14 years of continual development,<a href="https://www.pcgamer.com/uk/factorio/" target="_blank"> Factorio</a> has received its final major update.</p><p>Developer Wube Software<a href="https://www.pcgamer.com/games/sim/factorios-next-major-update-will-also-be-its-last-as-its-developer-announces-it-has-reached-a-good-place-to-conclude-active-gameplay-development/"> revealed</a> that update 2.1 would be the last significant patch for its genre-defining factory building sim back in May, with the team deciding the game had "reached a good place to conclude active game development". The decision comes two years after Wube released Factorio's remarkable<a href="https://www.pcgamer.com/games/sim/factorio-space-age-review/"> Space Age expansion</a>, which lets players take their industrialisation efforts into the stars and across four wildly different alien planets.</p><p>If you were hoping Wube might sign off on Factorio on a similarly spectacular note, you may be disappointed. In its latest<a href="https://factorio.com/blog/post/fff-449" target="_blank"> Friday Facts</a> blog, the developer reiterates that 2.1 "isn't about new planets, enemies or research trees," and instead delivers "a big collection of quality of life, small features, polish, and the things we wanted to for 2.0 but didn't have time for."</p><p>This doesn't mean 2.1 has nothing of interest, however. Quite the opposite. The primary changes revolve around the space logistics introduced by Space Age, with Wube making it easier to ferry goods up into space and between planets. Rockets, for instance, can now carry multiple different items rather than just one thing, making it considerably easier to get space platforms built. On top of that, platforms can also transfer items between one another in orbit and automatically import items from all available locations.</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/oF1zCD7NwNY" allowfullscreen></iframe></div></div><p>Also on the space logistics front, Wube has added a constructable unloading bay that can be attached to landing pads, allowing inserters to pull out items and place them directly onto belts, into trains and so forth. This should make interplanetary logistics a bit easier.</p><p>There are also a bunch of non-Space Age related changes. Most interesting is an overhaul to the Biters that attack your base. Wube has altered the game so that biter expansion grouping scales with evolution, to ensure that clearing out biters poses a "meaningful challenge rather than lots of tiny annoying nests." Biters will also "choose more natural locations" to build new habitats and will expand their territory regardless of whether the player chooses to explore the map early.</p><p>Elsewhere, the update reintroduces fluid mixing prevention, makes some tweaks to Space Age's Quality system, and adds snazzy new graphics for assembling machines, oil refineries, rocket silos and heat exchangers. Finally, the patch adds a new rendering system that makes it easier for pumps to connect to rail fluid wagons. This might just be the thing I'm most excited about, because setting up fluid pumps is always an enormous faff.</p><p>While we may see some smaller patches in the future, 2.1 marks the definitive end of development for Factorio. As for what Wube's plan is going forward, the studio said it was working on some new prototypes back in May, but it stressed that "there will not be anything to share for a long time." For now, we'll just have to settle for playing one of the greatest games ever made.</p><div class="product"><a data-dimension112="f9d2f716-cfa3-11f1-9d4b-9b83ae878686" data-action="Deal Block" data-label="Best laptop games" data-dimension48="Best laptop games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:146px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="o2twU6ehEfeJDWWUZMiEsB" name="stardew square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/o2twU6ehEfeJDWWUZMiEsB-1920-80.jpg" mos="" align="middle" fullscreen="" width="146" height="146" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.pcgamer.com/best-laptop-games/" target="_blank" data-dimension112="f9d2f716-cfa3-11f1-9d4b-9b83ae878686" data-action="Deal Block" data-label="Best laptop games" data-dimension48="Best laptop games" data-dimension25=""><strong>Best laptop games</strong></a>: Low-spec life<br><a href="https://www.pcgamer.com/steam-deck-best-games/" target="_blank"><strong>Best Steam Deck games</strong></a>: Handheld must-haves<br><a href="https://www.pcgamer.com/best-browser-games/" target="_blank"><strong>Best browser games</strong></a>: No install needed<br><a href="https://www.pcgamer.com/best-indie-games/" target="_blank"><strong>Best indie games</strong></a>: Independent excellence<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[ Star Wars Galaxies' Restoration project just received another massive update, including a huge visual upgrade and an overhaul to the Wookiees' home planet ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I'm beginning to wonder whether<a href="https://swgr.org/home/" target="_blank"> Star Wars Galaxies Restoration</a> can still be considered accurately named, given the community-driven revival project has gone so far beyond keeping SOE's 2003 MMO up and running. Previous updates have already added huge features like a new Jedi system and a<a href="https://www.pcgamer.com/games/mmo/15-years-after-it-was-shut-down-star-wars-galaxies-is-still-getting-massive-updates-thanks-to-this-restoration-project-like-a-helldivers-style-galactic-civil-war/"> galactic civil war</a>. Now, the latest patch overhauls numerous aspects of the game, including a massive upgrade to its visuals.</p><p>Star Wars Galaxies Restoration: A New Dawn differs slightly from those previous updates. Where earlier patches have centred around one big new feature, A New Dawn is composed of various ideas suggested by members of the Restoration team. "We've expanded our team, adding 13 new team members to our project" the Restoration team wrote in a press release. "We asked everyone: work on something that they loved about Galaxies, and showcase that to the world."</p><p>This approach has produced an array of changes both large and small. The headline update is a game client upgrade that adds support for DirectX 12. This enables a bunch of snazzy graphical enhancements, including volumetric fog, clouds and atmosphere, a new water shader, greatly improved terrain distances, and support for upscaling tech like DLSS, FSR, and XeSS.</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/LJQtqYf4gLU" allowfullscreen></iframe></div></div><p>Beyond these visual changes, two major features of Galaxies have been overhauled. The first of these is the planet Kashyyyk, home to the Wookiees. The forest planet—which was the setting for Galaxies' second expansion Revenge of the Wookiees—has been given "new and revamped instances" as well as a rebalance to everything that was introduced back in 2005. The second feature (or to be more accurate, <em>features</em>) getting a rework are the Scout & Ranger professions, which have been given new traps, advanced creature tracking, and "expanded camp functionality" that includes a whole new prestige system.</p><p>Elsewhere, the Restoration team has given pets and mounts some TLC, including the implementation of mounted combat (both melee and ranged), while creature taming is more interactive. Player cities can be improved to a higher tier, while the Doctor profession should now be a little less passive. Finally, the Restoration team has introduced a drag-and-drop interface for moving furniture, so you no longer have to adjust your space sofa's position by typing in coordinates.</p><p>A New Dawn is being released today. If you fancy checking it out, Star Wars Galaxies: Restoration is completely free to play, and can be downloaded<a href="https://swgr.org/play/" target="_blank"> via the project's website</a>. </p><div class="product"><a data-dimension112="5b968750-cf9b-11f1-839c-cf355781856b" 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="5b968750-cf9b-11f1-839c-cf355781856b" 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/mmo/star-wars-galaxies-just-got-another-massive-update-thanks-to-its-community-restoration-project-including-a-huge-visual-upgrade-and-a-refurb-to-the-wookiees-home-planet/</link>
                                                                            <description>
                            <![CDATA[ "We asked everyone: work on something that they loved about Galaxies, and showcase that to the world." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">wfRwxoA4Dnyv94u6j4EJ3F</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/wb9nztwWNtFMQcHyyfZxog-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 24 Oct 2026 11:09:10 +0000</pubDate>                                                                                                                                <updated>Sat, 24 Oct 2026 11:15:27 +0000</updated>
                                                                                                                                            <category><![CDATA[MMO]]></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/wb9nztwWNtFMQcHyyfZxog-1920-80.jpg">
                                                            <media:credit><![CDATA[SWG Restoration Team]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Mon Calamari looks toward the sun setting over lush mountain ranges in Star Wars Galaxies]]></media:description>                                                            <media:text><![CDATA[A Mon Calamari looks toward the sun setting over lush mountain ranges in Star Wars Galaxies]]></media:text>
                                <media:title type="plain"><![CDATA[A Mon Calamari looks toward the sun setting over lush mountain ranges in Star Wars Galaxies]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/wb9nztwWNtFMQcHyyfZxog-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I'm beginning to wonder whether<a href="https://swgr.org/home/" target="_blank"> Star Wars Galaxies Restoration</a> can still be considered accurately named, given the community-driven revival project has gone so far beyond keeping SOE's 2003 MMO up and running. Previous updates have already added huge features like a new Jedi system and a<a href="https://www.pcgamer.com/games/mmo/15-years-after-it-was-shut-down-star-wars-galaxies-is-still-getting-massive-updates-thanks-to-this-restoration-project-like-a-helldivers-style-galactic-civil-war/"> galactic civil war</a>. Now, the latest patch overhauls numerous aspects of the game, including a massive upgrade to its visuals.</p><p>Star Wars Galaxies Restoration: A New Dawn differs slightly from those previous updates. Where earlier patches have centred around one big new feature, A New Dawn is composed of various ideas suggested by members of the Restoration team. "We've expanded our team, adding 13 new team members to our project" the Restoration team wrote in a press release. "We asked everyone: work on something that they loved about Galaxies, and showcase that to the world."</p><p>This approach has produced an array of changes both large and small. The headline update is a game client upgrade that adds support for DirectX 12. This enables a bunch of snazzy graphical enhancements, including volumetric fog, clouds and atmosphere, a new water shader, greatly improved terrain distances, and support for upscaling tech like DLSS, FSR, and XeSS.</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/LJQtqYf4gLU" allowfullscreen></iframe></div></div><p>Beyond these visual changes, two major features of Galaxies have been overhauled. The first of these is the planet Kashyyyk, home to the Wookiees. The forest planet—which was the setting for Galaxies' second expansion Revenge of the Wookiees—has been given "new and revamped instances" as well as a rebalance to everything that was introduced back in 2005. The second feature (or to be more accurate, <em>features</em>) getting a rework are the Scout & Ranger professions, which have been given new traps, advanced creature tracking, and "expanded camp functionality" that includes a whole new prestige system.</p><p>Elsewhere, the Restoration team has given pets and mounts some TLC, including the implementation of mounted combat (both melee and ranged), while creature taming is more interactive. Player cities can be improved to a higher tier, while the Doctor profession should now be a little less passive. Finally, the Restoration team has introduced a drag-and-drop interface for moving furniture, so you no longer have to adjust your space sofa's position by typing in coordinates.</p><p>A New Dawn is being released today. If you fancy checking it out, Star Wars Galaxies: Restoration is completely free to play, and can be downloaded<a href="https://swgr.org/play/" target="_blank"> via the project's website</a>. </p><div class="product"><a data-dimension112="5b968750-cf9b-11f1-839c-cf355781856b" 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="5b968750-cf9b-11f1-839c-cf355781856b" 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[ Why private equity acquisitions like the one that just claimed BioWare are so dreaded ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The <a href="https://www.pcgamer.com/gaming-industry/rip-bioware-ea-has-shut-down-the-legendary-rpg-developer/">closure of BioWare</a> has not come as a huge surprise. The LGBTQ-inclusive developer of Mass Effect and Dragon Age, which hadn't managed to transmute <a href="https://www.pcgamer.com/games/rpg/new-report-details-dragon-age-the-veilguards-ugly-failure-through-live-service-flip-flops-rewrites-and-conflicts-with-mass-effect/" target="_blank">development mayhem</a> into sales success and whose games aren't ideal environments for loot boxes, did not seem likely to be admired by its new owners, Saudi Arabia and Trump son-in-law Jared Kushner. Employees at the legendary RPG studio started <a href="https://www.pcgamer.com/gaming-industry/biowares-just-waiting-for-the-axe-to-fall-after-eas-usd55-billion-buyout-say-anonymous-staff/" target="_blank">working on their resumes</a> as soon as the acquisition was announced.</p><p>But even if BioWare's new owners had been miscellaneous investors rather than Saudi royalty, the outlook would not have been good: This is what private equity does.</p><p>Public companies are of course plenty capable of blowing things up all on their own. EA's pre-acquisition attempt to turn BioWare into a live-service shooter studio was one of the great missteps of the live service goldrush, and Microsoft's pursuit of shareholder value has led to thousands of layoffs and numerous game cancellations.</p><p>But there is a particular, systematic way that leveraged private equity acquisitions consume companies rather than nurturing them.<strong> </strong>In the wake of BioWare's closure and 400 layoffs across EA, we have updated our <a href="https://www.pcgamer.com/gaming-industry/eas-usd55-billion-acquisition-is-the-biggest-leveraged-buyout-in-private-equity-history-heres-why-it-has-everyone-terrified/">previously-reported</a> overview of the process that has led to the demise of a number of game studios and other companies.</p><h2 id="how-private-equity-acquisitions-work">How private equity acquisitions work</h2><p>Ostensibly, the goal of a private equity acquisition is to optimize the bought-out company's performance for long-term returns, tapping underutilized potential—like EA's mobile business—to increase profits. But private equity firms have gained a sinister reputation thanks to a counter-intuitive strategy by which firms cannibalize their own acquisitions to extract maximum profits at the expense of the acquired company and its workforce.</p><p>That grisly process begins with the leveraged buyout, the most common form of private equity acquisition.</p><p>"A leveraged buyout just means the company is bought using a combination of borrowed money, or debt, and private equity," <a href="https://www.kiplinger.com/" target="_blank">Kiplinger</a> senior investing editor Karee Venema told PC Gamer last year. "The purchased company's balance sheet is used as collateral against the loans taken out to purchase it."</p><div><blockquote><p>The private equity firm might have agreed to the terms of the loan, but repaying it becomes the purchased company's responsibility. </p></blockquote></div><p>In other words, the "leverage" in the leveraged buyout is debt. Crucially, the collateral for that debt is the assets <em>of the acquired company, </em>not of the private equity firm itself. The investors are able to limit how much capital they have to supply for the buyout, while limiting their financial risk if repaying the loan—in EA's case, a $20 billion loan from JP Morgan—proves insurmountable. The private equity firm might have agreed to the terms of the loan, but repaying it becomes the purchased company's responsibility. </p><p>Reading that might produce a faint, dissonant tingle in the back of your mind. You might be wondering, "If private equity firms can take out loans that only their companies are responsible for, could they bleed more money out of a valuable company than they paid and avoid any consequences when that company goes bankrupt?"</p><p>And you'd be right to wonder, because that's exactly what private equity firms have become infamous for doing.</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="Crt9MrXnRKTkx7PBjmUocT" name="guy" alt="Mass Effect 5 hero guy" src="https://cdn.mos.cms.futurecdn.net/Crt9MrXnRKTkx7PBjmUocT-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="caption-text">A still from a leaked trailer for the upcoming Mass Effect game, now cancelled due to BioWare's closure. </span><span class="credit" itemprop="copyrightHolder">(Image credit: BioWare/Electronic Arts)</span></figcaption></figure><p>If you're not terribly concerned about a company's long-term survival, there are myriad ways to drain it of as much value as possible. As<a href="https://www.theguardian.com/business/2024/oct/10/slash-and-burn-is-private-equity-out-of-control" target="_blank"> the Guardian</a> wrote in 2024, private equity firms have made a habit of hollowing out company workforces and raising prices to pull in unsustainable profit margins, aiming to cut loose before the resulting decline in product quality tanks sales and consumer sentiment. Others have liquidated company assets, selling  off real estate, subsidiaries, and intellectual property to enrich the firms' investors. </p><div><blockquote><p>Despite their role in precipitating bankruptcies, private equity firms often emerge financially unscathed.</p><p>Private Equity Stakeholder Project</p></blockquote></div><p>Sometimes, those sold assets will end up driving the company further into debt through "sale-leaseback agreements," where the firm will arrange for the company to sell its real estate properties, pocketing the profits while the company is forced to pay rent to continue using its own business space. Meanwhile, the firm is<a href="https://newrepublic.com/article/198351/private-equity-scam-destroys-livelihoods" target="_blank"> likely extracting additional "management fees"</a>: standard 2-and-20 terms see firms taking an annual 2% of a managed company's assets and 20% carried interest on all profits above a certain margin, while the company might face additional monitoring fees, transaction fees, and more.</p><p>Private equity has maimed<a href="https://www.newsweek.com/stores-closing-after-being-taken-over-private-equity-firms-2037523" target="_blank"> retail franchises like Party City</a>. It has<a href="https://www.megangreenwell.com/the-adults-in-the-room" target="_blank"> brutalized digital media outlets</a> like the Gizmodo Media Group and<a href="https://www.politico.com/news/magazine/2024/02/18/is-wall-street-to-blame-for-the-collapse-of-newspapers-00141920" target="_blank"> demolished local news</a> across the US. It's<a href="https://www.bostonglobe.com/2024/01/25/business/steward-health-care-mother-death/" target="_blank"> left hospitals full of bats</a> and<a href="https://www.bostonglobe.com/2024/01/25/business/steward-health-care-mother-death/" target="_blank"> increased mortality in retirement homes</a>. A<a href="https://pestakeholder.org/reports/private-equity-bankruptcy-tracker/" target="_blank"> report using S&P data</a> found that in 2024, private equity-backed companies accounted for more than 10% of all corporate bankruptcies and <em>over 50%</em> of bankruptcies with over $500 million in liabilities—but "despite their role in precipitating bankruptcies, private equity firms often emerge financially unscathed."</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:1024px;"><p class="vanilla-image-block" style="padding-top:71.78%;"><img id="e5m32waVVjCqE58sRktPAZ" name="GettyImages-932410628" alt="A Batman mascot waits to be interviewed by media at the Toys 'R' Us in Times Square March 15, 2018 in New York." src="https://cdn.mos.cms.futurecdn.net/e5m32waVVjCqE58sRktPAZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1024" height="735" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Toys 'R' Us announced its bankruptcy in 2018. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Timothy A. Clary/AFP via Getty Images)</span></figcaption></figure><p>"There have certainly been instances of this—the<a href="https://www.nytimes.com/2018/03/15/business/toys-r-us-bankruptcy.html" target="_blank"> 2017 bankruptcy of Toys 'R' Us</a> is top of mind for me," Venema said. "But there have been successful private equity buyouts, too."</p><p>Hilton, for example,<a href="https://www.sciencedirect.com/science/article/pii/S0929119922001602" target="_blank"> was arguably better off</a> in 2018 when Blackstone sold its remaining stake from its 2007 LBO—sometimes called "the best LBO ever" in financial circles. And Dell, Venema said, went from a $25 billion buyout in 2013 to being valued today at nearly $100 billion after going public again in 2018.</p><p>But in the games industry, we've seen other cases where private equity has caused carnage. Just this week, in addition to BioWare's closure and hundreds of layoffs at EA, Scum developer <a href="https://www.pcgamer.com/gaming-industry/splash-damage-acquired-this-studio-just-3-months-after-laying-off-a-bunch-of-people-now-its-laying-them-off-too/" target="_blank">Gamepires announced that it's laying off employees</a> after being acquired eight months ago by the Emona Capital-backed Splash Damage Group. Just a few weeks before acquiring Gamepires, Splash Damage had <a href="https://www.pcgamer.com/gaming-industry/2-months-after-being-acquired-by-private-equity-splash-damage-is-making-major-layoffs-so-it-can-remain-agile-even-though-it-hasnt-released-a-game-since-2020/" target="_blank">performed its own layoffs</a> in November 2025, only two months after it had been purchased in <em>its own private equity acquisition</em>.</p><h2 id="ea-39-s-uncertain-future">EA's uncertain future</h2><p>EA's fate may not be as dramatic as that of Toys 'R' Us. Saudi Arabia has invested heavily in gaming in recent years, and EA's sports games and shooters are opportunities for profit and global influence, even as triple-A gaming struggles with enormous budgets and increased competition for attention.</p><p>What we know for now is that, after laying off around 400 people, EA is continuing development of Marvel's Iron Man and the next Star Wars Jedi entry, as well as a Sims game codenamed "Project Evergreen"—though after BioWare's shuttering, Sims players are understandably concerned about what ideological pressures EA's new owners will exert on its developers. </p><p>EA Sports is of course not going anywhere, and Battlefield 6 and Apex will get continued support. And EA has confirmed that Respawn and DICE are collaborating on a new project, <a href="https://www.pcgamer.com/games/fps/ea-has-reportedly-put-dice-and-respawn-to-work-on-a-new-star-wars-battlefront-game/" target="_blank">rumored to be</a> the next Star Wars Battlefront.</p><p>But if EA still has any capacity to support the development of games outside of the most mainstream, highly-monetizable categories, it's tough to imagine it lasting.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/gaming-industry/why-private-equity-acquisitions-like-the-one-that-just-claimed-bioware-are-so-dreaded/</link>
                                                                            <description>
                            <![CDATA[ BioWare is just the latest casualty in a long history of private equity carnage. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3oLMhWLxR4sUFv6ayUZ43g</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/VcinT8UXinhzfqDjA8Wi2F-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 22:46:50 +0000</pubDate>                                                                                                                                <updated>Fri, 23 Oct 2026 22:55:27 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Industry]]></category>
                                                                                                <author><![CDATA[ lincoln.carpenter@futurenet.com (Lincoln Carpenter) ]]></author>                    <dc:creator><![CDATA[ Lincoln Carpenter ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/FPyrdqJC7WX382U9Ubt8Ee-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                        <dc:contributor><![CDATA[ Tyler Wilde ]]></dc:contributor>
                                                                    <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/VcinT8UXinhzfqDjA8Wi2F-1920-80.png">
                                                            <media:credit><![CDATA[null]]></media:credit>
                                                                                                                                                                                                                                                                                                                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/VcinT8UXinhzfqDjA8Wi2F-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The <a href="https://www.pcgamer.com/gaming-industry/rip-bioware-ea-has-shut-down-the-legendary-rpg-developer/">closure of BioWare</a> has not come as a huge surprise. The LGBTQ-inclusive developer of Mass Effect and Dragon Age, which hadn't managed to transmute <a href="https://www.pcgamer.com/games/rpg/new-report-details-dragon-age-the-veilguards-ugly-failure-through-live-service-flip-flops-rewrites-and-conflicts-with-mass-effect/" target="_blank">development mayhem</a> into sales success and whose games aren't ideal environments for loot boxes, did not seem likely to be admired by its new owners, Saudi Arabia and Trump son-in-law Jared Kushner. Employees at the legendary RPG studio started <a href="https://www.pcgamer.com/gaming-industry/biowares-just-waiting-for-the-axe-to-fall-after-eas-usd55-billion-buyout-say-anonymous-staff/" target="_blank">working on their resumes</a> as soon as the acquisition was announced.</p><p>But even if BioWare's new owners had been miscellaneous investors rather than Saudi royalty, the outlook would not have been good: This is what private equity does.</p><p>Public companies are of course plenty capable of blowing things up all on their own. EA's pre-acquisition attempt to turn BioWare into a live-service shooter studio was one of the great missteps of the live service goldrush, and Microsoft's pursuit of shareholder value has led to thousands of layoffs and numerous game cancellations.</p><p>But there is a particular, systematic way that leveraged private equity acquisitions consume companies rather than nurturing them.<strong> </strong>In the wake of BioWare's closure and 400 layoffs across EA, we have updated our <a href="https://www.pcgamer.com/gaming-industry/eas-usd55-billion-acquisition-is-the-biggest-leveraged-buyout-in-private-equity-history-heres-why-it-has-everyone-terrified/">previously-reported</a> overview of the process that has led to the demise of a number of game studios and other companies.</p><h2 id="how-private-equity-acquisitions-work">How private equity acquisitions work</h2><p>Ostensibly, the goal of a private equity acquisition is to optimize the bought-out company's performance for long-term returns, tapping underutilized potential—like EA's mobile business—to increase profits. But private equity firms have gained a sinister reputation thanks to a counter-intuitive strategy by which firms cannibalize their own acquisitions to extract maximum profits at the expense of the acquired company and its workforce.</p><p>That grisly process begins with the leveraged buyout, the most common form of private equity acquisition.</p><p>"A leveraged buyout just means the company is bought using a combination of borrowed money, or debt, and private equity," <a href="https://www.kiplinger.com/" target="_blank">Kiplinger</a> senior investing editor Karee Venema told PC Gamer last year. "The purchased company's balance sheet is used as collateral against the loans taken out to purchase it."</p><div><blockquote><p>The private equity firm might have agreed to the terms of the loan, but repaying it becomes the purchased company's responsibility. </p></blockquote></div><p>In other words, the "leverage" in the leveraged buyout is debt. Crucially, the collateral for that debt is the assets <em>of the acquired company, </em>not of the private equity firm itself. The investors are able to limit how much capital they have to supply for the buyout, while limiting their financial risk if repaying the loan—in EA's case, a $20 billion loan from JP Morgan—proves insurmountable. The private equity firm might have agreed to the terms of the loan, but repaying it becomes the purchased company's responsibility. </p><p>Reading that might produce a faint, dissonant tingle in the back of your mind. You might be wondering, "If private equity firms can take out loans that only their companies are responsible for, could they bleed more money out of a valuable company than they paid and avoid any consequences when that company goes bankrupt?"</p><p>And you'd be right to wonder, because that's exactly what private equity firms have become infamous for doing.</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="Crt9MrXnRKTkx7PBjmUocT" name="guy" alt="Mass Effect 5 hero guy" src="https://cdn.mos.cms.futurecdn.net/Crt9MrXnRKTkx7PBjmUocT-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="caption-text">A still from a leaked trailer for the upcoming Mass Effect game, now cancelled due to BioWare's closure. </span><span class="credit" itemprop="copyrightHolder">(Image credit: BioWare/Electronic Arts)</span></figcaption></figure><p>If you're not terribly concerned about a company's long-term survival, there are myriad ways to drain it of as much value as possible. As<a href="https://www.theguardian.com/business/2024/oct/10/slash-and-burn-is-private-equity-out-of-control" target="_blank"> the Guardian</a> wrote in 2024, private equity firms have made a habit of hollowing out company workforces and raising prices to pull in unsustainable profit margins, aiming to cut loose before the resulting decline in product quality tanks sales and consumer sentiment. Others have liquidated company assets, selling  off real estate, subsidiaries, and intellectual property to enrich the firms' investors. </p><div><blockquote><p>Despite their role in precipitating bankruptcies, private equity firms often emerge financially unscathed.</p><p>Private Equity Stakeholder Project</p></blockquote></div><p>Sometimes, those sold assets will end up driving the company further into debt through "sale-leaseback agreements," where the firm will arrange for the company to sell its real estate properties, pocketing the profits while the company is forced to pay rent to continue using its own business space. Meanwhile, the firm is<a href="https://newrepublic.com/article/198351/private-equity-scam-destroys-livelihoods" target="_blank"> likely extracting additional "management fees"</a>: standard 2-and-20 terms see firms taking an annual 2% of a managed company's assets and 20% carried interest on all profits above a certain margin, while the company might face additional monitoring fees, transaction fees, and more.</p><p>Private equity has maimed<a href="https://www.newsweek.com/stores-closing-after-being-taken-over-private-equity-firms-2037523" target="_blank"> retail franchises like Party City</a>. It has<a href="https://www.megangreenwell.com/the-adults-in-the-room" target="_blank"> brutalized digital media outlets</a> like the Gizmodo Media Group and<a href="https://www.politico.com/news/magazine/2024/02/18/is-wall-street-to-blame-for-the-collapse-of-newspapers-00141920" target="_blank"> demolished local news</a> across the US. It's<a href="https://www.bostonglobe.com/2024/01/25/business/steward-health-care-mother-death/" target="_blank"> left hospitals full of bats</a> and<a href="https://www.bostonglobe.com/2024/01/25/business/steward-health-care-mother-death/" target="_blank"> increased mortality in retirement homes</a>. A<a href="https://pestakeholder.org/reports/private-equity-bankruptcy-tracker/" target="_blank"> report using S&P data</a> found that in 2024, private equity-backed companies accounted for more than 10% of all corporate bankruptcies and <em>over 50%</em> of bankruptcies with over $500 million in liabilities—but "despite their role in precipitating bankruptcies, private equity firms often emerge financially unscathed."</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:1024px;"><p class="vanilla-image-block" style="padding-top:71.78%;"><img id="e5m32waVVjCqE58sRktPAZ" name="GettyImages-932410628" alt="A Batman mascot waits to be interviewed by media at the Toys 'R' Us in Times Square March 15, 2018 in New York." src="https://cdn.mos.cms.futurecdn.net/e5m32waVVjCqE58sRktPAZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1024" height="735" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Toys 'R' Us announced its bankruptcy in 2018. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Timothy A. Clary/AFP via Getty Images)</span></figcaption></figure><p>"There have certainly been instances of this—the<a href="https://www.nytimes.com/2018/03/15/business/toys-r-us-bankruptcy.html" target="_blank"> 2017 bankruptcy of Toys 'R' Us</a> is top of mind for me," Venema said. "But there have been successful private equity buyouts, too."</p><p>Hilton, for example,<a href="https://www.sciencedirect.com/science/article/pii/S0929119922001602" target="_blank"> was arguably better off</a> in 2018 when Blackstone sold its remaining stake from its 2007 LBO—sometimes called "the best LBO ever" in financial circles. And Dell, Venema said, went from a $25 billion buyout in 2013 to being valued today at nearly $100 billion after going public again in 2018.</p><p>But in the games industry, we've seen other cases where private equity has caused carnage. Just this week, in addition to BioWare's closure and hundreds of layoffs at EA, Scum developer <a href="https://www.pcgamer.com/gaming-industry/splash-damage-acquired-this-studio-just-3-months-after-laying-off-a-bunch-of-people-now-its-laying-them-off-too/" target="_blank">Gamepires announced that it's laying off employees</a> after being acquired eight months ago by the Emona Capital-backed Splash Damage Group. Just a few weeks before acquiring Gamepires, Splash Damage had <a href="https://www.pcgamer.com/gaming-industry/2-months-after-being-acquired-by-private-equity-splash-damage-is-making-major-layoffs-so-it-can-remain-agile-even-though-it-hasnt-released-a-game-since-2020/" target="_blank">performed its own layoffs</a> in November 2025, only two months after it had been purchased in <em>its own private equity acquisition</em>.</p><h2 id="ea-39-s-uncertain-future">EA's uncertain future</h2><p>EA's fate may not be as dramatic as that of Toys 'R' Us. Saudi Arabia has invested heavily in gaming in recent years, and EA's sports games and shooters are opportunities for profit and global influence, even as triple-A gaming struggles with enormous budgets and increased competition for attention.</p><p>What we know for now is that, after laying off around 400 people, EA is continuing development of Marvel's Iron Man and the next Star Wars Jedi entry, as well as a Sims game codenamed "Project Evergreen"—though after BioWare's shuttering, Sims players are understandably concerned about what ideological pressures EA's new owners will exert on its developers. </p><p>EA Sports is of course not going anywhere, and Battlefield 6 and Apex will get continued support. And EA has confirmed that Respawn and DICE are collaborating on a new project, <a href="https://www.pcgamer.com/games/fps/ea-has-reportedly-put-dice-and-respawn-to-work-on-a-new-star-wars-battlefront-game/" target="_blank">rumored to be</a> the next Star Wars Battlefront.</p><p>But if EA still has any capacity to support the development of games outside of the most mainstream, highly-monetizable categories, it's tough to imagine it lasting.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Mass Effect 5 was set in a 'galactic Cold War,' new leak claims, and all 3 endings were wrapped into 1 ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Electronic Arts <a href="https://www.pcgamer.com/gaming-industry/rip-bioware-ea-has-shut-down-the-legendary-rpg-developer/" target="_blank">shuttered BioWare</a> earlier this week, and that sucked. A concept trailer for the Mass Effect game the studio had in development subsequently <a href="https://www.pcgamer.com/games/mass-effect/someone-leaked-a-mass-effect-5-trailer-and-now-i-feel-even-worse-because-it-looks-really-good/" target="_blank">leaked</a>, and that made everyone feel even worse because—keeping in mind that it was an early-development concept piece—it looked really good.</p><p>YouTuber Dantics has now revealed more about what BioWare was actually working on, which he claims to be aware of because he was part of the Mass Effect community council, meaning he "saw what BioWare was building, and provided feedback during development."</p><p>We haven't directly confirmed Dantics' role on the council, although others on social media have vouched for him, and BioWare community councils are definitely a real thing: The studio has referenced them in past <a href="https://blog.bioware.com/2022/02/23/game-update-dragon-age-in-production/" target="_blank">updates</a>, and they can also be seen in credits for games including <a href="https://www.mobygames.com/game/164405/mass-effect-legendary-edition/credits/windows/?autoplatform=true" target="_blank">Mass Effect: Legendary Edition</a> and <a href="https://www.mobygames.com/game/232711/dragon-age-the-veilguard/credits/playstation-5/?autoplatform=true" target="_blank">Dragon Age: The Veilguard</a>. Members of the ME5 council aren't known, but Mass Effect veteran Michael Gamble, the project lead on the next game, follows Dantics on X.</p><p>So, suitably caveated: Dantics said in a post on X that the next Mass Effect game was set 600 years after the Reaper War, and would put players in the role of a customizable N7 agent who would be "a cross between John Wick and James Bond." The galaxy in this future timeline was divided into three major factions: Humans, Batarians, Krogan, and others in one alliance, the "Council Races"—Asari, Salarians, and Turians—forming the second bloc, and the Geth emerging as the galaxy's third superpower. Instead of an existential crisis like the Reaper invasion, the new game would take place amidst a "galactic Cold War."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2113650069904003178"><p lang="en" dir="ltr">I can finally talk about Mass Effect Universe.Since Bioware closed I can now reveal that I was part of the Mass Effect Council, saw what BioWare was building, and provided feedback during development.• Set 600+ years after the Reaper War• You play as a customizable N7 agent• Instead of being a walking gun rack, you're a cross between John Wick and James Bond • Shepard's legacy preserved, regardless of your ending• A galaxy divided into three major factions• Humanity, Krogan, Batarians, and more allied together• Council races forming their own alliance• The Geth emerging as a third superpower• A galactic Cold War instead of another Reaper style invasion with a shadowy adversary• Geth-built megastructures• Connections between the Milky Way and Andromeda• Experimental technology implanted in you as a unique point of difference• Hacking and manipulating the environment• See through walls, identify systems, remotely trigger hazards and more• Handcrafted missions like ME1-3• But with Hitman-style freedom in how you complete them• Brutal close-range executions• Squadmates who can clash with each other• Romance wasn't being sanitised• Liara returns - now an incredibly powerful Asari MatriarchFrom what I saw, BioWare was making Mass Effect for us, the fans, not for people who don't exist. It looked incredible.And now we may never get to play it.Find out more here: https://t.co/kdWhbLdU0T#SaveMassEffect<a href="https://twitter.com/cantworkitout/status/2113650069904003178">October 23, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Dantics also said there would be connections between the Milky Way and Andromeda galaxies, that there would be "brutal close-range executions"—certainly something I want from my heroic space opera RPGs—that "romance wasn't being sanitized," which in the wake of Baldur's Gate 3 and Cyberpunk 2077 I assume means the full monty, and that Liara would return as a powerful Asari matriarch.</p><p>In a separate video, Dantics said the new game was being designed to accommodate all three Mass Effect endings, rather than committing to one of them as canon: 600 years into the future, the Reapers are "outdated tech," and thus not nearly the danger they were back in Shepard's day, and advances in cybernetics, which would be in common use, fit the synthesis ending. And if your Shepard opted to just blow everything up and survived the war, well, he didn't survive the passage of 600 years, although his "legacy" would have lived on.</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/ZOWrTNazZxM" allowfullscreen></iframe></div></div><p>I'm always a little iffy on fictional settings that extend themselves centuries into the past or future, and yet don't seem to meaningfully change: It bugged me in KOTOR, and it bugs me here. 600 years is a long time, but everyone's still walking around wearing the same clothes, shooting the same guns, and flying the same ships. Six centuries of technological evolution, and what did we get? The Normandy with aftermarket ground effects.</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="FJPZpPhvcXqQqquLRVnbDn" name="normandy" alt="Very Normandy-lookin' spaceship from the leaked Mass Effect: Universe trailer" src="https://cdn.mos.cms.futurecdn.net/FJPZpPhvcXqQqquLRVnbDn-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/FJPZpPhvcXqQqquLRVnbDn-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: BioWare/Electronic Arts)</span></figcaption></figure><p><em>(Forgive the resolution, the trailer is only 720p.)</em></p><p>Anyway, with that off my chest, Dantics' rundown of BioWare's plan for the game sounds pretty great: Similar enough to the Shepard trilogy to bring back fans put off by the poisoned well of Mass Effect: Andromeda, yet distant enough to enable BioWare to do new things. Not all that terribly new, obviously: <em>There's big trouble in the shadowy corners of the cosmos and we're sending our best super-shooter to clean it up (with a little help from his friends)</em>, well, that's just Mass Effect. But Mass Effect is what we want, and sometimes you just have to admit that 'more' is good enough.</p><p>Alas, it's almost certain there will be no more. Unless EA is willing to offload the Mass Effect property to someone (the <a href="https://www.pcgamer.com/games/mass-effect/canadian-politician-calls-on-government-to-help-bioware-employees-buy-the-studio-and-run-it-themselves/" target="_blank">government of Canada</a>, perhaps?)—and at this point it's shown no interest in doing so—then this is as close as we'll ever get to it.</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="16c4750c-cf2c-11f1-9e8b-57867ca38d8f" 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="16c4750c-cf2c-11f1-9e8b-57867ca38d8f" 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/mass-effect/mass-effect-5-was-set-in-a-galactic-cold-war-new-leak-claims-and-all-3-endings-were-wrapped-into-1/</link>
                                                                            <description>
                            <![CDATA[ The more I hear about what BioWare had cooking, the more pissed off I am that we're never going to get it. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">2sc4aA8fLaCo9z9DqPxkRc</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Crt9MrXnRKTkx7PBjmUocT-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 21:58:50 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Mass Effect]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                    <category><![CDATA[Action]]></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/Crt9MrXnRKTkx7PBjmUocT-1920-80.jpg">
                                                            <media:credit><![CDATA[BioWare/Electronic Arts]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Mass Effect 5 hero guy]]></media:description>                                                            <media:text><![CDATA[Mass Effect 5 hero guy]]></media:text>
                                <media:title type="plain"><![CDATA[Mass Effect 5 hero guy]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Crt9MrXnRKTkx7PBjmUocT-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Electronic Arts <a href="https://www.pcgamer.com/gaming-industry/rip-bioware-ea-has-shut-down-the-legendary-rpg-developer/" target="_blank">shuttered BioWare</a> earlier this week, and that sucked. A concept trailer for the Mass Effect game the studio had in development subsequently <a href="https://www.pcgamer.com/games/mass-effect/someone-leaked-a-mass-effect-5-trailer-and-now-i-feel-even-worse-because-it-looks-really-good/" target="_blank">leaked</a>, and that made everyone feel even worse because—keeping in mind that it was an early-development concept piece—it looked really good.</p><p>YouTuber Dantics has now revealed more about what BioWare was actually working on, which he claims to be aware of because he was part of the Mass Effect community council, meaning he "saw what BioWare was building, and provided feedback during development."</p><p>We haven't directly confirmed Dantics' role on the council, although others on social media have vouched for him, and BioWare community councils are definitely a real thing: The studio has referenced them in past <a href="https://blog.bioware.com/2022/02/23/game-update-dragon-age-in-production/" target="_blank">updates</a>, and they can also be seen in credits for games including <a href="https://www.mobygames.com/game/164405/mass-effect-legendary-edition/credits/windows/?autoplatform=true" target="_blank">Mass Effect: Legendary Edition</a> and <a href="https://www.mobygames.com/game/232711/dragon-age-the-veilguard/credits/playstation-5/?autoplatform=true" target="_blank">Dragon Age: The Veilguard</a>. Members of the ME5 council aren't known, but Mass Effect veteran Michael Gamble, the project lead on the next game, follows Dantics on X.</p><p>So, suitably caveated: Dantics said in a post on X that the next Mass Effect game was set 600 years after the Reaper War, and would put players in the role of a customizable N7 agent who would be "a cross between John Wick and James Bond." The galaxy in this future timeline was divided into three major factions: Humans, Batarians, Krogan, and others in one alliance, the "Council Races"—Asari, Salarians, and Turians—forming the second bloc, and the Geth emerging as the galaxy's third superpower. Instead of an existential crisis like the Reaper invasion, the new game would take place amidst a "galactic Cold War."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2113650069904003178"><p lang="en" dir="ltr">I can finally talk about Mass Effect Universe.Since Bioware closed I can now reveal that I was part of the Mass Effect Council, saw what BioWare was building, and provided feedback during development.• Set 600+ years after the Reaper War• You play as a customizable N7 agent• Instead of being a walking gun rack, you're a cross between John Wick and James Bond • Shepard's legacy preserved, regardless of your ending• A galaxy divided into three major factions• Humanity, Krogan, Batarians, and more allied together• Council races forming their own alliance• The Geth emerging as a third superpower• A galactic Cold War instead of another Reaper style invasion with a shadowy adversary• Geth-built megastructures• Connections between the Milky Way and Andromeda• Experimental technology implanted in you as a unique point of difference• Hacking and manipulating the environment• See through walls, identify systems, remotely trigger hazards and more• Handcrafted missions like ME1-3• But with Hitman-style freedom in how you complete them• Brutal close-range executions• Squadmates who can clash with each other• Romance wasn't being sanitised• Liara returns - now an incredibly powerful Asari MatriarchFrom what I saw, BioWare was making Mass Effect for us, the fans, not for people who don't exist. It looked incredible.And now we may never get to play it.Find out more here: https://t.co/kdWhbLdU0T#SaveMassEffect<a href="https://twitter.com/cantworkitout/status/2113650069904003178">October 23, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Dantics also said there would be connections between the Milky Way and Andromeda galaxies, that there would be "brutal close-range executions"—certainly something I want from my heroic space opera RPGs—that "romance wasn't being sanitized," which in the wake of Baldur's Gate 3 and Cyberpunk 2077 I assume means the full monty, and that Liara would return as a powerful Asari matriarch.</p><p>In a separate video, Dantics said the new game was being designed to accommodate all three Mass Effect endings, rather than committing to one of them as canon: 600 years into the future, the Reapers are "outdated tech," and thus not nearly the danger they were back in Shepard's day, and advances in cybernetics, which would be in common use, fit the synthesis ending. And if your Shepard opted to just blow everything up and survived the war, well, he didn't survive the passage of 600 years, although his "legacy" would have lived on.</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/ZOWrTNazZxM" allowfullscreen></iframe></div></div><p>I'm always a little iffy on fictional settings that extend themselves centuries into the past or future, and yet don't seem to meaningfully change: It bugged me in KOTOR, and it bugs me here. 600 years is a long time, but everyone's still walking around wearing the same clothes, shooting the same guns, and flying the same ships. Six centuries of technological evolution, and what did we get? The Normandy with aftermarket ground effects.</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="FJPZpPhvcXqQqquLRVnbDn" name="normandy" alt="Very Normandy-lookin' spaceship from the leaked Mass Effect: Universe trailer" src="https://cdn.mos.cms.futurecdn.net/FJPZpPhvcXqQqquLRVnbDn-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/FJPZpPhvcXqQqquLRVnbDn-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: BioWare/Electronic Arts)</span></figcaption></figure><p><em>(Forgive the resolution, the trailer is only 720p.)</em></p><p>Anyway, with that off my chest, Dantics' rundown of BioWare's plan for the game sounds pretty great: Similar enough to the Shepard trilogy to bring back fans put off by the poisoned well of Mass Effect: Andromeda, yet distant enough to enable BioWare to do new things. Not all that terribly new, obviously: <em>There's big trouble in the shadowy corners of the cosmos and we're sending our best super-shooter to clean it up (with a little help from his friends)</em>, well, that's just Mass Effect. But Mass Effect is what we want, and sometimes you just have to admit that 'more' is good enough.</p><p>Alas, it's almost certain there will be no more. Unless EA is willing to offload the Mass Effect property to someone (the <a href="https://www.pcgamer.com/games/mass-effect/canadian-politician-calls-on-government-to-help-bioware-employees-buy-the-studio-and-run-it-themselves/" target="_blank">government of Canada</a>, perhaps?)—and at this point it's shown no interest in doing so—then this is as close as we'll ever get to it.</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="16c4750c-cf2c-11f1-9e8b-57867ca38d8f" 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="16c4750c-cf2c-11f1-9e8b-57867ca38d8f" 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[ Based on player data, Capcom's pretty happy with the difficulty level of Onimusha: Way of the Sword: 'We think it's hit the right spot' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>One of the big topics of conversation around <a href="https://www.pcgamer.com/onimusha-way-of-the-sword/" target="_blank">Onimusha: Way of the Sword</a> when it released last month—and even before that, when Capcom first put out a demo of the game—was whether it was too easy. Viral clips of early game enemies standing around doing nothing gave the impression of a woefully easy game for action fans coming from the likes of Sekiro, Nioh or Ninja Gaiden. Once I played the full game, I found those fears <a href="https://www.pcgamer.com/games/action/worried-about-onimushas-difficulty-after-the-demo-i-have-the-death-count-to-prove-the-full-games-got-teeth/">mostly unfounded</a>, but it's true that Onimusha's basic enemies pose little threat compared to its bosses, and mostly serve as fodder for you to cut through as you explore.</p><p>Way of the Sword's harder difficulty option being locked behind beating the campaign didn't necessarily endear the game to hardcore action players, either, so I'm not shocked that one of the most popular downloads on the game's Nexusmods page is one <a href="https://www.nexusmods.com/onimushawayofthesword/mods/53?tab=description">that amps up enemy aggression</a>. </p><p>But I still <a href="https://www.pcgamer.com/games/action/onimusha-way-of-the-sword-review/">mostly loved Onimusha</a>, and didn't find myself craving the brutal difficulty of Sekiro or Nioh while I was playing it. With more than a month of hindsight to see how players have studied the blade, Capcom also seems pretty happy with the level of challenge it settled on.</p><p>"We've been looking at the data that comes back from people playing, so we can see where people are struggling and how they're progressing through the game. What we've seen in the trends in the data is that it's close to what we set out to achieve, in terms of difficulty," director Satoru Nihei said in an interview with PC Gamer.</p><p>Nihei elaborated that Capcom has observed players being able to progress through the story, but not entirely without friction.</p><p>"There are points where they do stumble, they do die, they do get defeated. But they're able to overcome that and progress. That was what we set out to achieve in terms of pitching the difficulty for the game: We wanted players to be able to progress through the story, but also have some challenge to it, so they get a sense of satisfaction from defeating enemies. It was never an intention for this game to be a particularly difficult game, like those other games you mentioned. We think it's hit the right spot in terms of the difficulty, in terms of where we wanted to place it."</p><p>My biggest criticism of Way of the Sword was its length, rather than its level of challenge. Its swordplay feels so good that I don't mind being able to run into a group of hapless enemies milling around the hub world of Kyoto and cut them down in a few seconds, but I did tire of Kyoto's generic sidequests, samey streets and how many times the game ultimately trotted out repeats of some of its boss fights. </p><p>Nihei said that Capcom has noted that feedback from other players, too. Ultimately the size of the game came from the priorities the dev team set out to meet early in development.</p><p>"We really wanted to have a game that was around the 20 hour mark. We didn't want to have a title that would be too small, but also looking at open world games that are 40 hours-plus, we didn't want to drag it out to that extent. So from the beginning there was this clear goal of … a mostly linear experience, and then we have the exploration elements for people who want to engage with them. That was what we set out to shoot for in terms of giving players enough volume to enjoy."</p><p>As for how many times you fight bosses like Byakue and Dohatsu-ten?</p><p>"We understand that some people might find fighting the same bosses to be a little draining, and it would've obviously been nice for us to be able to make a greater variety of bosses," Nihei said. "But also, at Capcom we want to make these very engaging, fun encounters that people can enjoy fighting again and again and again, so that was what we were aiming for when we created those bosses. But we've definitely heard the feedback."</p><div class="product"><a data-dimension112="d1a4bef6-cf2a-11f1-abc4-896b3d75bca8" 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="d1a4bef6-cf2a-11f1-abc4-896b3d75bca8" 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/action/based-on-player-data-capcoms-pretty-happy-with-the-difficulty-level-of-onimusha-way-of-the-sword-we-think-its-hit-the-right-spot/</link>
                                                                            <description>
                            <![CDATA[ Too easy, too hard, or just right? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">FKrNvv6r9HpLVttFajQKKf</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/m9jozBeHDcZQTCMZLJkNLd-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 21:43:44 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Action]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                <author><![CDATA[ wesley@pcgamer.com (Wes Fenlon) ]]></author>                    <dc:creator><![CDATA[ Wes Fenlon ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/oLoGHTuSZDFZX6QdzCTj4R-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Wes has been covering games and hardware for more than 10 years, first at tech sites like The Wirecutter and Tested before joining the PC Gamer team in 2014. Wes plays a little bit of everything, but he&#039;ll always jump at the chance to cover emulation and Japanese games.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not obsessively optimizing and re-optimizing a tangle of conveyor belts in Satisfactory (it&#039;s really becoming a problem), he&#039;s probably playing a 20-year-old Final Fantasy or some opaque ASCII roguelike. With a focus on writing and editing features, he seeks out personal stories and in-depth histories from the corners of PC gaming and its niche communities. 50% pizza by volume (deep dish, to be specific).&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;His lasting legacy on this earth may be &lt;a href=&quot;https://www.pcgamer.com/ive-somehow-been-wasding-wrong-my-whole-life/&quot; target=&quot;_blank&quot;&gt;using WASD wrong&lt;/a&gt; for his entire life.&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/m9jozBeHDcZQTCMZLJkNLd-1920-80.png">
                                                            <media:credit><![CDATA[Capcom]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[ A close-up of Onimusha&#039;s samurai Miyamoto Musashi]]></media:description>                                                            <media:text><![CDATA[ A close-up of Onimusha&#039;s samurai Miyamoto Musashi]]></media:text>
                                <media:title type="plain"><![CDATA[ A close-up of Onimusha&#039;s samurai Miyamoto Musashi]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/m9jozBeHDcZQTCMZLJkNLd-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>One of the big topics of conversation around <a href="https://www.pcgamer.com/onimusha-way-of-the-sword/" target="_blank">Onimusha: Way of the Sword</a> when it released last month—and even before that, when Capcom first put out a demo of the game—was whether it was too easy. Viral clips of early game enemies standing around doing nothing gave the impression of a woefully easy game for action fans coming from the likes of Sekiro, Nioh or Ninja Gaiden. Once I played the full game, I found those fears <a href="https://www.pcgamer.com/games/action/worried-about-onimushas-difficulty-after-the-demo-i-have-the-death-count-to-prove-the-full-games-got-teeth/">mostly unfounded</a>, but it's true that Onimusha's basic enemies pose little threat compared to its bosses, and mostly serve as fodder for you to cut through as you explore.</p><p>Way of the Sword's harder difficulty option being locked behind beating the campaign didn't necessarily endear the game to hardcore action players, either, so I'm not shocked that one of the most popular downloads on the game's Nexusmods page is one <a href="https://www.nexusmods.com/onimushawayofthesword/mods/53?tab=description">that amps up enemy aggression</a>. </p><p>But I still <a href="https://www.pcgamer.com/games/action/onimusha-way-of-the-sword-review/">mostly loved Onimusha</a>, and didn't find myself craving the brutal difficulty of Sekiro or Nioh while I was playing it. With more than a month of hindsight to see how players have studied the blade, Capcom also seems pretty happy with the level of challenge it settled on.</p><p>"We've been looking at the data that comes back from people playing, so we can see where people are struggling and how they're progressing through the game. What we've seen in the trends in the data is that it's close to what we set out to achieve, in terms of difficulty," director Satoru Nihei said in an interview with PC Gamer.</p><p>Nihei elaborated that Capcom has observed players being able to progress through the story, but not entirely without friction.</p><p>"There are points where they do stumble, they do die, they do get defeated. But they're able to overcome that and progress. That was what we set out to achieve in terms of pitching the difficulty for the game: We wanted players to be able to progress through the story, but also have some challenge to it, so they get a sense of satisfaction from defeating enemies. It was never an intention for this game to be a particularly difficult game, like those other games you mentioned. We think it's hit the right spot in terms of the difficulty, in terms of where we wanted to place it."</p><p>My biggest criticism of Way of the Sword was its length, rather than its level of challenge. Its swordplay feels so good that I don't mind being able to run into a group of hapless enemies milling around the hub world of Kyoto and cut them down in a few seconds, but I did tire of Kyoto's generic sidequests, samey streets and how many times the game ultimately trotted out repeats of some of its boss fights. </p><p>Nihei said that Capcom has noted that feedback from other players, too. Ultimately the size of the game came from the priorities the dev team set out to meet early in development.</p><p>"We really wanted to have a game that was around the 20 hour mark. We didn't want to have a title that would be too small, but also looking at open world games that are 40 hours-plus, we didn't want to drag it out to that extent. So from the beginning there was this clear goal of … a mostly linear experience, and then we have the exploration elements for people who want to engage with them. That was what we set out to shoot for in terms of giving players enough volume to enjoy."</p><p>As for how many times you fight bosses like Byakue and Dohatsu-ten?</p><p>"We understand that some people might find fighting the same bosses to be a little draining, and it would've obviously been nice for us to be able to make a greater variety of bosses," Nihei said. "But also, at Capcom we want to make these very engaging, fun encounters that people can enjoy fighting again and again and again, so that was what we were aiming for when we created those bosses. But we've definitely heard the feedback."</p><div class="product"><a data-dimension112="d1a4bef6-cf2a-11f1-abc4-896b3d75bca8" 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="d1a4bef6-cf2a-11f1-abc4-896b3d75bca8" 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[ Time could be running out for Arkane ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Arkane Lyon may soon be facing closure, according to a new report by French site <a href="https://www.lemonde.fr/pixels/article/2026/10/23/microsoft-veut-fermer-arkane-studio-de-jeu-video-lyonnais-ou-217-emplois-sont-menaces_6799072_4408996.html" target="_blank">Le Monde</a>, which says a deadline to find a buyer for the studio will land on November 13, at which point Microsoft could close the studio outright. Microsoft has since extended that deadline by a month, however, so it can continue to pursue alternative options.</p><p>Arkane Lyon was caught up in this year's vortex of Xbox layoffs, <a href="https://www.pcgamer.com/gaming-industry/xbox-is-laying-off-3-200-people-and-dumping-4-studios/" target="_blank">announced in July</a>, which will see roughly 3,200 people put out of work. Xbox also dumped four studios: <a href="https://www.pcgamer.com/gaming-industry/only-the-survival-of-our-studio-would-make-us-consider-such-a-painful-action-tim-schafer-announces-double-fine-layoffs-just-3-weeks-after-xbox-cut-it-loose/" target="_blank">Double Fine</a>, <a href="https://www.pcgamer.com/gaming-industry/one-week-after-going-independent-in-the-xbox-bloodbath-south-of-midnight-developer-compulsion-games-is-looking-for-work/" target="_blank">Compulsion Games</a>, and <a href="https://www.pcgamer.com/gaming-industry/do-you-want-the-good-news-or-the-bad-news-about-undead-labs/" target="_blank">Undead Labs</a> all went independent (and almost immediately laid off large numbers of employees) while Hellblade developer <a href="https://www.pcgamer.com/gaming-industry/industry-layoff-watch-supermassive-ninja-theory-the-coalition-and-a-warning-from-warhorse/" target="_blank">Ninja Theory</a> appears to be closing outright. Because Arkane is based in France, Xbox couldn't just drop the hammer on it. Instead, it began a legally-required consultation process "to review potential strategic options."</p><p>The Le Monde report says that on July 16, 10 days after the Xbox layoffs were announced, Arkane management informed employees that Xbox intended to close the studio. France's "<a href="https://www.florange-opportunites.fr/en/content/13-the-florange-law" target="_blank">Florange Law</a>," however, requires companies with more than 1,000 employees who want to close a facility to undertake a search for a buyer first.</p><p>The deadline for that requirement in Arkane's case is November 13, after which Xbox will presumably be free to close the studio. That option is definitely on the table: The Le Monde report says documents signed in July and published on a French government website on August 10 specifically reference "the plan for the complete and permanent cessation of the company's activities" and "the subsequent plan for the dismissal of all employees for economic reasons."  </p><p>The report also says the <a href="https://www.printemps-ecologique.fr/" target="_blank">Printemps Écologique</a> and the <a href="https://www.stjv.fr/en/" target="_blank">Syndicat des Travailleureuses du Jeu Vidéo</a> (STJV) unions were seeking to have the November consultation deadline extended to allow for redundancy negotiations and the buyer search to continue, and that has now happened. </p><p>"We have extended the consultation period by one additional month as we explore options, including finding a partner to support the studio through the development work still ahead," a Microsoft representative told PC Gamer, referring to the <a href="https://www.pcgamer.com/blade/" target="_blank">Marvel's Blade</a> game currently in development at Arkane. "This is a defined extension, and we remain committed to keeping the Works Council informed throughout the process."</p><p>Regarding the documents referencing the planned closure of Arkane should a buyer not be found, the rep said that they "are part of the required consultation process and do not represent a final decision."</p><p>The Le Monde report says 217 people are employed by Arkane. Sources close to the studio say that despite being announced three years ago, at the 2023 Game Awards, Marvel's Blade still has years to go before development will be complete.</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="daa24d7e-cf1c-11f1-b1e4-17766e628203" 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="daa24d7e-cf1c-11f1-b1e4-17766e628203" 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/gaming-industry/time-could-be-running-out-for-arkane/</link>
                                                                            <description>
                            <![CDATA[ The famed immersive sim studio just got an extra month to find a new buyer, but will likely close if there are no takers. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">4N8aSPFiskwT4TC2BgQ2GZ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/xpZT8qFrjD2JgUPKy2RxLa-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 20:07:21 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Industry]]></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/xpZT8qFrjD2JgUPKy2RxLa-1920-80.jpg">
                                                            <media:credit><![CDATA[Arkane]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Dishonored: Death of the Outsider - Billie Lurk]]></media:description>                                                            <media:text><![CDATA[Dishonored: Death of the Outsider - Billie Lurk]]></media:text>
                                <media:title type="plain"><![CDATA[Dishonored: Death of the Outsider - Billie Lurk]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/xpZT8qFrjD2JgUPKy2RxLa-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Arkane Lyon may soon be facing closure, according to a new report by French site <a href="https://www.lemonde.fr/pixels/article/2026/10/23/microsoft-veut-fermer-arkane-studio-de-jeu-video-lyonnais-ou-217-emplois-sont-menaces_6799072_4408996.html" target="_blank">Le Monde</a>, which says a deadline to find a buyer for the studio will land on November 13, at which point Microsoft could close the studio outright. Microsoft has since extended that deadline by a month, however, so it can continue to pursue alternative options.</p><p>Arkane Lyon was caught up in this year's vortex of Xbox layoffs, <a href="https://www.pcgamer.com/gaming-industry/xbox-is-laying-off-3-200-people-and-dumping-4-studios/" target="_blank">announced in July</a>, which will see roughly 3,200 people put out of work. Xbox also dumped four studios: <a href="https://www.pcgamer.com/gaming-industry/only-the-survival-of-our-studio-would-make-us-consider-such-a-painful-action-tim-schafer-announces-double-fine-layoffs-just-3-weeks-after-xbox-cut-it-loose/" target="_blank">Double Fine</a>, <a href="https://www.pcgamer.com/gaming-industry/one-week-after-going-independent-in-the-xbox-bloodbath-south-of-midnight-developer-compulsion-games-is-looking-for-work/" target="_blank">Compulsion Games</a>, and <a href="https://www.pcgamer.com/gaming-industry/do-you-want-the-good-news-or-the-bad-news-about-undead-labs/" target="_blank">Undead Labs</a> all went independent (and almost immediately laid off large numbers of employees) while Hellblade developer <a href="https://www.pcgamer.com/gaming-industry/industry-layoff-watch-supermassive-ninja-theory-the-coalition-and-a-warning-from-warhorse/" target="_blank">Ninja Theory</a> appears to be closing outright. Because Arkane is based in France, Xbox couldn't just drop the hammer on it. Instead, it began a legally-required consultation process "to review potential strategic options."</p><p>The Le Monde report says that on July 16, 10 days after the Xbox layoffs were announced, Arkane management informed employees that Xbox intended to close the studio. France's "<a href="https://www.florange-opportunites.fr/en/content/13-the-florange-law" target="_blank">Florange Law</a>," however, requires companies with more than 1,000 employees who want to close a facility to undertake a search for a buyer first.</p><p>The deadline for that requirement in Arkane's case is November 13, after which Xbox will presumably be free to close the studio. That option is definitely on the table: The Le Monde report says documents signed in July and published on a French government website on August 10 specifically reference "the plan for the complete and permanent cessation of the company's activities" and "the subsequent plan for the dismissal of all employees for economic reasons."  </p><p>The report also says the <a href="https://www.printemps-ecologique.fr/" target="_blank">Printemps Écologique</a> and the <a href="https://www.stjv.fr/en/" target="_blank">Syndicat des Travailleureuses du Jeu Vidéo</a> (STJV) unions were seeking to have the November consultation deadline extended to allow for redundancy negotiations and the buyer search to continue, and that has now happened. </p><p>"We have extended the consultation period by one additional month as we explore options, including finding a partner to support the studio through the development work still ahead," a Microsoft representative told PC Gamer, referring to the <a href="https://www.pcgamer.com/blade/" target="_blank">Marvel's Blade</a> game currently in development at Arkane. "This is a defined extension, and we remain committed to keeping the Works Council informed throughout the process."</p><p>Regarding the documents referencing the planned closure of Arkane should a buyer not be found, the rep said that they "are part of the required consultation process and do not represent a final decision."</p><p>The Le Monde report says 217 people are employed by Arkane. Sources close to the studio say that despite being announced three years ago, at the 2023 Game Awards, Marvel's Blade still has years to go before development will be complete.</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="daa24d7e-cf1c-11f1-b1e4-17766e628203" 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="daa24d7e-cf1c-11f1-b1e4-17766e628203" 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[ It's our new daily game fixation and we all stink at it: Can you guess how much used cars cost? ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I'm always on the lookout for a new daily game I can play on my phone because, quite honestly, I'll do just about anything to delay getting out of bed for just a few more minutes in the morning. If you're into <a href="https://www.pcgamer.com/best-games-like-wordle/">games like Wordle</a> but are looking for an interesting new twist, here's a pitch:</p><p><em>Wordle, but it's about pricing used cars </em></p><p>Congratulations on your new job at <a href="https://dailylowball.com/guess-the-price">The Daily Lowball</a>, a used car lot where you have to prove to your boss that you know how much second-hand vehicles are worth. Each day in the puzzle, you're served up five real cars complete with photos and stats: the make and model, what year it's from, how many miles it's got on it, and how much it sold for when it was new. </p><p>Then you enter a guess how much you think each used car was sold for on the date shown. You're graded from A-F on your guesses by your virtual boss, and if you want to keep your daily streak intact, you'd better be accurate. Perform poorly enough on any given day, or string a few bad days together, and you're fired—you'll have to start your streak over.</p><p>It's an easy game to grasp but boy, we here at PC Gamer sure stink at it. My first day on the lot wasn't so smooth after I completely misjudged the resale price of a 2014 Audi Allroad Quattro and utterly biffed my guess on a cherry red 2005 Dodge Neon SRT-4. I did a little better on the 2008 Mercury Grand Marquis and the 2001 Porsche Boxter, and actually nailed the 2001 GMC Yukon. That gave me a C average for the day, so at least my streak has begun.</p><p>The other members of PC Gamer I sent the puzzle to didn't fare that well, either. I won't name and shame but there were two Ds and one F among my coworkers. If I'm the lone car guy at PCG, we're all in trouble.</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:1831px;"><p class="vanilla-image-block" style="padding-top:60.73%;"><img id="WmdYXH7wvTDyuzv5BiSFbh" name="cars2" alt="A used-car price guessing game" src="https://cdn.mos.cms.futurecdn.net/WmdYXH7wvTDyuzv5BiSFbh-1920-80.jpg" mos="" align="middle" fullscreen="" width="1831" height="1112" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: The Daily Lowball)</span></figcaption></figure><p>Turns out it's fun to peer at used cars and try to figure out what they're worth, or at least what some real-world person <em>thought</em> they were worth when they bought them. And questions abound while I played a few more past puzzles, like "How does someone only have 8,000 miles on their 1985 Mazda RX-7? What, do they live in a walkable city or something? Insanity."</p><p>The site has a few other daily car-based games, like "Steal or Bad Deal" where you judge whether someone paid an acceptable amount for a used car or got ripped off, "Higher or Lower" where you're presented with two cars and have to guess which is more expensive, and a licence plate slot machine game where you try to roll a rare plate every day. Check out <a href="https://dailylowball.com/">The Daily Lowball</a> for yourself, and feel free to share your results in the comments.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/puzzle/its-our-new-daily-game-fixation-and-we-all-stink-at-it-can-you-guess-how-much-used-cars-cost/</link>
                                                                            <description>
                            <![CDATA[ Like Wordle, but it's about pricing used cars. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">jSPN9ofbdnFeDsLFA99i86</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/CkSRofcVfRDVfyHuKaQrYi-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 19:37:16 +0000</pubDate>                                                                                                                                <updated>Fri, 23 Oct 2026 19:37:20 +0000</updated>
                                                                                                                                            <category><![CDATA[Puzzle]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                <author><![CDATA[ clivingston@pcgamer.com (Christopher Livingston) ]]></author>                    <dc:creator><![CDATA[ Christopher Livingston ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/vMPWcamtj9aoVBYFtt2Hp7-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/CkSRofcVfRDVfyHuKaQrYi-1920-80.jpg">
                                                            <media:credit><![CDATA[The Daily Lowball]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A used sportscar for sale with a field to guess the price]]></media:description>                                                            <media:text><![CDATA[A used sportscar for sale with a field to guess the price]]></media:text>
                                <media:title type="plain"><![CDATA[A used sportscar for sale with a field to guess the price]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/CkSRofcVfRDVfyHuKaQrYi-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I'm always on the lookout for a new daily game I can play on my phone because, quite honestly, I'll do just about anything to delay getting out of bed for just a few more minutes in the morning. If you're into <a href="https://www.pcgamer.com/best-games-like-wordle/">games like Wordle</a> but are looking for an interesting new twist, here's a pitch:</p><p><em>Wordle, but it's about pricing used cars </em></p><p>Congratulations on your new job at <a href="https://dailylowball.com/guess-the-price">The Daily Lowball</a>, a used car lot where you have to prove to your boss that you know how much second-hand vehicles are worth. Each day in the puzzle, you're served up five real cars complete with photos and stats: the make and model, what year it's from, how many miles it's got on it, and how much it sold for when it was new. </p><p>Then you enter a guess how much you think each used car was sold for on the date shown. You're graded from A-F on your guesses by your virtual boss, and if you want to keep your daily streak intact, you'd better be accurate. Perform poorly enough on any given day, or string a few bad days together, and you're fired—you'll have to start your streak over.</p><p>It's an easy game to grasp but boy, we here at PC Gamer sure stink at it. My first day on the lot wasn't so smooth after I completely misjudged the resale price of a 2014 Audi Allroad Quattro and utterly biffed my guess on a cherry red 2005 Dodge Neon SRT-4. I did a little better on the 2008 Mercury Grand Marquis and the 2001 Porsche Boxter, and actually nailed the 2001 GMC Yukon. That gave me a C average for the day, so at least my streak has begun.</p><p>The other members of PC Gamer I sent the puzzle to didn't fare that well, either. I won't name and shame but there were two Ds and one F among my coworkers. If I'm the lone car guy at PCG, we're all in trouble.</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:1831px;"><p class="vanilla-image-block" style="padding-top:60.73%;"><img id="WmdYXH7wvTDyuzv5BiSFbh" name="cars2" alt="A used-car price guessing game" src="https://cdn.mos.cms.futurecdn.net/WmdYXH7wvTDyuzv5BiSFbh-1920-80.jpg" mos="" align="middle" fullscreen="" width="1831" height="1112" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: The Daily Lowball)</span></figcaption></figure><p>Turns out it's fun to peer at used cars and try to figure out what they're worth, or at least what some real-world person <em>thought</em> they were worth when they bought them. And questions abound while I played a few more past puzzles, like "How does someone only have 8,000 miles on their 1985 Mazda RX-7? What, do they live in a walkable city or something? Insanity."</p><p>The site has a few other daily car-based games, like "Steal or Bad Deal" where you judge whether someone paid an acceptable amount for a used car or got ripped off, "Higher or Lower" where you're presented with two cars and have to guess which is more expensive, and a licence plate slot machine game where you try to roll a rare plate every day. Check out <a href="https://dailylowball.com/">The Daily Lowball</a> for yourself, and feel free to share your results in the comments.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Creative Assembly exec pins the blame for the Shogun 2 remaster mess on someone else: 'This was not a Creative Assembly developed game' ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.pcgamer.com/games/strategy/the-best-total-war-game-is-getting-a-remaster-with-50-newly-playable-factions-modern-visuals-and-a-full-japanese-voiceover/" target="_blank">Excitement</a> over the Total War: Shogun 2 remaster turned to a very different emotion when it launched and turned out to be <a href="https://www.pcgamer.com/games/strategy/shogun-2-deserved-better/" target="_blank">quite bad</a>—so bad that Sega <a href="https://www.pcgamer.com/games/strategy/the-shogun-2-remaster-is-so-bad-sega-is-removing-it-from-sale-and-bringing-back-the-original/" target="_blank">pulled it from sale</a> just a couple days later. Now, Roger Collum, vice president of Total War at developer Creative Assembly, has posted an update on the situation in the <a href="https://www.reddit.com/r/totalwar/comments/1xd9us4/an_update_from_roger_on_shogun_2_complete_edition/" target="_blank">Total War subreddit</a> (via <a href="https://www.rockpapershotgun.com/this-was-not-a-creative-assembly-developed-game-total-war-boss-points-the-finger-at-external-partner-for-shogun-2-complete-edition-disaster" target="_blank">RPS</a>), saying that the studio, like the fans, are "angry and disappointed" about the state of the game—which he says is not really CA's fault.</p><p>"This was not a Creative Assembly developed game," Collum wrote. "It wasn’t subject to our same internal reviews and quality assurance. We took our eyes off its external development, with all our teams focused on our next big projects. However, whatever the development arrangements, Total War is our franchise and our name is on it.</p><p>"The studio is full of craft people who care deeply about the experiences we give to our players. Shogun 2—CE did not meet that bar. We have to own that and we have to fix it."</p><p>Collum also addressed complaints about the apparent use of generative AI in the remaster, saying that Creative Assembly is a "craft studio," and that while it uses AI tools for tasks like "analysis, debugging, or speedy prototyping," it does not use generative AI to create in-game assets. "We demand the same of any external developers we work with," he wrote. "The situation with Shogun 2: Complete Edition is being investigated."</p><p>Collum didn't name the external developer of the Shogun 2 remaster, but the <a href="https://store.steampowered.com/app/3846830/Total_War_SHOGUN_2_Complete_Edition/" target="_blank">Steam page</a> lists Warsaw-based Mataboo as the second studio on the project. <a href="https://mataboo.com/index.html" target="_blank">Mataboo's website</a> says it provides "complete end-to-end game development support," with services ranging from design and tool development to porting, optimization, compliance Q&A, and maintenance, on both PC and consoles. The studio has previously worked on games including The Blood of Dawnwalker, Silent Hill 2, Suicide Squad: Kill the Justice League, The Lord of the Rings: Gollum, The Medium, and numerous others.</p><p>Collum's statement doesn't appear to be going down perfectly smoothly among Total War fans. Many responses say that Creative Assembly is ultimately responsible for the game that goes out the door, and that the issues in the Shogun 2 remaster aren't small, intermittent, or otherwise easy to miss. Others point out that Creative Assembly's promotional efforts included a <a href="https://www.youtube.com/live/WerGrR-WbYo?t=665s" target="_blank">pre-launch livestream</a> in which employees enthused about the game, apparently without having played it to any meaningful extent.</p><p>Collum concluded by asking fans not to direct their anger at individual developers. "As a team, we want to be transparent with our communications as much as possible, but that cannot be at the expense of the safety of our people," he wrote. "Please help keep Total War’s community spaces constructive and safe for everyone.</p><p>"I’ve said it before: when the team does well, it’s all about them. When we get it wrong, it’s on me. You absolutely have the right to be mad, and to criticise us, but direct it at me. We know we must earn your trust by making good games, and crucially, by how we respond when we get things wrong. We’re human, we will get things wrong, and I promise as long as I’m here, when that happens, we’ll hold our hands up and try to make it right."</p><p>"A small team of senior developers" from Creative Assembly are now working with Sega and the unnamed external studio to figure out where to go from here.</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="aacf6ec8-cf18-11f1-87b6-c5895c10f748" 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="aacf6ec8-cf18-11f1-87b6-c5895c10f748" 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/strategy/creative-assembly-exec-pins-the-blame-for-the-shogun-2-remaster-mess-on-someone-else-this-was-not-a-creative-assembly-developed-game/</link>
                                                                            <description>
                            <![CDATA[ Roger Collum says Creative Assembly was "focused on our next big projects," and didn't pay enough attention to the work being done by an "external developer." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">748ycdMz8xzSo7KqmtWPjR</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/RHZVhJS7mGHS2pRTD7rBsk-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 19:35:17 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Strategy]]></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/RHZVhJS7mGHS2pRTD7rBsk-1920-80.jpg">
                                                            <media:credit><![CDATA[Sega]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Shogun 2 artwork showing generals facing off.]]></media:description>                                                            <media:text><![CDATA[Shogun 2 artwork showing generals facing off.]]></media:text>
                                <media:title type="plain"><![CDATA[Shogun 2 artwork showing generals facing off.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/RHZVhJS7mGHS2pRTD7rBsk-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.pcgamer.com/games/strategy/the-best-total-war-game-is-getting-a-remaster-with-50-newly-playable-factions-modern-visuals-and-a-full-japanese-voiceover/" target="_blank">Excitement</a> over the Total War: Shogun 2 remaster turned to a very different emotion when it launched and turned out to be <a href="https://www.pcgamer.com/games/strategy/shogun-2-deserved-better/" target="_blank">quite bad</a>—so bad that Sega <a href="https://www.pcgamer.com/games/strategy/the-shogun-2-remaster-is-so-bad-sega-is-removing-it-from-sale-and-bringing-back-the-original/" target="_blank">pulled it from sale</a> just a couple days later. Now, Roger Collum, vice president of Total War at developer Creative Assembly, has posted an update on the situation in the <a href="https://www.reddit.com/r/totalwar/comments/1xd9us4/an_update_from_roger_on_shogun_2_complete_edition/" target="_blank">Total War subreddit</a> (via <a href="https://www.rockpapershotgun.com/this-was-not-a-creative-assembly-developed-game-total-war-boss-points-the-finger-at-external-partner-for-shogun-2-complete-edition-disaster" target="_blank">RPS</a>), saying that the studio, like the fans, are "angry and disappointed" about the state of the game—which he says is not really CA's fault.</p><p>"This was not a Creative Assembly developed game," Collum wrote. "It wasn’t subject to our same internal reviews and quality assurance. We took our eyes off its external development, with all our teams focused on our next big projects. However, whatever the development arrangements, Total War is our franchise and our name is on it.</p><p>"The studio is full of craft people who care deeply about the experiences we give to our players. Shogun 2—CE did not meet that bar. We have to own that and we have to fix it."</p><p>Collum also addressed complaints about the apparent use of generative AI in the remaster, saying that Creative Assembly is a "craft studio," and that while it uses AI tools for tasks like "analysis, debugging, or speedy prototyping," it does not use generative AI to create in-game assets. "We demand the same of any external developers we work with," he wrote. "The situation with Shogun 2: Complete Edition is being investigated."</p><p>Collum didn't name the external developer of the Shogun 2 remaster, but the <a href="https://store.steampowered.com/app/3846830/Total_War_SHOGUN_2_Complete_Edition/" target="_blank">Steam page</a> lists Warsaw-based Mataboo as the second studio on the project. <a href="https://mataboo.com/index.html" target="_blank">Mataboo's website</a> says it provides "complete end-to-end game development support," with services ranging from design and tool development to porting, optimization, compliance Q&A, and maintenance, on both PC and consoles. The studio has previously worked on games including The Blood of Dawnwalker, Silent Hill 2, Suicide Squad: Kill the Justice League, The Lord of the Rings: Gollum, The Medium, and numerous others.</p><p>Collum's statement doesn't appear to be going down perfectly smoothly among Total War fans. Many responses say that Creative Assembly is ultimately responsible for the game that goes out the door, and that the issues in the Shogun 2 remaster aren't small, intermittent, or otherwise easy to miss. Others point out that Creative Assembly's promotional efforts included a <a href="https://www.youtube.com/live/WerGrR-WbYo?t=665s" target="_blank">pre-launch livestream</a> in which employees enthused about the game, apparently without having played it to any meaningful extent.</p><p>Collum concluded by asking fans not to direct their anger at individual developers. "As a team, we want to be transparent with our communications as much as possible, but that cannot be at the expense of the safety of our people," he wrote. "Please help keep Total War’s community spaces constructive and safe for everyone.</p><p>"I’ve said it before: when the team does well, it’s all about them. When we get it wrong, it’s on me. You absolutely have the right to be mad, and to criticise us, but direct it at me. We know we must earn your trust by making good games, and crucially, by how we respond when we get things wrong. We’re human, we will get things wrong, and I promise as long as I’m here, when that happens, we’ll hold our hands up and try to make it right."</p><p>"A small team of senior developers" from Creative Assembly are now working with Sega and the unnamed external studio to figure out where to go from here.</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="aacf6ec8-cf18-11f1-87b6-c5895c10f748" 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="aacf6ec8-cf18-11f1-87b6-c5895c10f748" 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[ 'Every single week it's going to feel like the sky is falling': Cloudflare CEO says strap in for 'a couple years' of AI-powered internet security mayhem ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you spent much time online this week, you likely noticed how it briefly felt like the end of days as government websites, <a href="https://www.pcgamer.com/software/security/gog-taken-offline-for-maintenance-in-wake-of-php-security-emergency/" target="_blank">game marketplaces</a>, and furry image boards alike were pulled offline in a scramble to address newly-discovered security vulnerabilities in PHP—a scripting language used by roughly 70% of the world's websites, <a href="https://w3techs.com/technologies/details/pl-php" target="_blank">according to some estimates</a>.</p><p>It was a harrowing incident, revealing flaws in foundational internet infrastructure that might have turned some of the most popular web destinations into attack vectors. And in an interview with Reuters, Cloudflare CEO Matthew Prince says we should expect to see similar episodes on a regular basis in the years ahead as LLM technologies accelerate the discovery of exploitable security vulnerabilities.</p><p>Prince said that Cloudflare—a major cloud networking and cybersecurity provider that a <a href="https://w3techs.com/technologies/details/cn-cloudflare" target="_blank">number of websites</a> rely on—is aware of "a bunch of additional severe vulnerabilities that are present in other pieces of critical software" like those that triggered the PHP panic earlier this week. And as both cybersecurity experts and bad actors task LLMs with identifying previously unrecognized weaknesses in the core technologies of the internet, there will likely be more to follow.</p><p>"I think we're going to have a couple years where every single week it's going to feel like the sky is falling," Prince said.</p><p>Previously, the rate at which exploitable flaws in software could be identified was limited by the finite number of experts able and willing to devote the necessary time and attention. Likewise for those seeking to weaponize those flaws.</p><p>For a user directing a workforce of LLM agents, however, those limitations are less relevant. Wiz Research, one of the firms that identified the recent PHP exploits with the assistance of LLM tools, wrote in a <a href="https://www.wiz.io/blog/php2shell-php-rce" target="_blank">blog detailing its findings</a> that "the economics of both discovery and exploitation" have changed.</p><p>"Frontier models were critical to making this process practical, enabling us to develop and adapt working exploits across multiple applications in hours," Wiz Research said. "As the time and expertise required for this work decrease, complexity may no longer provide a meaningful barrier, changing how we define what is vulnerable in practice."</p><p>But while Prince expects busy months ahead for those whose job it is to address the rising tide of LLM-empowered exploits, he said it will—in the long term—lead to more secure software as those newly-identified vulnerabilities are patched.</p><p>"The reality is, we're going to get a lot of this stuff cleaned up," he said.</p><p>In the short term, however, my advice is to stay on top of your browser and app updates. In the years ahead, some extra paranoia won't hurt.</p><div class="product"><a data-dimension112="5af6fb60-cf17-11f1-a963-236660520a90" 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="5af6fb60-cf17-11f1-a963-236660520a90" 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/software/security/every-single-week-its-going-to-feel-like-the-sky-is-falling-cloudflare-ceo-says-strap-in-for-a-couple-years-of-ai-powered-internet-security-mayhem/</link>
                                                                            <description>
                            <![CDATA[ This week's PHP crisis is likely just the first of many. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">c6ZV384XgcTYsvZJgEsaCJ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/XKCfWTAL3exAS4RH8dg8pX-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 19:24:34 +0000</pubDate>                                                                                                                                <updated>Fri, 23 Oct 2026 23:00:17 +0000</updated>
                                                                                                                                            <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                <author><![CDATA[ lincoln.carpenter@futurenet.com (Lincoln Carpenter) ]]></author>                    <dc:creator><![CDATA[ Lincoln Carpenter ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/FPyrdqJC7WX382U9Ubt8Ee-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/XKCfWTAL3exAS4RH8dg8pX-1920-80.jpg">
                                                            <media:credit><![CDATA[Valve]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Medic from TF2 facepalms at a computer.]]></media:description>                                                            <media:text><![CDATA[Medic from TF2 facepalms at a computer.]]></media:text>
                                <media:title type="plain"><![CDATA[Medic from TF2 facepalms at a computer.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/XKCfWTAL3exAS4RH8dg8pX-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you spent much time online this week, you likely noticed how it briefly felt like the end of days as government websites, <a href="https://www.pcgamer.com/software/security/gog-taken-offline-for-maintenance-in-wake-of-php-security-emergency/" target="_blank">game marketplaces</a>, and furry image boards alike were pulled offline in a scramble to address newly-discovered security vulnerabilities in PHP—a scripting language used by roughly 70% of the world's websites, <a href="https://w3techs.com/technologies/details/pl-php" target="_blank">according to some estimates</a>.</p><p>It was a harrowing incident, revealing flaws in foundational internet infrastructure that might have turned some of the most popular web destinations into attack vectors. And in an interview with Reuters, Cloudflare CEO Matthew Prince says we should expect to see similar episodes on a regular basis in the years ahead as LLM technologies accelerate the discovery of exploitable security vulnerabilities.</p><p>Prince said that Cloudflare—a major cloud networking and cybersecurity provider that a <a href="https://w3techs.com/technologies/details/cn-cloudflare" target="_blank">number of websites</a> rely on—is aware of "a bunch of additional severe vulnerabilities that are present in other pieces of critical software" like those that triggered the PHP panic earlier this week. And as both cybersecurity experts and bad actors task LLMs with identifying previously unrecognized weaknesses in the core technologies of the internet, there will likely be more to follow.</p><p>"I think we're going to have a couple years where every single week it's going to feel like the sky is falling," Prince said.</p><p>Previously, the rate at which exploitable flaws in software could be identified was limited by the finite number of experts able and willing to devote the necessary time and attention. Likewise for those seeking to weaponize those flaws.</p><p>For a user directing a workforce of LLM agents, however, those limitations are less relevant. Wiz Research, one of the firms that identified the recent PHP exploits with the assistance of LLM tools, wrote in a <a href="https://www.wiz.io/blog/php2shell-php-rce" target="_blank">blog detailing its findings</a> that "the economics of both discovery and exploitation" have changed.</p><p>"Frontier models were critical to making this process practical, enabling us to develop and adapt working exploits across multiple applications in hours," Wiz Research said. "As the time and expertise required for this work decrease, complexity may no longer provide a meaningful barrier, changing how we define what is vulnerable in practice."</p><p>But while Prince expects busy months ahead for those whose job it is to address the rising tide of LLM-empowered exploits, he said it will—in the long term—lead to more secure software as those newly-identified vulnerabilities are patched.</p><p>"The reality is, we're going to get a lot of this stuff cleaned up," he said.</p><p>In the short term, however, my advice is to stay on top of your browser and app updates. In the years ahead, some extra paranoia won't hurt.</p><div class="product"><a data-dimension112="5af6fb60-cf17-11f1-a963-236660520a90" 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="5af6fb60-cf17-11f1-a963-236660520a90" 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[ 'I'm forever grateful to BioWare': 16 game developers share the moment a BioWare game inspired them to join the industry ]]></title>
                                                                                                <dc:content><![CDATA[ <h2 class="article-body__section" id="section-early-bioware"><span>Early BioWare</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:2506px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="opMJnceRwP9hBS8cFvjaUZ" name="wallpaper_neverwinter_nights_11_2560x1440.jpg" alt="Neverwinter Nights Aribeth de Tylmarande holding a sword and flag" src="https://cdn.mos.cms.futurecdn.net/opMJnceRwP9hBS8cFvjaUZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2506" height="1410" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: BioWare)</span></figcaption></figure><h2 class="article-body__section" id="section-star-wars-knights-of-the-old-republic"><span>Star Wars: Knights of the Old Republic</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:1280px;"><p class="vanilla-image-block" style="padding-top:62.81%;"><img id="S57Q5LsddPvWAdi8VoaAC" name="kotor art.jpg" alt="Knights of the Old Republic key art" src="https://cdn.mos.cms.futurecdn.net/S57Q5LsddPvWAdi8VoaAC-1920-80.jpg" mos="" align="middle" fullscreen="" width="1280" height="804" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: BioWare)</span></figcaption></figure><h2 class="article-body__section" id="section-dragon-age"><span>Dragon Age</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:4096px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jphEnnDvBPnUPrK9ib3YjM" name="Hero_1" alt="Morrigan, the Witch of the Wilds in the Dragon Age serries, shown wielding magic in front of a Darkspawn." src="https://cdn.mos.cms.futurecdn.net/jphEnnDvBPnUPrK9ib3YjM-1920-80.jpg" mos="" align="middle" fullscreen="" width="4096" height="2304" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: BioWare)</span></figcaption></figure><h2 class="article-body__section" id="section-mass-effect"><span>Mass Effect</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="Kg5RjzKJxyqGmdsCm8Mun6" name="masseffect-shepard" alt="Mass Effect protagonist in N7 armor on a space background" src="https://cdn.mos.cms.futurecdn.net/Kg5RjzKJxyqGmdsCm8Mun6-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: Electronic Arts)</span></figcaption></figure><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1267px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="QgTXe6UiLfo6ypVyNrvKz8" name="mass effect timeline.jpg" alt="Mass Effect cast artwork" src="https://cdn.mos.cms.futurecdn.net/QgTXe6UiLfo6ypVyNrvKz8-1920-80.jpg" mos="" align="middle" fullscreen="" width="1267" height="713" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: EA)</span></figcaption></figure> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/gaming-industry/im-forever-grateful-to-bioware-16-game-developers-share-the-moment-a-bioware-game-inspired-them-to-join-the-industry/</link>
                                                                            <description>
                            <![CDATA[ BioWare was the catalyst for a generation of game development careers. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">biGG8zuUYjUQviUCNND5uc</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/5bSRVE6nkVSLTztwHnEjg6-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 17:56:29 +0000</pubDate>                                                                                                                                <updated>Fri, 23 Oct 2026 22:55:27 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Industry]]></category>
                                                                                                <author><![CDATA[ lauren@pcgamer.com (Lauren Morton) ]]></author>                    <dc:creator><![CDATA[ Lauren Morton ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/CoudgUkKX2WLFCPMbGjoX5-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/5bSRVE6nkVSLTztwHnEjg6-1920-80.jpg">
                                                            <media:credit><![CDATA[BioWare]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Left: Knights of the Old Republic, Center: Mass Effect, Right: Dragon Age: Origins]]></media:description>                                                            <media:text><![CDATA[Left: Knights of the Old Republic, Center: Mass Effect, Right: Dragon Age: Origins]]></media:text>
                                <media:title type="plain"><![CDATA[Left: Knights of the Old Republic, Center: Mass Effect, Right: Dragon Age: Origins]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/5bSRVE6nkVSLTztwHnEjg6-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h2 class="article-body__section" id="section-early-bioware"><span>Early BioWare</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:2506px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="opMJnceRwP9hBS8cFvjaUZ" name="wallpaper_neverwinter_nights_11_2560x1440.jpg" alt="Neverwinter Nights Aribeth de Tylmarande holding a sword and flag" src="https://cdn.mos.cms.futurecdn.net/opMJnceRwP9hBS8cFvjaUZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2506" height="1410" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: BioWare)</span></figcaption></figure><h2 class="article-body__section" id="section-star-wars-knights-of-the-old-republic"><span>Star Wars: Knights of the Old Republic</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:1280px;"><p class="vanilla-image-block" style="padding-top:62.81%;"><img id="S57Q5LsddPvWAdi8VoaAC" name="kotor art.jpg" alt="Knights of the Old Republic key art" src="https://cdn.mos.cms.futurecdn.net/S57Q5LsddPvWAdi8VoaAC-1920-80.jpg" mos="" align="middle" fullscreen="" width="1280" height="804" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: BioWare)</span></figcaption></figure><h2 class="article-body__section" id="section-dragon-age"><span>Dragon Age</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:4096px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jphEnnDvBPnUPrK9ib3YjM" name="Hero_1" alt="Morrigan, the Witch of the Wilds in the Dragon Age serries, shown wielding magic in front of a Darkspawn." src="https://cdn.mos.cms.futurecdn.net/jphEnnDvBPnUPrK9ib3YjM-1920-80.jpg" mos="" align="middle" fullscreen="" width="4096" height="2304" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: BioWare)</span></figcaption></figure><h2 class="article-body__section" id="section-mass-effect"><span>Mass Effect</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="Kg5RjzKJxyqGmdsCm8Mun6" name="masseffect-shepard" alt="Mass Effect protagonist in N7 armor on a space background" src="https://cdn.mos.cms.futurecdn.net/Kg5RjzKJxyqGmdsCm8Mun6-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: Electronic Arts)</span></figcaption></figure><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1267px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="QgTXe6UiLfo6ypVyNrvKz8" name="mass effect timeline.jpg" alt="Mass Effect cast artwork" src="https://cdn.mos.cms.futurecdn.net/QgTXe6UiLfo6ypVyNrvKz8-1920-80.jpg" mos="" align="middle" fullscreen="" width="1267" height="713" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: EA)</span></figcaption></figure>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Abyssal Lapidary is making the social media rounds and I can confirm cutting gemstones is just as satisfying as it looks ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I have never really thought much about gemstones or minerals, which is weird considering one of my all-time favourite games is Minecraft, in which I spend a bulk of my time strip-mining. But Abyssal Lapidary has made me realise that there is so much more to the dirt than just coal. </p><p>In the <a href="https://store.steampowered.com/app/3797790/Abyssal_Lapidary/" target="_blank">demo for Abyssal Lapidary</a> I got to begin my stint as a lapidarist, someone who cuts, shapes, grinds, and polishes minerals to make pretty gemstones. The only problem is, like I said before, I don't really know stones. </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="wxdirrriCEEotRDdkXz2cJ" name="Abyssal Lapidary screenshots" alt="Abyssal Lapidary screenshots" src="https://cdn.mos.cms.futurecdn.net/wxdirrriCEEotRDdkXz2cJ-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: LightWorm)</span></figcaption></figure><p>Abyssal Lapidary doesn't exactly drop you in the deep end but it does expect you to pick up with the art of making and selling gemstones rather quickly. My first step was searching around the rather large house I'd found myself in which was apparently part of a declining business but it seemed rather nice; it even had a balcony. </p><p>Most of the doors downstairs were locked, part of the later progression of the game, the few things I did have access to included a station for fixing tools, breaking rocks, and a booth to talk to customers. </p><p>Throughout the day people will turn up to my humble business either looking to buy some precious gemstones or selling minerals and rocks that I can mine into. There's also a guy looking for mysterious artefacts, someone trying to give me a loan (suspicious), and a nice lady selling tea. I'm not 100% sure about what the tea does yet but I buy it anyways. </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="i4R3zPVt5om32ZDx6eVpYJ" name="Abyssal Lapidary screenshots" alt="Abyssal Lapidary screenshots" src="https://cdn.mos.cms.futurecdn.net/i4R3zPVt5om32ZDx6eVpYJ-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: LightWorm)</span></figcaption></figure><p>The rest of my day was spent sitting at my desk carefully hammering rocks into smaller rocks, looking to see if they had anything precious inside. I found some ordinary apatite, fine apatite, and crude duskstone; yeah I'm pretty good at this rock thing. </p><p>After selling my wares I managed to earn enough renown to apply for my Silver License which allowed me to access the gem faceting table; this is what I'm here for. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/MEpdeExZcmxYY6CCrvsKJJ-1920-80.jpg" alt="Abyssal Lapidary screenshots" /><figcaption><small role="credit">LightWorm</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Bdvn6mJWDF5h2BFku5PiQJ-1920-80.jpg" alt="Abyssal Lapidary screenshots" /><figcaption><small role="credit">LightWorm</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/i4R3zPVt5om32ZDx6eVpYJ-1920-80.jpg" alt="Abyssal Lapidary screenshots" /><figcaption><small role="credit">LightWorm</small></figcaption></figure></figure><p>Turning regular clumps of gemstones into cut gems not only adds quite a bit of monetary value to them, it's also quite a lot of fun. The faceting table is essentially a metal sanding machine that you press gems into to whittle them into a desired shape like an old single cut, table cut, or point cut; there are likely more but this is all I have access to right now, and as I'll reiterate I don't know jack about gems. </p><p>Grinding the gems down can be surprisingly hard as there's only a small window in which you can cut them perfectly, grind them for too long or not long enough and they'll lose a lot of value. And I cannot afford to lose money right now. </p><p>Abyssal Lapidary can be quite slow at times, it's helped by the fact that you can fast forward time to stop you from just milling around or staring out the window for six hours. I'm sure there'll be more ways to fill your day as rooms and work benches open up around the store, but I honestly don't mind its methodical, relaxing approach to procuring, mining, and fixing up gemstones. Who knows? Perhaps by the time the full game launches I'll be able to tell a garnet from a chrysoberyl.   </p><div class="product"><a data-dimension112="7c30767e-cf00-11f1-b385-f3eb04a71ba6" 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="7c30767e-cf00-11f1-b385-f3eb04a71ba6" 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/sim/abyssal-lapidary-is-making-the-social-media-rounds-and-i-can-confirm-cutting-gemstones-is-just-as-satisfying-as-it-looks/</link>
                                                                            <description>
                            <![CDATA[ I'm a chump who can't tell my gems from my minerals. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">2LZABHaMmMRLLFS7VB4b7Q</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/uarobXXrXxXJhRK8gkX8nJ-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 16:47:44 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Sim]]></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/png" url="https://cdn.mos.cms.futurecdn.net/uarobXXrXxXJhRK8gkX8nJ-1920-80.png">
                                                            <media:credit><![CDATA[LightWorm]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Abyssal Lapidary screenshots]]></media:description>                                                            <media:text><![CDATA[Abyssal Lapidary screenshots]]></media:text>
                                <media:title type="plain"><![CDATA[Abyssal Lapidary screenshots]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/uarobXXrXxXJhRK8gkX8nJ-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I have never really thought much about gemstones or minerals, which is weird considering one of my all-time favourite games is Minecraft, in which I spend a bulk of my time strip-mining. But Abyssal Lapidary has made me realise that there is so much more to the dirt than just coal. </p><p>In the <a href="https://store.steampowered.com/app/3797790/Abyssal_Lapidary/" target="_blank">demo for Abyssal Lapidary</a> I got to begin my stint as a lapidarist, someone who cuts, shapes, grinds, and polishes minerals to make pretty gemstones. The only problem is, like I said before, I don't really know stones. </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="wxdirrriCEEotRDdkXz2cJ" name="Abyssal Lapidary screenshots" alt="Abyssal Lapidary screenshots" src="https://cdn.mos.cms.futurecdn.net/wxdirrriCEEotRDdkXz2cJ-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: LightWorm)</span></figcaption></figure><p>Abyssal Lapidary doesn't exactly drop you in the deep end but it does expect you to pick up with the art of making and selling gemstones rather quickly. My first step was searching around the rather large house I'd found myself in which was apparently part of a declining business but it seemed rather nice; it even had a balcony. </p><p>Most of the doors downstairs were locked, part of the later progression of the game, the few things I did have access to included a station for fixing tools, breaking rocks, and a booth to talk to customers. </p><p>Throughout the day people will turn up to my humble business either looking to buy some precious gemstones or selling minerals and rocks that I can mine into. There's also a guy looking for mysterious artefacts, someone trying to give me a loan (suspicious), and a nice lady selling tea. I'm not 100% sure about what the tea does yet but I buy it anyways. </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="i4R3zPVt5om32ZDx6eVpYJ" name="Abyssal Lapidary screenshots" alt="Abyssal Lapidary screenshots" src="https://cdn.mos.cms.futurecdn.net/i4R3zPVt5om32ZDx6eVpYJ-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: LightWorm)</span></figcaption></figure><p>The rest of my day was spent sitting at my desk carefully hammering rocks into smaller rocks, looking to see if they had anything precious inside. I found some ordinary apatite, fine apatite, and crude duskstone; yeah I'm pretty good at this rock thing. </p><p>After selling my wares I managed to earn enough renown to apply for my Silver License which allowed me to access the gem faceting table; this is what I'm here for. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/MEpdeExZcmxYY6CCrvsKJJ-1920-80.jpg" alt="Abyssal Lapidary screenshots" /><figcaption><small role="credit">LightWorm</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Bdvn6mJWDF5h2BFku5PiQJ-1920-80.jpg" alt="Abyssal Lapidary screenshots" /><figcaption><small role="credit">LightWorm</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/i4R3zPVt5om32ZDx6eVpYJ-1920-80.jpg" alt="Abyssal Lapidary screenshots" /><figcaption><small role="credit">LightWorm</small></figcaption></figure></figure><p>Turning regular clumps of gemstones into cut gems not only adds quite a bit of monetary value to them, it's also quite a lot of fun. The faceting table is essentially a metal sanding machine that you press gems into to whittle them into a desired shape like an old single cut, table cut, or point cut; there are likely more but this is all I have access to right now, and as I'll reiterate I don't know jack about gems. </p><p>Grinding the gems down can be surprisingly hard as there's only a small window in which you can cut them perfectly, grind them for too long or not long enough and they'll lose a lot of value. And I cannot afford to lose money right now. </p><p>Abyssal Lapidary can be quite slow at times, it's helped by the fact that you can fast forward time to stop you from just milling around or staring out the window for six hours. I'm sure there'll be more ways to fill your day as rooms and work benches open up around the store, but I honestly don't mind its methodical, relaxing approach to procuring, mining, and fixing up gemstones. Who knows? Perhaps by the time the full game launches I'll be able to tell a garnet from a chrysoberyl.   </p><div class="product"><a data-dimension112="7c30767e-cf00-11f1-b385-f3eb04a71ba6" 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="7c30767e-cf00-11f1-b385-f3eb04a71ba6" 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[ Upcoming Mass Effect-like Exodus himbo-fies protagonist after fans complain about his face ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Archetype Entertainment has <a href="https://youtu.be/InxJpKrYQAE?si=6t-wg9K50f2z1tye" target="_blank">unveiled a new look</a> for the protagonist of Exodus, its upcoming sci-fi RPG. We at PCG didn't love Jun Aslan's original face, but it sounds like there was more widespread discontent over his supposedly homely mug.</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/InxJpKrYQAE" allowfullscreen></iframe></div></div><p>After a brief intro by studio GM Chad Robertson, we got a brief cinematic trailer of the new Jun⁠—with a little cameo by Matthew McConaughey, in case you forgot he's lending his voice to this game. And, I mean, yeah: Jun's a real prettyboy now. My man's looking like an industry plant. Cheekbones that could cut glass.</p><p>Previously, Jun was, perhaps, a little schlubbier, but only really by the standards of showbiz. I contend that he realistically could have been someone's workplace crush. He was an LA 6.5, but a Chicago 9. Prettier than most people you know, I'd wager. I didn't love Jun's original look, but I figured, hey, it's an RPG. I'll just mess with the sliders.</p><p>But it sounds like we're restricted to one face per sex in Exodus, based on the new trailer's description: "You can play Jun Aslan as male or female, and options like hairstyles, hair color, facial hair, and tattoos let you add your own personal touch." That sounds reminiscent of the facial presets from Baldur's Gate 3, but with only two characters instead of that game's two dozen or so.</p><p>I like making a cutie pie RPG character as much as the next guy, but now that he's gone, I find something endearing about the way Jun looked before he got his work done. You were beautiful just the way you were, honey. On a more meta level, I wish studios would double down when there's a backlash over minor aesthetic stuff: I don't even have a horse in the s&box race, but I prefer that game's original, controversial, sausage character model to the <a href="https://www.pcgamer.com/software/platforms/my-idea-of-a-netflix-for-games-doesnt-work-garrys-mod-successor-is-getting-sweeping-changes/" target="_blank">new realistic ones</a>.</p><p>At the same time, as a clear attempt at a <a href="https://www.pcgamer.com/games/rpg/exodus-is-out-early-next-year-and-i-think-im-finally-on-board-with-the-general-mass-effect-vibes-of-it-all/" target="_blank">Mass Effect successor</a>, Exodus has to live up to the generational good looks of <a href="https://www.reddit.com/r/gaming/comments/o9z4p/did_you_guys_know_that_commander_shepards_face_is/" target="_blank">Dutch Model Mark Vanderloo</a>⁠⁠—BioWare based the default male Commander Shepard face on him. Even with a full character creation suite, it's hard to justify a custom Shep who always winds up looking like a potato man when the real Handsome Squidward is right there for the taking.</p><p>What do you think? Should Jun have kept his original face, or does his new look suit him? Sound off in the comments (and we've got a poll after the newsletter block).</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xj2KKX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xj2KKX.js" async></script><div class="product"><a data-dimension112="60349ccc-cefe-11f1-a4ec-27ac208a868a" 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="60349ccc-cefe-11f1-a4ec-27ac208a868a" 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/rpg/upcoming-mass-effect-like-exodus-himbo-fies-protagonist-after-fans-complain-about-his-face/</link>
                                                                            <description>
                            <![CDATA[ He's been looksmaxxing. He got the Chad surgery. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">5LkDdDZjo3DHTT8ySiktYY</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/qdwbNhnYukyfzRi4GZNyGD-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 16:27:52 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[RPG]]></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/qdwbNhnYukyfzRi4GZNyGD-1920-80.jpg">
                                                            <media:credit><![CDATA[Archetype Entertainment]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Left: New face of Jun in Exodus. Right: Original Face of Jun in Exodus]]></media:description>                                                            <media:text><![CDATA[Left: New face of Jun in Exodus. Right: Original Face of Jun in Exodus]]></media:text>
                                <media:title type="plain"><![CDATA[Left: New face of Jun in Exodus. Right: Original Face of Jun in Exodus]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/qdwbNhnYukyfzRi4GZNyGD-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Archetype Entertainment has <a href="https://youtu.be/InxJpKrYQAE?si=6t-wg9K50f2z1tye" target="_blank">unveiled a new look</a> for the protagonist of Exodus, its upcoming sci-fi RPG. We at PCG didn't love Jun Aslan's original face, but it sounds like there was more widespread discontent over his supposedly homely mug.</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/InxJpKrYQAE" allowfullscreen></iframe></div></div><p>After a brief intro by studio GM Chad Robertson, we got a brief cinematic trailer of the new Jun⁠—with a little cameo by Matthew McConaughey, in case you forgot he's lending his voice to this game. And, I mean, yeah: Jun's a real prettyboy now. My man's looking like an industry plant. Cheekbones that could cut glass.</p><p>Previously, Jun was, perhaps, a little schlubbier, but only really by the standards of showbiz. I contend that he realistically could have been someone's workplace crush. He was an LA 6.5, but a Chicago 9. Prettier than most people you know, I'd wager. I didn't love Jun's original look, but I figured, hey, it's an RPG. I'll just mess with the sliders.</p><p>But it sounds like we're restricted to one face per sex in Exodus, based on the new trailer's description: "You can play Jun Aslan as male or female, and options like hairstyles, hair color, facial hair, and tattoos let you add your own personal touch." That sounds reminiscent of the facial presets from Baldur's Gate 3, but with only two characters instead of that game's two dozen or so.</p><p>I like making a cutie pie RPG character as much as the next guy, but now that he's gone, I find something endearing about the way Jun looked before he got his work done. You were beautiful just the way you were, honey. On a more meta level, I wish studios would double down when there's a backlash over minor aesthetic stuff: I don't even have a horse in the s&box race, but I prefer that game's original, controversial, sausage character model to the <a href="https://www.pcgamer.com/software/platforms/my-idea-of-a-netflix-for-games-doesnt-work-garrys-mod-successor-is-getting-sweeping-changes/" target="_blank">new realistic ones</a>.</p><p>At the same time, as a clear attempt at a <a href="https://www.pcgamer.com/games/rpg/exodus-is-out-early-next-year-and-i-think-im-finally-on-board-with-the-general-mass-effect-vibes-of-it-all/" target="_blank">Mass Effect successor</a>, Exodus has to live up to the generational good looks of <a href="https://www.reddit.com/r/gaming/comments/o9z4p/did_you_guys_know_that_commander_shepards_face_is/" target="_blank">Dutch Model Mark Vanderloo</a>⁠⁠—BioWare based the default male Commander Shepard face on him. Even with a full character creation suite, it's hard to justify a custom Shep who always winds up looking like a potato man when the real Handsome Squidward is right there for the taking.</p><p>What do you think? Should Jun have kept his original face, or does his new look suit him? Sound off in the comments (and we've got a poll after the newsletter block).</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xj2KKX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xj2KKX.js" async></script><div class="product"><a data-dimension112="60349ccc-cefe-11f1-a4ec-27ac208a868a" 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="60349ccc-cefe-11f1-a4ec-27ac208a868a" 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[ AMD says the re-release of the Ryzen 7 5800X3D was 'like a final gift to our loyal [AM4] users' and it was CEO Dr. Lisa Su who first came up with the idea ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I was genuinely surprised by <a href="https://www.pcgamer.com/hardware/processors/return-of-the-king-amd-is-bringing-back-the-ryzen-7-5800x3d-for-ddr4-platforms-launching-it-alongside-the-mid-range-am5-ryzen-7-7700x3d/" target="_blank">the re-release of the AMD Ryzen 7 5800X3D</a> earlier this year. A chip I thought long dead was back in 10th Anniversary form, after a resurrection process AMD's David McAfee described as "<a href="https://www.pcgamer.com/hardware/processors/choosing-to-bring-back-the-5800x3d-was-a-tough-conversation-for-amd-very-hard-actually-very-very-hard/" target="_blank">very hard, actually</a>" to our Dave at Computex 2026.</p><p>Now <a href="https://news.mynavi.jp/techplus/article/20261020-5127323/" target="_blank">AMD's Travis Kirsch has spoken to Japanese outlet Tech+</a> about more of the thinking behind the re-release, and it seems the idea started at the very top. "Originally, several years ago, I believe Lisa [Su, AMD CEO] was one of the people who suggested reviving the Ryzen 7 5800X3D."</p><p>"It was like a final gift to our loyal users who had used our AM4 for almost 10 years, giving them one last chance to upgrade their PCs using DDR4 systems," Kirsch continues. "However, this required restarting the production lines, which took some time. In short, this was planned before the changes in the memory market occurred, and it was not considered as a solution to the DDR5 shortage."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async></script><p>That may be the case, but the timing still worked out pretty well for AMD. DDR5 prices had been surging since October 2025, while the chip's eventual release date of June 25, 2026 put it right in the middle of a difficult year for PC gamers. Many of whom may well have been looking to upgrade older, AM4 rigs without making the switch to the DDR5-only AM5 socket.</p><p>Kirsch was also asked about the current shipment ratio of AM4 to AM5 processors. "I cannot give you the exact ratio," he says. "But I can say that AM4, which supports DDR4, remains very strong."</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:1919px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="Ciw4CgpXpB3b9boopazYVc" name="amd-ryzen-7-5800x3d-review-1.jpg" alt="AMD Ryzen 7 5800X3D processor" src="https://cdn.mos.cms.futurecdn.net/Ciw4CgpXpB3b9boopazYVc-1920-80.jpg" mos="" align="middle" fullscreen="" width="1919" height="1080" 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>"As you know, AM4 shipments were very stable until we started to see fluctuations in memory prices, while AM5, which supports DDR5, continued to grow," says Kirsch. "In terms of AM4, it continues to perform well. As for AM5, recently we have seen growth in models equipped with 3D V-Cache."</p><p>Well, you didn't expect actual figures, did you? And as for future platforms, Kirsch remains similarly cagey about any talk around the AM5 socket's eventual replacement:</p><p>"I cannot answer when AM6 will be released, or whether it will even be released at all. However, I would like to explain our strategy. Platform lifespan is paramount for end users. It is important to have the option to simply upgrade the processor three years after purchasing a platform.</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:3159px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="eZ5rjhyDc55sU9DLWhjKf9" name="amd-ryzen-7-9800x3d-review-08" alt="AMD Ryzen 7 9800X3D processor" src="https://cdn.mos.cms.futurecdn.net/eZ5rjhyDc55sU9DLWhjKf9-1920-80.jpg" mos="" align="middle" fullscreen="" width="3159" height="1777" 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>"We understand that constantly refreshing the platform is not good for our partners or end users," says Kirsch. "So, when that time comes in the future, we will introduce a new platform, but we don't know when that will be."</p><p>AMD's next-generation Zen 6-based CPUs will use the existing AM5 socket, and rumours suggest they'll be <a href="https://www.pcgamer.com/hardware/processors/new-rumour-claims-with-100-percent-confidence-that-amds-next-gen-zen-6-desktop-cpu-will-run-at-over-6-5-ghz/" target="_blank">pushing clockspeeds to new heights</a> later this year. And as for the chips after that? We're probably looking at 2029 or later. So, there's plenty of time for AM5 to stick around, and who knows—maybe it'll be just as long-lasting as AM4 in the end.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/processors/amd-says-the-re-release-of-the-ryzen-7-5800x3d-was-like-a-final-gift-to-our-loyal-am4-users-and-it-was-ceo-dr-lisa-su-who-first-came-up-with-the-idea/</link>
                                                                            <description>
                            <![CDATA[ It timed itself rather nicely with the deepening memory crisis, too. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Zo5jWoHG99RpL75Bywmk4N</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/94RkNNoBUmy3PmPVpQQR2d-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 16:11:07 +0000</pubDate>                                                                                                                                <updated>Fri, 23 Oct 2026 16:11:27 +0000</updated>
                                                                                                                                            <category><![CDATA[Processors]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-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/94RkNNoBUmy3PmPVpQQR2d-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[AMD Ryzen 7 5800X3D processor]]></media:description>                                                            <media:text><![CDATA[AMD Ryzen 7 5800X3D processor]]></media:text>
                                <media:title type="plain"><![CDATA[AMD Ryzen 7 5800X3D processor]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/94RkNNoBUmy3PmPVpQQR2d-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I was genuinely surprised by <a href="https://www.pcgamer.com/hardware/processors/return-of-the-king-amd-is-bringing-back-the-ryzen-7-5800x3d-for-ddr4-platforms-launching-it-alongside-the-mid-range-am5-ryzen-7-7700x3d/" target="_blank">the re-release of the AMD Ryzen 7 5800X3D</a> earlier this year. A chip I thought long dead was back in 10th Anniversary form, after a resurrection process AMD's David McAfee described as "<a href="https://www.pcgamer.com/hardware/processors/choosing-to-bring-back-the-5800x3d-was-a-tough-conversation-for-amd-very-hard-actually-very-very-hard/" target="_blank">very hard, actually</a>" to our Dave at Computex 2026.</p><p>Now <a href="https://news.mynavi.jp/techplus/article/20261020-5127323/" target="_blank">AMD's Travis Kirsch has spoken to Japanese outlet Tech+</a> about more of the thinking behind the re-release, and it seems the idea started at the very top. "Originally, several years ago, I believe Lisa [Su, AMD CEO] was one of the people who suggested reviving the Ryzen 7 5800X3D."</p><p>"It was like a final gift to our loyal users who had used our AM4 for almost 10 years, giving them one last chance to upgrade their PCs using DDR4 systems," Kirsch continues. "However, this required restarting the production lines, which took some time. In short, this was planned before the changes in the memory market occurred, and it was not considered as a solution to the DDR5 shortage."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async></script><p>That may be the case, but the timing still worked out pretty well for AMD. DDR5 prices had been surging since October 2025, while the chip's eventual release date of June 25, 2026 put it right in the middle of a difficult year for PC gamers. Many of whom may well have been looking to upgrade older, AM4 rigs without making the switch to the DDR5-only AM5 socket.</p><p>Kirsch was also asked about the current shipment ratio of AM4 to AM5 processors. "I cannot give you the exact ratio," he says. "But I can say that AM4, which supports DDR4, remains very strong."</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:1919px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="Ciw4CgpXpB3b9boopazYVc" name="amd-ryzen-7-5800x3d-review-1.jpg" alt="AMD Ryzen 7 5800X3D processor" src="https://cdn.mos.cms.futurecdn.net/Ciw4CgpXpB3b9boopazYVc-1920-80.jpg" mos="" align="middle" fullscreen="" width="1919" height="1080" 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>"As you know, AM4 shipments were very stable until we started to see fluctuations in memory prices, while AM5, which supports DDR5, continued to grow," says Kirsch. "In terms of AM4, it continues to perform well. As for AM5, recently we have seen growth in models equipped with 3D V-Cache."</p><p>Well, you didn't expect actual figures, did you? And as for future platforms, Kirsch remains similarly cagey about any talk around the AM5 socket's eventual replacement:</p><p>"I cannot answer when AM6 will be released, or whether it will even be released at all. However, I would like to explain our strategy. Platform lifespan is paramount for end users. It is important to have the option to simply upgrade the processor three years after purchasing a platform.</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:3159px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="eZ5rjhyDc55sU9DLWhjKf9" name="amd-ryzen-7-9800x3d-review-08" alt="AMD Ryzen 7 9800X3D processor" src="https://cdn.mos.cms.futurecdn.net/eZ5rjhyDc55sU9DLWhjKf9-1920-80.jpg" mos="" align="middle" fullscreen="" width="3159" height="1777" 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>"We understand that constantly refreshing the platform is not good for our partners or end users," says Kirsch. "So, when that time comes in the future, we will introduce a new platform, but we don't know when that will be."</p><p>AMD's next-generation Zen 6-based CPUs will use the existing AM5 socket, and rumours suggest they'll be <a href="https://www.pcgamer.com/hardware/processors/new-rumour-claims-with-100-percent-confidence-that-amds-next-gen-zen-6-desktop-cpu-will-run-at-over-6-5-ghz/" target="_blank">pushing clockspeeds to new heights</a> later this year. And as for the chips after that? We're probably looking at 2029 or later. So, there's plenty of time for AM5 to stick around, and who knows—maybe it'll be just as long-lasting as AM4 in the end.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ AMD says its working on FSR's frame pacing issues, but there's still conspicuously no mention of Multi Frame Generation ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Whether you dismiss it as 'fake frames' or embrace the tech as a real game changer, frame generation has fast become a headlining act of this GPU generation. We've since discovered that not all frame gen (FG) tech is created equal, but AMD has promised to address a key criticism of its own FSR FG.</p><p>Earlier this week, AMD's Jack Huynh announced that <a href="https://www.pcgamer.com/hardware/graphics-cards/amd-has-shipped-fsr-4-1-early-for-rx-6000-graphics-cards-and-its-coming-to-ryzen-apus-vulkan-and-xbox-too/" target="_blank">FSR 4.1 would be shipping early to RX 6000 graphics cards</a>, though that wasn't all. Huynh also announced that <a href="https://www.youtube.com/watch?v=fT6TIXnmv-s" target="_blank">improvements to FSR's frame pacing were on the way, too</a>.</p><p>Personally, I'm more familiar with Nvidia's approach to FG—especially after <a href="https://www.pcgamer.com/hardware/graphics-cards/nvidia-says-my-rtx-4070-super-isnt-capable-of-multi-frame-gen-but-im-surprised-by-how-smooth-this-unofficial-unlock-actually-feels/" target="_blank">unlocking Multi Frame Gen on my RTX 4070 Super</a> earlier this year. AMD's FSR has often been criticised for how it struggles with frame pacing in comparison. Ie, you may have lots of frames , but not every one of them is displayed for a consistent amount of time, making for gameplay that's a different flavour of choppy.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async></script><p>The issue can affect frames both traditionally rendered and generated, and it's been a stumbling block since at least FSR 3. For example, CD Projekt noted <a href="https://www.pcgamer.com/games/rpg/cyberpunk-2077-finally-has-official-support-for-amds-fsr3/" target="_blank">gamers may experience micro stutter</a> back when Cyberpunk 2077 got official support for the tech in 2024. As recently as August this year, <a href="https://www.youtube.com/watch?v=apM1C55SevE" target="_blank">Hardware Unboxed's testing</a> demonstrated that pacing is still an issue in games that support both FSR 3.1 and FSR 4 (via <a href="https://videocardz.com/newz/amd-promises-better-fsr-frame-generation-pacing" target="_blank">Videocardz</a>).</p><p>It's good to hear that AMD is focusing on this issue, but without a solid timeline or a list of hardware set to enjoy these frame pacing improvements, this week's announcement amounts to little more than, 'We know, and we're working on it!' </p><p>Also conspicuously absent was any mention of Multi Frame Generation on AMD GPUs. Currently, AMD's Frame Generation generates one intermediary frame, <a href="https://videocardz.com/newz/dlss-enabler-adds-x5-and-x6-multi-frame-generation-modes-for-unsupported-gpus-including-rtx-40-series" target="_blank">though third-party developers have managed to crank that far higher</a>. We already know <a href="https://www.pcgamer.com/hardware/graphics-cards/more-evidence-that-multi-frame-gen-is-on-the-way-to-amd-rdna4-gpus-potentially-as-high-as-8x/" target="_blank">MFG is on the way for AMD hardware</a>, the question is more 'how soon?'</p><p>Here's hoping AMD's officially supported frame pacing improvements for FSR arrive before an enterprising third-party can show them how it's done.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/graphics-cards/amd-says-its-working-on-fsrs-frame-pacing-issues-but-theres-still-conspicuously-no-mention-of-multi-frame-generation/</link>
                                                                            <description>
                            <![CDATA[ Smooth moves ahead? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LFcEuYXyREvZSSbLVRbt2J</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Nxw3o4ZQwF62mD9TtCzkEH-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 16:04:04 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Graphics Cards]]></category>
                                                    <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/Nxw3o4ZQwF62mD9TtCzkEH-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Acer Nitro Radeon RX 9070 GRE graphics card]]></media:description>                                                            <media:text><![CDATA[Acer Nitro Radeon RX 9070 GRE graphics card]]></media:text>
                                <media:title type="plain"><![CDATA[Acer Nitro Radeon RX 9070 GRE graphics card]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Nxw3o4ZQwF62mD9TtCzkEH-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Whether you dismiss it as 'fake frames' or embrace the tech as a real game changer, frame generation has fast become a headlining act of this GPU generation. We've since discovered that not all frame gen (FG) tech is created equal, but AMD has promised to address a key criticism of its own FSR FG.</p><p>Earlier this week, AMD's Jack Huynh announced that <a href="https://www.pcgamer.com/hardware/graphics-cards/amd-has-shipped-fsr-4-1-early-for-rx-6000-graphics-cards-and-its-coming-to-ryzen-apus-vulkan-and-xbox-too/" target="_blank">FSR 4.1 would be shipping early to RX 6000 graphics cards</a>, though that wasn't all. Huynh also announced that <a href="https://www.youtube.com/watch?v=fT6TIXnmv-s" target="_blank">improvements to FSR's frame pacing were on the way, too</a>.</p><p>Personally, I'm more familiar with Nvidia's approach to FG—especially after <a href="https://www.pcgamer.com/hardware/graphics-cards/nvidia-says-my-rtx-4070-super-isnt-capable-of-multi-frame-gen-but-im-surprised-by-how-smooth-this-unofficial-unlock-actually-feels/" target="_blank">unlocking Multi Frame Gen on my RTX 4070 Super</a> earlier this year. AMD's FSR has often been criticised for how it struggles with frame pacing in comparison. Ie, you may have lots of frames , but not every one of them is displayed for a consistent amount of time, making for gameplay that's a different flavour of choppy.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async></script><p>The issue can affect frames both traditionally rendered and generated, and it's been a stumbling block since at least FSR 3. For example, CD Projekt noted <a href="https://www.pcgamer.com/games/rpg/cyberpunk-2077-finally-has-official-support-for-amds-fsr3/" target="_blank">gamers may experience micro stutter</a> back when Cyberpunk 2077 got official support for the tech in 2024. As recently as August this year, <a href="https://www.youtube.com/watch?v=apM1C55SevE" target="_blank">Hardware Unboxed's testing</a> demonstrated that pacing is still an issue in games that support both FSR 3.1 and FSR 4 (via <a href="https://videocardz.com/newz/amd-promises-better-fsr-frame-generation-pacing" target="_blank">Videocardz</a>).</p><p>It's good to hear that AMD is focusing on this issue, but without a solid timeline or a list of hardware set to enjoy these frame pacing improvements, this week's announcement amounts to little more than, 'We know, and we're working on it!' </p><p>Also conspicuously absent was any mention of Multi Frame Generation on AMD GPUs. Currently, AMD's Frame Generation generates one intermediary frame, <a href="https://videocardz.com/newz/dlss-enabler-adds-x5-and-x6-multi-frame-generation-modes-for-unsupported-gpus-including-rtx-40-series" target="_blank">though third-party developers have managed to crank that far higher</a>. We already know <a href="https://www.pcgamer.com/hardware/graphics-cards/more-evidence-that-multi-frame-gen-is-on-the-way-to-amd-rdna4-gpus-potentially-as-high-as-8x/" target="_blank">MFG is on the way for AMD hardware</a>, the question is more 'how soon?'</p><p>Here's hoping AMD's officially supported frame pacing improvements for FSR arrive before an enterprising third-party can show them how it's done.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ In a rare instance of good news, Philips has announced the world's first 36-inch, 260 Hz gaming monitor. So that's nice ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Writing (and reading) about PC hardware news at the moment can be downright depressing. Massive price rises. AI everywhere. <a href="https://www.pcgamer.com/hardware/graphics-cards/rtx-5090-not-dead-says-nvidia-but-its-mysteriously-vanished-from-the-companys-official-marketplace/" target="_blank">Disappearing graphics cards</a>. It's just a bit <em>much, </em>you know?</p><p>So come and bask in something deliciously old school with me: the release of a good-looking new product you might be able to buy without selling a kidney. Philips says its new 36M4C5500P display is <a href="https://www.prnewswire.com/apac/news-releases/philips-evnia-unveils-latest-gaming-monitors-featuring-the-worlds-first-36-inch-260hz-display-built-for-gamers-302915106.html" target="_blank">the world's first 36-inch gaming monitor with a 260 Hz refresh rate</a>. Lovely.</p><p>This ultrawide's got a curved, 1500R VA panel. Oooooh. A 3440 x 1440 resolution. Ahhhh. And an overclockable refresh rate that makes sense for casual and competitive gamers alike. Stone the crows and call the fire department, it actually looks pretty decent.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async></script><p>Sure, VA panel tech is nothing fancy. And many a curved ultrawide has passed the doors of PC Gamer Towers over the past few years. But a 36-inch panel size is something interesting, filling the gap between your standard 34-inch ultrawides and the more desk-dominating, 39-inch-and-up models.</p><p><a href="https://www.philips.com.au/c-p/36M4C5500P_75/fast-va-gaming-monitor-curved-gaming-monitor#see-all-benefits" target="_blank">The specs aren't exactly earth-shattering</a>, but I'm hoping they might push it towards the more affordable end of the market. It's got Display HDR400 certification, dual HDMI 2.1 and DisplayPort 1.4 connectivity, and a tilting stand. Everything you might reasonably need. There's no word on pricing yet, but I've got my fingers crossed.</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="mworE5m4bt6ZSCsTQ8iqVH" name="PhilipsEvniablue" alt="A Philips Evnia 36M4C5500P 36-inch ultrawide gaming monitor on a blue background" src="https://cdn.mos.cms.futurecdn.net/mworE5m4bt6ZSCsTQ8iqVH-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: Philips Evnia)</span></figcaption></figure><p>I even thought we'd make it through the press release without a mention of AI, but no, this display has "AI-enhanced gaming features" including Shadow Boost, Smart Crosshair, Smart Sniper, and Smart MBR sync. Most of which you can likely ignore. No product launch is complete without them, though, I'm sure you'll agree.</p><p>In these topsy-turvy times, it's downright refreshing to write about a new gaming product that simply looks <em>nice, </em>without having to bring up the global state of affairs. <a href="https://www.pcgamer.com/cheap-gaming-monitor-deals/" target="_blank">Many gaming monitors are actually very affordable right now</a>, so if you're scratching around for something to upgrade without breaking the bank, it's products like this that I'd be keeping a close eye on.</p><p>There. A properly positive article, and I didn't mention the <a href="https://www.pcgamer.com/hardware/memory/ram-and-storage-is-ridiculously-expensive-right-now-because-of-drumroll-ai-of-course-and-theres-little-reason-to-think-prices-will-drop-any-time-soon/" target="_blank">memory crisis</a> once. Curses!</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-monitors/in-a-rare-instance-of-good-news-philips-has-announced-the-worlds-first-36-inch-260-hz-gaming-monitor-so-thats-nice/</link>
                                                                            <description>
                            <![CDATA[ Let's all look upon it with wonder. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">pCDMPdvNNq86PAfzofnyzF</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/zkJfqJuJFshsSF7f9nfBba-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 14:55:41 +0000</pubDate>                                                                                                                                <updated>Fri, 23 Oct 2026 14:56:02 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Monitors]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-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/zkJfqJuJFshsSF7f9nfBba-1920-80.jpg">
                                                            <media:credit><![CDATA[Philips Evnia]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Philips Evnia 36-inch ultrawide gaming monitor on a desk]]></media:description>                                                            <media:text><![CDATA[A Philips Evnia 36-inch ultrawide gaming monitor on a desk]]></media:text>
                                <media:title type="plain"><![CDATA[A Philips Evnia 36-inch ultrawide gaming monitor on a desk]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/zkJfqJuJFshsSF7f9nfBba-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Writing (and reading) about PC hardware news at the moment can be downright depressing. Massive price rises. AI everywhere. <a href="https://www.pcgamer.com/hardware/graphics-cards/rtx-5090-not-dead-says-nvidia-but-its-mysteriously-vanished-from-the-companys-official-marketplace/" target="_blank">Disappearing graphics cards</a>. It's just a bit <em>much, </em>you know?</p><p>So come and bask in something deliciously old school with me: the release of a good-looking new product you might be able to buy without selling a kidney. Philips says its new 36M4C5500P display is <a href="https://www.prnewswire.com/apac/news-releases/philips-evnia-unveils-latest-gaming-monitors-featuring-the-worlds-first-36-inch-260hz-display-built-for-gamers-302915106.html" target="_blank">the world's first 36-inch gaming monitor with a 260 Hz refresh rate</a>. Lovely.</p><p>This ultrawide's got a curved, 1500R VA panel. Oooooh. A 3440 x 1440 resolution. Ahhhh. And an overclockable refresh rate that makes sense for casual and competitive gamers alike. Stone the crows and call the fire department, it actually looks pretty decent.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async></script><p>Sure, VA panel tech is nothing fancy. And many a curved ultrawide has passed the doors of PC Gamer Towers over the past few years. But a 36-inch panel size is something interesting, filling the gap between your standard 34-inch ultrawides and the more desk-dominating, 39-inch-and-up models.</p><p><a href="https://www.philips.com.au/c-p/36M4C5500P_75/fast-va-gaming-monitor-curved-gaming-monitor#see-all-benefits" target="_blank">The specs aren't exactly earth-shattering</a>, but I'm hoping they might push it towards the more affordable end of the market. It's got Display HDR400 certification, dual HDMI 2.1 and DisplayPort 1.4 connectivity, and a tilting stand. Everything you might reasonably need. There's no word on pricing yet, but I've got my fingers crossed.</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="mworE5m4bt6ZSCsTQ8iqVH" name="PhilipsEvniablue" alt="A Philips Evnia 36M4C5500P 36-inch ultrawide gaming monitor on a blue background" src="https://cdn.mos.cms.futurecdn.net/mworE5m4bt6ZSCsTQ8iqVH-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: Philips Evnia)</span></figcaption></figure><p>I even thought we'd make it through the press release without a mention of AI, but no, this display has "AI-enhanced gaming features" including Shadow Boost, Smart Crosshair, Smart Sniper, and Smart MBR sync. Most of which you can likely ignore. No product launch is complete without them, though, I'm sure you'll agree.</p><p>In these topsy-turvy times, it's downright refreshing to write about a new gaming product that simply looks <em>nice, </em>without having to bring up the global state of affairs. <a href="https://www.pcgamer.com/cheap-gaming-monitor-deals/" target="_blank">Many gaming monitors are actually very affordable right now</a>, so if you're scratching around for something to upgrade without breaking the bank, it's products like this that I'd be keeping a close eye on.</p><p>There. A properly positive article, and I didn't mention the <a href="https://www.pcgamer.com/hardware/memory/ram-and-storage-is-ridiculously-expensive-right-now-because-of-drumroll-ai-of-course-and-theres-little-reason-to-think-prices-will-drop-any-time-soon/" target="_blank">memory crisis</a> once. Curses!</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ LG UltraGear Evo 52G930B Evo gaming monitor review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-widget-title="" data-model-name="LG UltraGear 52G930B"></div><p>Can you have too much of a mediocre thing? If I was being unkind, that's the challenge I'd make to the new <a href="https://www.lg.com/us/monitors/lg-52g930b-b-gaming-monitor">LG UltraGear Evo 52G930B</a>. What we are talking about here, people, is a monumental 52-inch 5K2K gaming monitor. But it's based on an old-school VA panel.</p><p>Yep, not OLED. Not IPS. It doesn't even have mini-LED local dimming. It's just a huge, high-res, VA panel. At 52 inches, it's so big and so expensive it immediately poses another problem. Why wouldn't you just buy a 4K TV?</p><p>After all, this LG clocks in at $1,699 or £1,499, which buys you an awful lot of 4K TV here in late 2026. That kind of money puts you in reach of OLED TVs up to around 65 inches. And, like I said, the LG UltraGear Evo 52G930B isn't actually that well specced save for its size and resolution.</p><div ><table><caption>LG UltraGear Evo 52G930B specs</caption><tbody><tr><td class="firstcol " ><p><strong>Screen size</strong></p></td><td  ><p>52-inch</p></td></tr><tr><td class="firstcol " ><p><strong>Resolution</strong></p></td><td  ><p>5,120 x 2,160</p></td></tr><tr><td class="firstcol " ><p><strong>Brightness</strong></p></td><td  ><p>400 nits SDR, 600 nits HDR</p></td></tr><tr><td class="firstcol " ><p><strong>Response time</strong></p></td><td  ><p>1 ms</p></td></tr><tr><td class="firstcol " ><p><strong>Refresh rate</strong></p></td><td  ><p>240 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>HDR</strong></p></td><td  ><p>DisplayHDR 600 (no local dimming)</p></td></tr><tr><td class="firstcol " ><p><strong>Features</strong></p></td><td  ><p>VA panel, 2x HDMI 2.1, DisplayPort 2.1, USB-C with 90 W PD, USB hub, 3.5mm audio</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.lg.com/us/monitors/lg-52g930b-b-gaming-monitor" target="_blank">$1,699</a> | <a href="https://www.lg.com/uk/monitors/ultragear-evo/52g930b-b/" target="_blank">£1,499</a> </p></td></tr></tbody></table></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p>✅ <strong>You want the ultimate in big-screen immersion:</strong> 52 inches in an ultrawide format, plus 5K2K resolution, makes for a genuinely cinematic experience.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Do not buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p>❌ <strong>You're expecting OLED speed and contrast:</strong> This LG has an old-school VA panel and the response and lighting control is miles behind OLED.</p></div></div></div></div><p>There is a counter argument in favour of this huge 52-inch ultrawide beast, and it goes something like this. For starters, this LG has various PC gaming-centric features. Most obviously, that includes 240 Hz refresh and the low latency that promises. But you also get lots of granular controls over image quality settings, such as colour spaces and pixel overdrive.</p><p>You likewise wouldn't expect to see the DisplayPort and USB-C interfaces that LG has included. Admittedly, various TVs have at least some of those features. But usually not all. There are also some ergonomic issues to bear in mind. This is a 21:9 aspect 5K2K display. That immediately makes this monitor a touch more usable than a similarly-sized TV.</p><p>Put it this way, there's only so tall you can go with a monitor on your desk before it gets a bit ridiculous. What this monitor offers is immense and immersive width with manageable height.</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="j2ZGnY4HbaRFtrc8RANhzK" name="LG UltraGear 52G930B 00004" alt="LG UltraGear 52G930B gaming monitor" src="https://cdn.mos.cms.futurecdn.net/j2ZGnY4HbaRFtrc8RANhzK-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/j2ZGnY4HbaRFtrc8RANhzK-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: Future)</span></figcaption></figure><p>That it's also curved helps. The 1000R curve means it wraps around you from a typical PC gaming position, which is inherently much closer to the panel than you would normally sit when watching TV. The 5K2K resolution also means you're getting better pixel density than a big 4K TV, albeit you're still not getting great pixel density by PC monitor standards. Hold that thought, we'll come back to it.</p><p>All that said, the LG UltraGear Evo 52G930B isn't automatically an ergonomic master stroke. I have a pretty big desk and this thing barely fits on it. That extreme 1000R curve means that it isn't just very wide, but also quite deep. And, generally, if you are unconvinced by curved monitors, you really aren't going to like this LG. It's really, <em>really </em>curved.</p><p>Anyway, before we come to what kind of actual gaming experience you get from a monster like this, let's cover off a few more speeds and feeds. As I said, there's no local dimming and that means only limited HDR support. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/skTPKvx8E2FxCJjSNC3u9Q-1920-80.jpg" alt="LG UltraGear Evo 52G930B OSD menu" /><figcaption>You can adjust the overdrive settings, but the results are never entirely satisfactory.<small role="credit">Future</small></figcaption></figure></figure><p>Strictly speaking, there's HDR 600 certification. But without local dimming, there simply isn't the lighting control to deliver HDR visuals. However, you do at least get the intrinsic contrast of a VA panel.  LG has rated this one at 4,000:1, which is about three to four times the static contrast that most IPS monitors offer. For the record, SDR brightness is rated at 400 nits.</p><p>Meanwhile, to go with the 240 Hz refresh, there's pixel response of 1 ms grey-to-grey. At least, that's the claim. For most VA panels, poor response is perhaps their most obvious shortcoming. And pixel response specs don't always tell the full story. So, we'll see about that.</p><p>On, then, to the experience this monster delivers. Out of the box—a particularly laborious process given the sheer scale of the thing—and it immediately feels unwieldy. I used a 49-inch 32:9 ultrawide as my primary display for about 18 months so I am not just familiar with using very large PC monitors, I'm absolutely a fan. But the LG UltraGear Evo 52G930B immediately feels too big.</p><div><blockquote><p>I am not just familiar with using very large PC monitors, I'm absolutely a fan. But the LG UltraGear Evo 52G930B immediately feels too big.</p></blockquote></div><p>That's not down to the width, which is comparable to one of those 49-inch ultrawides, but the height and depth. It's all so overwhelming and eats up so much desk space. Of course, the benefit is immersion and, crikey, does this massive monitor dominate your field of view when used at "normal" PC monitor viewing distances.</p><p>I think viewing it that close has surely got to be the point. Yes, you could push it back. But then why are you buying such a huge display? That close-up approach doesn't work so well for TVs, first because they are generally flat and that means the edges of the display end up being viewed at quite an acute angle. The other problem is pixel density.</p><p>Take a 55-inch 4K TV. That has a pixel density of just 80 pixels per inch, which looks really rough and blocky at PC monitor viewing distances. This LG improves that figure to 107 pixels per inch, or very nearly the same as 109 pixels per inch of a typical 1440p 27-inch monitor.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/p9jhekwPsKgKEBWRFS4NUX-1920-80.jpg" alt="LG UltraGear 52G930B gaming monitor" /><figcaption>That's one big ol' glossy panel.<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5JxBKWN6UmwE7dXH275uTb-1920-80.jpg" alt="LG UltraGear 52G930B gaming monitor" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Zrz7yeyTCK4GvEtAeX5vme-1920-80.jpg" alt="LG UltraGear 52G930B gaming monitor" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YLWGN7B9qEswbDNuVhmFRi-1920-80.jpg" alt="LG UltraGear 52G930B gaming monitor" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Okay, that's still not great compared to, for instance, the 138 pixels per inch of a 32-inch 4K monitor, let alone a 27-inch 4K panel. But it's tolerable in terms of things like text quality and overall image detail.</p><p>The same goes for the general appearance of this huge VA panel. It's definitely no OLED when it comes to lighting control. But it's punchy and vibrant and has very good contrast for a conventional LCD monitor. It's also pretty well calibrated in its various modes.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/XAg5aYeiX8gcxL6hdB4jT-1920-80.jpg" alt="LG UltraGear 52G930B gaming monitor" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The one caveat to that observation is that you cannot enable pixel overdrive when using industry-standard colour spaces including sRGB and PCI-P3. Only the gaming-centric presets support pixel overdrive. The idea is to ensure greater colour accuracy in sRGB and DCI-P3. But, personally, I'd prefer the option to run those modes with overdrive.</p><p>Whatever, the most positive aspect of this monitor is definitely immersion. No other monitor I've used so effectively fills your field of view. That's true to an extent that I actually think is borderline impractical for, say, a first person shooter. It's certainly, far, far too big for esports where you want to be able to see pretty much all the screen within a relatively narrow field of view. You're not going to last long if an enemy pops up on the edge of the screen two or three feet outside of your central gaze.</p><div><blockquote><p>For games that are more about exploration and adventure than precision head shots... this monitor is positively epic if possibly a bit exhausting.</p></blockquote></div><p>For games that are more about exploration and adventure than precision head shots, on the other hand, let's say something like Witcher III or the Assassin's Creed series, this monitor is positively epic, if possibly a bit exhausting. Again, immersion is a singular experience. But actually having to swivel your head around extensively to see all parts of the screen, is that something you really want to be doing?</p><p>In that regard, the faster the action on screen, arguably the less sense this screen makes. Along with the ergonomic issues of actually viewing such a large screen, there's pixel response. And it's not great.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/YaDE888XZSzWvCq3TsbsqA-1920-80.jpg" alt="LG UltraGear 52G930B gaming monitor" /><figcaption>LG UltraGear Evo 52G930B above, a 4K 32-inch panel below. The LG may be 5K2K, but its huge size means that the pixel density is nothing special.<small role="credit">Future</small></figcaption></figure></figure><p>VA panels tend to be weakest when it comes to dark tone response and the LG UltraGear Evo 52G930B is no exception. Even with overdrive maxed out, there's visible smearing. At the same time, the fastest overdrive setting also introduces overshoot and inverse ghosting that's bad enough to be visible, in-game. As VA panels go, the response is fine as opposed to particularly bad. But compared to even an IPS monitor, it's a step down. Compared to OLED, it's absolutely hopeless.</p><p>However, for me where this beast really makes sense is strategy games. Frankly, once you've played one of the Total War series rendered across a huge 52-inch 5K2K panel, everything else feels positively puny. The sight of numerous battalions of infantry, regiments of cavalry, rows of siege engines, whatever, sprawling across your field of view is undoubtedly a seminal PC gaming experience.</p><div><blockquote><p>The sight of numerous battalions of infantry...sprawling across your field of view is undoubtedly a seminal PC gaming experience.</p></blockquote></div><p>Another obvious application for a screen like this is driving sims. Okay, the pixel response isn't exactly ideal, but the scale, the ultrawide aspect, and the wrap-around curve makes for one heck of a sim-rig screen.</p><p>At this point you're probably getting the impression that the LG UltraGear Evo 52G930B's appeal is pretty niche. And that's about right. As a general purpose PC monitor, it really doesn't make sense.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/6qjM8U8q57nwRLPCKbQQQR-1920-80.jpg" alt="LG UltraGear 52G930B gaming monitor" /><figcaption>This LG has its shortcomings, but there's no doubting the incredible gaming immersion on offer.<small role="credit">Future</small></figcaption></figure></figure><p>Certainly, it's miles behind the curve (waahwaah) by most technical metrics. Just about everything else at this price point is OLED these days. So, to have a plain old VA panel that doesn't even have local dimming in this segment of the market launching in 2026 feels like a bit of a throwback.</p><p>However, the combination of sheer scale and relatively high resolution does make for a unique proposition and, in at least some positive ways, an experience like no other. Well, almost no other. The obvious comparison here is the even bigger 57-inch VA panel as used by the <a href="https://www.pcgamer.com/samsung-odyssey-neo-g9-g95nc-dual-uhd/">Samsung Odyssey Neo G9 G95NC</a> and <a href="https://www.pcgamer.com/hardware/gaming-monitors/acer-predator-z57-review/">Acer Predator Z57</a>.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/pfNT5rpqaC4eCbXGNCHKHV-1920-80.jpg" alt="LG UltraGear 52G930B gaming monitor" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Right now, you can <a href="https://www.amazon.com/Samsung-DisplayPort-Mini-LED-DisplayHDR-LS57CG952NNXZA/dp/B0CDQM55C9" target="_blank">bag the Samsung for $1,449 on Amazon</a>. Not only is it even bigger, it's far higher resolution at 7,680 x 2,160 pixels and has full array local dimming with over 2,000 zones and therefore some proper HDR capabilites. Similar applies to the Acer, which is largely the same spec and available for $1,599.</p><p>Of course, that huge resolution, which is effectively dual-4K, makes for monumental GPU load. Even an RTX 5090 will struggle at times. But the value comparison certainly isn't comfortable for this new LG.</p><p>In the end, then, the LG UltraGear Evo 52G930B isn't going to make sense for almost anyone, especially not with something even bigger, higher resolution and more capable available for less money. But if you're gaming in just the right niche, if money doesn't really matter, and if you feel like it, well, what the heck, why not pull the trigger and march those armies across the Nile basin?</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-monitors/lg-ultragear-evo-52g930b-review/</link>
                                                                            <description>
                            <![CDATA[ LG's new 52-inch ultrawide 5K2K monster monitor is surprisingly old school. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">szrTr7EiFwCkvz2VRjmkeZ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/UvxifFiGG6tWy5R9jXnv8E-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 14:31:50 +0000</pubDate>                                                                                                                                <updated>Fri, 23 Oct 2026 14:32:42 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Monitors]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jeremy Laird ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/yAFomvQ2kRS39NDfXHRP7G-320-70.jpeg ]]></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/UvxifFiGG6tWy5R9jXnv8E-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[LG UltraGear 52G930B gaming monitor]]></media:description>                                                            <media:text><![CDATA[LG UltraGear 52G930B gaming monitor]]></media:text>
                                <media:title type="plain"><![CDATA[LG UltraGear 52G930B gaming monitor]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/UvxifFiGG6tWy5R9jXnv8E-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-widget-title="" data-model-name="LG UltraGear 52G930B"></div><p>Can you have too much of a mediocre thing? If I was being unkind, that's the challenge I'd make to the new <a href="https://www.lg.com/us/monitors/lg-52g930b-b-gaming-monitor">LG UltraGear Evo 52G930B</a>. What we are talking about here, people, is a monumental 52-inch 5K2K gaming monitor. But it's based on an old-school VA panel.</p><p>Yep, not OLED. Not IPS. It doesn't even have mini-LED local dimming. It's just a huge, high-res, VA panel. At 52 inches, it's so big and so expensive it immediately poses another problem. Why wouldn't you just buy a 4K TV?</p><p>After all, this LG clocks in at $1,699 or £1,499, which buys you an awful lot of 4K TV here in late 2026. That kind of money puts you in reach of OLED TVs up to around 65 inches. And, like I said, the LG UltraGear Evo 52G930B isn't actually that well specced save for its size and resolution.</p><div ><table><caption>LG UltraGear Evo 52G930B specs</caption><tbody><tr><td class="firstcol " ><p><strong>Screen size</strong></p></td><td  ><p>52-inch</p></td></tr><tr><td class="firstcol " ><p><strong>Resolution</strong></p></td><td  ><p>5,120 x 2,160</p></td></tr><tr><td class="firstcol " ><p><strong>Brightness</strong></p></td><td  ><p>400 nits SDR, 600 nits HDR</p></td></tr><tr><td class="firstcol " ><p><strong>Response time</strong></p></td><td  ><p>1 ms</p></td></tr><tr><td class="firstcol " ><p><strong>Refresh rate</strong></p></td><td  ><p>240 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>HDR</strong></p></td><td  ><p>DisplayHDR 600 (no local dimming)</p></td></tr><tr><td class="firstcol " ><p><strong>Features</strong></p></td><td  ><p>VA panel, 2x HDMI 2.1, DisplayPort 2.1, USB-C with 90 W PD, USB hub, 3.5mm audio</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.lg.com/us/monitors/lg-52g930b-b-gaming-monitor" target="_blank">$1,699</a> | <a href="https://www.lg.com/uk/monitors/ultragear-evo/52g930b-b/" target="_blank">£1,499</a> </p></td></tr></tbody></table></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p>✅ <strong>You want the ultimate in big-screen immersion:</strong> 52 inches in an ultrawide format, plus 5K2K resolution, makes for a genuinely cinematic experience.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Do not buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p>❌ <strong>You're expecting OLED speed and contrast:</strong> This LG has an old-school VA panel and the response and lighting control is miles behind OLED.</p></div></div></div></div><p>There is a counter argument in favour of this huge 52-inch ultrawide beast, and it goes something like this. For starters, this LG has various PC gaming-centric features. Most obviously, that includes 240 Hz refresh and the low latency that promises. But you also get lots of granular controls over image quality settings, such as colour spaces and pixel overdrive.</p><p>You likewise wouldn't expect to see the DisplayPort and USB-C interfaces that LG has included. Admittedly, various TVs have at least some of those features. But usually not all. There are also some ergonomic issues to bear in mind. This is a 21:9 aspect 5K2K display. That immediately makes this monitor a touch more usable than a similarly-sized TV.</p><p>Put it this way, there's only so tall you can go with a monitor on your desk before it gets a bit ridiculous. What this monitor offers is immense and immersive width with manageable height.</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="j2ZGnY4HbaRFtrc8RANhzK" name="LG UltraGear 52G930B 00004" alt="LG UltraGear 52G930B gaming monitor" src="https://cdn.mos.cms.futurecdn.net/j2ZGnY4HbaRFtrc8RANhzK-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/j2ZGnY4HbaRFtrc8RANhzK-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: Future)</span></figcaption></figure><p>That it's also curved helps. The 1000R curve means it wraps around you from a typical PC gaming position, which is inherently much closer to the panel than you would normally sit when watching TV. The 5K2K resolution also means you're getting better pixel density than a big 4K TV, albeit you're still not getting great pixel density by PC monitor standards. Hold that thought, we'll come back to it.</p><p>All that said, the LG UltraGear Evo 52G930B isn't automatically an ergonomic master stroke. I have a pretty big desk and this thing barely fits on it. That extreme 1000R curve means that it isn't just very wide, but also quite deep. And, generally, if you are unconvinced by curved monitors, you really aren't going to like this LG. It's really, <em>really </em>curved.</p><p>Anyway, before we come to what kind of actual gaming experience you get from a monster like this, let's cover off a few more speeds and feeds. As I said, there's no local dimming and that means only limited HDR support. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/skTPKvx8E2FxCJjSNC3u9Q-1920-80.jpg" alt="LG UltraGear Evo 52G930B OSD menu" /><figcaption>You can adjust the overdrive settings, but the results are never entirely satisfactory.<small role="credit">Future</small></figcaption></figure></figure><p>Strictly speaking, there's HDR 600 certification. But without local dimming, there simply isn't the lighting control to deliver HDR visuals. However, you do at least get the intrinsic contrast of a VA panel.  LG has rated this one at 4,000:1, which is about three to four times the static contrast that most IPS monitors offer. For the record, SDR brightness is rated at 400 nits.</p><p>Meanwhile, to go with the 240 Hz refresh, there's pixel response of 1 ms grey-to-grey. At least, that's the claim. For most VA panels, poor response is perhaps their most obvious shortcoming. And pixel response specs don't always tell the full story. So, we'll see about that.</p><p>On, then, to the experience this monster delivers. Out of the box—a particularly laborious process given the sheer scale of the thing—and it immediately feels unwieldy. I used a 49-inch 32:9 ultrawide as my primary display for about 18 months so I am not just familiar with using very large PC monitors, I'm absolutely a fan. But the LG UltraGear Evo 52G930B immediately feels too big.</p><div><blockquote><p>I am not just familiar with using very large PC monitors, I'm absolutely a fan. But the LG UltraGear Evo 52G930B immediately feels too big.</p></blockquote></div><p>That's not down to the width, which is comparable to one of those 49-inch ultrawides, but the height and depth. It's all so overwhelming and eats up so much desk space. Of course, the benefit is immersion and, crikey, does this massive monitor dominate your field of view when used at "normal" PC monitor viewing distances.</p><p>I think viewing it that close has surely got to be the point. Yes, you could push it back. But then why are you buying such a huge display? That close-up approach doesn't work so well for TVs, first because they are generally flat and that means the edges of the display end up being viewed at quite an acute angle. The other problem is pixel density.</p><p>Take a 55-inch 4K TV. That has a pixel density of just 80 pixels per inch, which looks really rough and blocky at PC monitor viewing distances. This LG improves that figure to 107 pixels per inch, or very nearly the same as 109 pixels per inch of a typical 1440p 27-inch monitor.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/p9jhekwPsKgKEBWRFS4NUX-1920-80.jpg" alt="LG UltraGear 52G930B gaming monitor" /><figcaption>That's one big ol' glossy panel.<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5JxBKWN6UmwE7dXH275uTb-1920-80.jpg" alt="LG UltraGear 52G930B gaming monitor" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Zrz7yeyTCK4GvEtAeX5vme-1920-80.jpg" alt="LG UltraGear 52G930B gaming monitor" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YLWGN7B9qEswbDNuVhmFRi-1920-80.jpg" alt="LG UltraGear 52G930B gaming monitor" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Okay, that's still not great compared to, for instance, the 138 pixels per inch of a 32-inch 4K monitor, let alone a 27-inch 4K panel. But it's tolerable in terms of things like text quality and overall image detail.</p><p>The same goes for the general appearance of this huge VA panel. It's definitely no OLED when it comes to lighting control. But it's punchy and vibrant and has very good contrast for a conventional LCD monitor. It's also pretty well calibrated in its various modes.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/XAg5aYeiX8gcxL6hdB4jT-1920-80.jpg" alt="LG UltraGear 52G930B gaming monitor" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The one caveat to that observation is that you cannot enable pixel overdrive when using industry-standard colour spaces including sRGB and PCI-P3. Only the gaming-centric presets support pixel overdrive. The idea is to ensure greater colour accuracy in sRGB and DCI-P3. But, personally, I'd prefer the option to run those modes with overdrive.</p><p>Whatever, the most positive aspect of this monitor is definitely immersion. No other monitor I've used so effectively fills your field of view. That's true to an extent that I actually think is borderline impractical for, say, a first person shooter. It's certainly, far, far too big for esports where you want to be able to see pretty much all the screen within a relatively narrow field of view. You're not going to last long if an enemy pops up on the edge of the screen two or three feet outside of your central gaze.</p><div><blockquote><p>For games that are more about exploration and adventure than precision head shots... this monitor is positively epic if possibly a bit exhausting.</p></blockquote></div><p>For games that are more about exploration and adventure than precision head shots, on the other hand, let's say something like Witcher III or the Assassin's Creed series, this monitor is positively epic, if possibly a bit exhausting. Again, immersion is a singular experience. But actually having to swivel your head around extensively to see all parts of the screen, is that something you really want to be doing?</p><p>In that regard, the faster the action on screen, arguably the less sense this screen makes. Along with the ergonomic issues of actually viewing such a large screen, there's pixel response. And it's not great.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/YaDE888XZSzWvCq3TsbsqA-1920-80.jpg" alt="LG UltraGear 52G930B gaming monitor" /><figcaption>LG UltraGear Evo 52G930B above, a 4K 32-inch panel below. The LG may be 5K2K, but its huge size means that the pixel density is nothing special.<small role="credit">Future</small></figcaption></figure></figure><p>VA panels tend to be weakest when it comes to dark tone response and the LG UltraGear Evo 52G930B is no exception. Even with overdrive maxed out, there's visible smearing. At the same time, the fastest overdrive setting also introduces overshoot and inverse ghosting that's bad enough to be visible, in-game. As VA panels go, the response is fine as opposed to particularly bad. But compared to even an IPS monitor, it's a step down. Compared to OLED, it's absolutely hopeless.</p><p>However, for me where this beast really makes sense is strategy games. Frankly, once you've played one of the Total War series rendered across a huge 52-inch 5K2K panel, everything else feels positively puny. The sight of numerous battalions of infantry, regiments of cavalry, rows of siege engines, whatever, sprawling across your field of view is undoubtedly a seminal PC gaming experience.</p><div><blockquote><p>The sight of numerous battalions of infantry...sprawling across your field of view is undoubtedly a seminal PC gaming experience.</p></blockquote></div><p>Another obvious application for a screen like this is driving sims. Okay, the pixel response isn't exactly ideal, but the scale, the ultrawide aspect, and the wrap-around curve makes for one heck of a sim-rig screen.</p><p>At this point you're probably getting the impression that the LG UltraGear Evo 52G930B's appeal is pretty niche. And that's about right. As a general purpose PC monitor, it really doesn't make sense.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/6qjM8U8q57nwRLPCKbQQQR-1920-80.jpg" alt="LG UltraGear 52G930B gaming monitor" /><figcaption>This LG has its shortcomings, but there's no doubting the incredible gaming immersion on offer.<small role="credit">Future</small></figcaption></figure></figure><p>Certainly, it's miles behind the curve (waahwaah) by most technical metrics. Just about everything else at this price point is OLED these days. So, to have a plain old VA panel that doesn't even have local dimming in this segment of the market launching in 2026 feels like a bit of a throwback.</p><p>However, the combination of sheer scale and relatively high resolution does make for a unique proposition and, in at least some positive ways, an experience like no other. Well, almost no other. The obvious comparison here is the even bigger 57-inch VA panel as used by the <a href="https://www.pcgamer.com/samsung-odyssey-neo-g9-g95nc-dual-uhd/">Samsung Odyssey Neo G9 G95NC</a> and <a href="https://www.pcgamer.com/hardware/gaming-monitors/acer-predator-z57-review/">Acer Predator Z57</a>.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/pfNT5rpqaC4eCbXGNCHKHV-1920-80.jpg" alt="LG UltraGear 52G930B gaming monitor" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Right now, you can <a href="https://www.amazon.com/Samsung-DisplayPort-Mini-LED-DisplayHDR-LS57CG952NNXZA/dp/B0CDQM55C9" target="_blank">bag the Samsung for $1,449 on Amazon</a>. Not only is it even bigger, it's far higher resolution at 7,680 x 2,160 pixels and has full array local dimming with over 2,000 zones and therefore some proper HDR capabilites. Similar applies to the Acer, which is largely the same spec and available for $1,599.</p><p>Of course, that huge resolution, which is effectively dual-4K, makes for monumental GPU load. Even an RTX 5090 will struggle at times. But the value comparison certainly isn't comfortable for this new LG.</p><p>In the end, then, the LG UltraGear Evo 52G930B isn't going to make sense for almost anyone, especially not with something even bigger, higher resolution and more capable available for less money. But if you're gaming in just the right niche, if money doesn't really matter, and if you feel like it, well, what the heck, why not pull the trigger and march those armies across the Nile basin?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Graphics card wholesale prices are on the rise once again in China, so it's time to brace yourself for even more GPU pricing pain ]]></title>
                                                                                                <dc:content><![CDATA[ <p>According to hardware outlet <a href="https://mp.weixin.qq.com/s/2cOeg9QC49VH6QDL1XGleQ" target="_blank">ChannelGate</a>, the wholesale spot prices of several RTX 50-series graphics cards are on the rise once again in China, which is an ominous indicator for consumer pricing worldwide.</p><p>The 16 GB <a href="https://www.pcgamer.com/hardware/graphics-cards/nvidia-rtx-5080-founders-edition-review/" target="_blank">RTX 5080</a> is said to have increased by around 2000 CNY, which equates to around $300, while the <a href="https://www.pcgamer.com/hardware/graphics-cards/nvidia-rtx-5070-ti-review-msi-ventus-3x/" target="_blank">RTX 5070 Ti</a> has seen an increase of around 600 CNY ($90). In the RTX 5080's case, that puts the current wholesale spot price at around 14,500-15,000 yuan, which equates to a truly stunning $2,171-$2,246 range when converted to US dollars.</p><p>Retail graphics card pricing has already gone bananas in recent months, with US prices surging to hitherto unthinkable levels. The cheapest RTX 5080 we can currently find is <a href="https://www.bestbuy.com/product/pny-nvidia-geforce-rtx-5080-overclocked-16gb-gddr7-pci-express-5-0-graphics-card-with-triple-fan-black/JXF2C46ZZH/sku/6616903" target="_blank">a wallet-aching $1,850</a>, while a mere $70 separates the <a href="https://www.pcgamer.com/hardware/graphics-cards/only-usd70-separates-rtx-5050-rtx-5060-and-rtx-5060-ti-and-the-rtx-5060-ti-16-gb-is-now-the-same-price-as-the-rtx-5070-in-what-i-can-only-describe-as-pure-carnage/" target="_blank">RTX 5050, RTX 5060, and RTX 5060 Ti 8 GB</a> on our GPU deals page.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async></script><p>Yes, that means <a href="https://www.bestbuy.com/product/gigabyte-geforce-rtx-5050-windforce-oc-8gb-gddr6-pci-express-5-0-graphics-card-black/J3ZW9X7YLY" target="_blank">the cheapest RTX 5050 we can currently find is $400</a>. That's a silly price for Nvidia's slowest gaming GPU of the current generation.</p><p>While the 16 GB RTX 5080 has seen the largest jump in price so far (exacerbated by its <a href="https://www.pcgamer.com/hardware/graphics-cards/schrodingers-gpu-set-for-an-early-2027-release-as-the-dead-alive-24-gb-rtx-5080-super-box-is-shaken-once-more/" target="_blank">reported discontinuation in favour of a 24 GB version</a>), ChannelGate also says that <a href="https://mp.weixin.qq.com/s/Np_NM2e94MZYcKZTv9S30g" target="_blank">Asus has just updated its pricing policy across the stack</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:3702px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="pSMSW8SzJawfrXX5GVgXtk" name="nvidia-rtx-5080-06" alt="Nvidia RTX 5080 Founders Edition graphics card from different angles" src="https://cdn.mos.cms.futurecdn.net/pSMSW8SzJawfrXX5GVgXtk-1920-80.jpg" mos="" align="middle" fullscreen="" width="3702" height="2083" 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>This amounts to a 1000 yuan ($150) increase for the RTX 5080 16 GB, a 200 yuan ($30) increase for the RTX 5070 Ti, RTX 5070, and RTX 5060 Ti 16 GB, and a 100-300 yuan increase for all AMD cards.</p><p>While some of those increases may seem small, they're an indication that we might be looking at an even grimmer winter for anyone who wants to upgrade their graphics card for reasonable cash. And without a major change, likely a grim 2027, too.</p><p>But hey, ChannelGate does give us some info on the expected wholesale price of the mooted RTX 5080 24 GB. The outlet says it could potentially reach 19,999 yuan. That's, err, just under $3,000 at the current exchange rate.</p><p>Well, this is all very depressing news. The <a href="https://www.pcgamer.com/hardware/memory/ram-and-storage-is-ridiculously-expensive-right-now-because-of-drumroll-ai-of-course-and-theres-little-reason-to-think-prices-will-drop-any-time-soon/" target="_blank">global memory crisis</a> continues to bite, working alongside <a href="https://www.pcgamer.com/hardware/graphics-cards/theres-a-looming-gpu-supply-crisis-which-means-prices-are-likely-to-get-a-whole-lot-worse-and-its-not-just-because-of-memory/" target="_blank">GPU production shortages</a> to create a graphics card market that looks increasingly ridiculous as the months go on. At least <a href="https://www.pcgamer.com/cheap-gaming-monitor-deals/" target="_blank">gaming monitors</a> are still pretty cheap? Silver linings, and all that.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/graphics-cards/graphics-card-wholesale-prices-are-on-the-rise-once-again-in-china-so-its-time-to-brace-yourself-for-even-more-gpu-pricing-pain/</link>
                                                                            <description>
                            <![CDATA[ And I thought I was as braced as I could get. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">vowrH6f62RUGV2XMCoLW3g</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Hjb6HkSyfSfeMhcaps2vXR-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 13:36:34 +0000</pubDate>                                                                                                                                <updated>Fri, 23 Oct 2026 13:36:55 +0000</updated>
                                                                                                                                            <category><![CDATA[Graphics Cards]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-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/Hjb6HkSyfSfeMhcaps2vXR-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Four budget graphics cards lined up in a row on a wooden desk]]></media:description>                                                            <media:text><![CDATA[Four budget graphics cards lined up in a row on a wooden desk]]></media:text>
                                <media:title type="plain"><![CDATA[Four budget graphics cards lined up in a row on a wooden desk]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Hjb6HkSyfSfeMhcaps2vXR-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>According to hardware outlet <a href="https://mp.weixin.qq.com/s/2cOeg9QC49VH6QDL1XGleQ" target="_blank">ChannelGate</a>, the wholesale spot prices of several RTX 50-series graphics cards are on the rise once again in China, which is an ominous indicator for consumer pricing worldwide.</p><p>The 16 GB <a href="https://www.pcgamer.com/hardware/graphics-cards/nvidia-rtx-5080-founders-edition-review/" target="_blank">RTX 5080</a> is said to have increased by around 2000 CNY, which equates to around $300, while the <a href="https://www.pcgamer.com/hardware/graphics-cards/nvidia-rtx-5070-ti-review-msi-ventus-3x/" target="_blank">RTX 5070 Ti</a> has seen an increase of around 600 CNY ($90). In the RTX 5080's case, that puts the current wholesale spot price at around 14,500-15,000 yuan, which equates to a truly stunning $2,171-$2,246 range when converted to US dollars.</p><p>Retail graphics card pricing has already gone bananas in recent months, with US prices surging to hitherto unthinkable levels. The cheapest RTX 5080 we can currently find is <a href="https://www.bestbuy.com/product/pny-nvidia-geforce-rtx-5080-overclocked-16gb-gddr7-pci-express-5-0-graphics-card-with-triple-fan-black/JXF2C46ZZH/sku/6616903" target="_blank">a wallet-aching $1,850</a>, while a mere $70 separates the <a href="https://www.pcgamer.com/hardware/graphics-cards/only-usd70-separates-rtx-5050-rtx-5060-and-rtx-5060-ti-and-the-rtx-5060-ti-16-gb-is-now-the-same-price-as-the-rtx-5070-in-what-i-can-only-describe-as-pure-carnage/" target="_blank">RTX 5050, RTX 5060, and RTX 5060 Ti 8 GB</a> on our GPU deals page.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async></script><p>Yes, that means <a href="https://www.bestbuy.com/product/gigabyte-geforce-rtx-5050-windforce-oc-8gb-gddr6-pci-express-5-0-graphics-card-black/J3ZW9X7YLY" target="_blank">the cheapest RTX 5050 we can currently find is $400</a>. That's a silly price for Nvidia's slowest gaming GPU of the current generation.</p><p>While the 16 GB RTX 5080 has seen the largest jump in price so far (exacerbated by its <a href="https://www.pcgamer.com/hardware/graphics-cards/schrodingers-gpu-set-for-an-early-2027-release-as-the-dead-alive-24-gb-rtx-5080-super-box-is-shaken-once-more/" target="_blank">reported discontinuation in favour of a 24 GB version</a>), ChannelGate also says that <a href="https://mp.weixin.qq.com/s/Np_NM2e94MZYcKZTv9S30g" target="_blank">Asus has just updated its pricing policy across the stack</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:3702px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="pSMSW8SzJawfrXX5GVgXtk" name="nvidia-rtx-5080-06" alt="Nvidia RTX 5080 Founders Edition graphics card from different angles" src="https://cdn.mos.cms.futurecdn.net/pSMSW8SzJawfrXX5GVgXtk-1920-80.jpg" mos="" align="middle" fullscreen="" width="3702" height="2083" 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>This amounts to a 1000 yuan ($150) increase for the RTX 5080 16 GB, a 200 yuan ($30) increase for the RTX 5070 Ti, RTX 5070, and RTX 5060 Ti 16 GB, and a 100-300 yuan increase for all AMD cards.</p><p>While some of those increases may seem small, they're an indication that we might be looking at an even grimmer winter for anyone who wants to upgrade their graphics card for reasonable cash. And without a major change, likely a grim 2027, too.</p><p>But hey, ChannelGate does give us some info on the expected wholesale price of the mooted RTX 5080 24 GB. The outlet says it could potentially reach 19,999 yuan. That's, err, just under $3,000 at the current exchange rate.</p><p>Well, this is all very depressing news. The <a href="https://www.pcgamer.com/hardware/memory/ram-and-storage-is-ridiculously-expensive-right-now-because-of-drumroll-ai-of-course-and-theres-little-reason-to-think-prices-will-drop-any-time-soon/" target="_blank">global memory crisis</a> continues to bite, working alongside <a href="https://www.pcgamer.com/hardware/graphics-cards/theres-a-looming-gpu-supply-crisis-which-means-prices-are-likely-to-get-a-whole-lot-worse-and-its-not-just-because-of-memory/" target="_blank">GPU production shortages</a> to create a graphics card market that looks increasingly ridiculous as the months go on. At least <a href="https://www.pcgamer.com/cheap-gaming-monitor-deals/" target="_blank">gaming monitors</a> are still pretty cheap? Silver linings, and all that.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Vote now: The Mammoth Tank and Priest go head-to-head to determine the best RTS unit of all time ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Our month-long RTS tournament is coming to an end. We started with a <a href="https://www.pcgamer.com/games/rts/the-greatest-rts-units-of-all-time-determined-by-democracy/" target="_blank">shortlist of 16 units</a>, and now we're down to the final two—both of which were determined by your votes. This is what democracy is all about, folks! Determining what RTS unit has the right to call itself the greatest unit of all time. </p><p>It's been an emotional journey. Dreams shattered. Friendships ruined. Drug tests performed on a member of the clergy. But this is important, worthwhile work. But let's stop faffing around and get stuck in. </p><h3 class="article-body__section" id="section-the-final-bracket"><span>The final 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:2560px;"><p class="vanilla-image-block" style="padding-top:83.98%;"><img id="WCp5SkHwUS5622LG3MMji3" name="Untitled Bracket (1)" alt="The final bracket" src="https://cdn.mos.cms.futurecdn.net/WCp5SkHwUS5622LG3MMji3-1920-80.jpg" mos="" align="middle" fullscreen="1" width="2560" height="2150" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/WCp5SkHwUS5622LG3MMji3-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: BracketHQ)</span></figcaption></figure><p>Well, it looks like my prediction from last week did not come to pass. A tragedy!</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:581px;"><p class="vanilla-image-block" style="padding-top:14.97%;"><img id="npCkiwoH7QgwrqveZFRSJG" name="Untitled" alt="Comment" src="https://cdn.mos.cms.futurecdn.net/npCkiwoH7QgwrqveZFRSJG-1920-80.jpg" mos="" align="middle" fullscreen="1" width="581" height="87" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/npCkiwoH7QgwrqveZFRSJG-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: Future)</span></figcaption></figure><p>With the humble Peon failing to return from the dead, I was left with only one of my original picks in the running: the unstoppable Pride of Hiigara from Homeworld 2. As it turns out, it's actually quite stoppable. The indomitable Mammoth Tank from Red Alert gave it a beating, winning with 60% of the votes. </p><p>I will gracefully accept this defeat. I mean c'mon, the Mammoth Tank is a legend. Could it realistically destroy a mothership that can spit out a fleet of capital ships? Probably not! But this tournament is not determining which unit would win in a fight. "The best" can mean a lot of different things, and there's no denying the Mammoth Tank is awesome. </p><p>I do, however, take umbrage with the Priest defeating the Super Star Destroyer. 70% of the votes! This is madness. That wololo-ing thief has no honour. But even though this outcome is ridiculous, I must accept the will of the people. I just hope that was the horrible little man's last victory.</p><p>So we're down to two. Mammoth Tank vs Priest. I'm going to give you all until the <strong>end of Wednesday (BST)</strong> to vote. Can this icon of the Soviet war machine defeat God's pal? We'll find out next week. </p><h3 class="article-body__section" id="section-mammoth-tank-vs-priest"><span>Mammoth Tank vs Priest</span></h3><h2 id="mammoth-tank-command-and-conquer-red-alert">Mammoth Tank (Command and Conquer: Red Alert)</h2><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:200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="o47xM2nxfYTfpjsPJQBV5C" name="mammoth tank" alt="Best RTS units" src="https://cdn.mos.cms.futurecdn.net/o47xM2nxfYTfpjsPJQBV5C-1920-80.jpg" mos="" align="right" fullscreen="" width="200" height="200" attribution="" endorsement="" class="pull-rightinline"></p></div></div><figcaption itemprop="caption description" class="pull-right inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: EA)</span></figcaption></figure><p>God bless these great, trundling beasts—implacable Soviet strength wrought in steel and pig iron.</p><p>Mammoth Tanks are unfathomably costly and painfully slow, but <em>whatever</em>. I'm convinced just one of them could probably win the entire RA1 Soviet campaign by itself. Akh-knowledged. <em>—Joshua Wolens, News Writer</em></p><h2 id="priest-age-of-empires">Priest (Age of Empires)</h2><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:200px;"><p class="vanilla-image-block" style="padding-top:99.50%;"><img id="7CnLf6294kX3djscSY93kP" name="ezgif-3ce144193b8a0ece" alt="RTS best units" src="https://cdn.mos.cms.futurecdn.net/7CnLf6294kX3djscSY93kP-1920-80.gif" mos="" align="right" fullscreen="" width="200" height="199" attribution="" endorsement="" class="pull-rightinline"></p></div></div><figcaption itemprop="caption description" class="pull-right inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Xbox)</span></figcaption></figure><p>"Wololo." I win. <em>—Jody Macgregor, Weekend Editor</em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XYkpbW"></div>                            </div>                            <script src="https://kwizly.com/embed/XYkpbW.js" async></script><div class="product"><a data-dimension112="96e84a86-cee3-11f1-a602-57c51d515b9c" 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="96e84a86-cee3-11f1-a602-57c51d515b9c" 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/rts/vote-now-the-mammoth-tank-and-priest-go-head-to-head-to-determine-the-best-rts-unit-of-all-time/</link>
                                                                            <description>
                            <![CDATA[ Can organised religion defeat armoured warfare? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3sbgVsmDEUvgw3vTp92TRE</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/LJUoWcbpT8bkdrm5ijDGa4-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 13:16:54 +0000</pubDate>                                                                                                                                <updated>Sat, 24 Oct 2026 18:15:53 +0000</updated>
                                                                                                                                            <category><![CDATA[RTS]]></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>
                                                                                                                                <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/LJUoWcbpT8bkdrm5ijDGa4-1920-80.jpg">
                                                            <media:credit><![CDATA[Paradox/Getty Images - davit85]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A split image with a tank intimidating the pope from Crusader Kings 3]]></media:description>                                                            <media:text><![CDATA[A split image with a tank intimidating the pope from Crusader Kings 3]]></media:text>
                                <media:title type="plain"><![CDATA[A split image with a tank intimidating the pope from Crusader Kings 3]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/LJUoWcbpT8bkdrm5ijDGa4-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Our month-long RTS tournament is coming to an end. We started with a <a href="https://www.pcgamer.com/games/rts/the-greatest-rts-units-of-all-time-determined-by-democracy/" target="_blank">shortlist of 16 units</a>, and now we're down to the final two—both of which were determined by your votes. This is what democracy is all about, folks! Determining what RTS unit has the right to call itself the greatest unit of all time. </p><p>It's been an emotional journey. Dreams shattered. Friendships ruined. Drug tests performed on a member of the clergy. But this is important, worthwhile work. But let's stop faffing around and get stuck in. </p><h3 class="article-body__section" id="section-the-final-bracket"><span>The final 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:2560px;"><p class="vanilla-image-block" style="padding-top:83.98%;"><img id="WCp5SkHwUS5622LG3MMji3" name="Untitled Bracket (1)" alt="The final bracket" src="https://cdn.mos.cms.futurecdn.net/WCp5SkHwUS5622LG3MMji3-1920-80.jpg" mos="" align="middle" fullscreen="1" width="2560" height="2150" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/WCp5SkHwUS5622LG3MMji3-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: BracketHQ)</span></figcaption></figure><p>Well, it looks like my prediction from last week did not come to pass. A tragedy!</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:581px;"><p class="vanilla-image-block" style="padding-top:14.97%;"><img id="npCkiwoH7QgwrqveZFRSJG" name="Untitled" alt="Comment" src="https://cdn.mos.cms.futurecdn.net/npCkiwoH7QgwrqveZFRSJG-1920-80.jpg" mos="" align="middle" fullscreen="1" width="581" height="87" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/npCkiwoH7QgwrqveZFRSJG-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: Future)</span></figcaption></figure><p>With the humble Peon failing to return from the dead, I was left with only one of my original picks in the running: the unstoppable Pride of Hiigara from Homeworld 2. As it turns out, it's actually quite stoppable. The indomitable Mammoth Tank from Red Alert gave it a beating, winning with 60% of the votes. </p><p>I will gracefully accept this defeat. I mean c'mon, the Mammoth Tank is a legend. Could it realistically destroy a mothership that can spit out a fleet of capital ships? Probably not! But this tournament is not determining which unit would win in a fight. "The best" can mean a lot of different things, and there's no denying the Mammoth Tank is awesome. </p><p>I do, however, take umbrage with the Priest defeating the Super Star Destroyer. 70% of the votes! This is madness. That wololo-ing thief has no honour. But even though this outcome is ridiculous, I must accept the will of the people. I just hope that was the horrible little man's last victory.</p><p>So we're down to two. Mammoth Tank vs Priest. I'm going to give you all until the <strong>end of Wednesday (BST)</strong> to vote. Can this icon of the Soviet war machine defeat God's pal? We'll find out next week. </p><h3 class="article-body__section" id="section-mammoth-tank-vs-priest"><span>Mammoth Tank vs Priest</span></h3><h2 id="mammoth-tank-command-and-conquer-red-alert">Mammoth Tank (Command and Conquer: Red Alert)</h2><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:200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="o47xM2nxfYTfpjsPJQBV5C" name="mammoth tank" alt="Best RTS units" src="https://cdn.mos.cms.futurecdn.net/o47xM2nxfYTfpjsPJQBV5C-1920-80.jpg" mos="" align="right" fullscreen="" width="200" height="200" attribution="" endorsement="" class="pull-rightinline"></p></div></div><figcaption itemprop="caption description" class="pull-right inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: EA)</span></figcaption></figure><p>God bless these great, trundling beasts—implacable Soviet strength wrought in steel and pig iron.</p><p>Mammoth Tanks are unfathomably costly and painfully slow, but <em>whatever</em>. I'm convinced just one of them could probably win the entire RA1 Soviet campaign by itself. Akh-knowledged. <em>—Joshua Wolens, News Writer</em></p><h2 id="priest-age-of-empires">Priest (Age of Empires)</h2><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:200px;"><p class="vanilla-image-block" style="padding-top:99.50%;"><img id="7CnLf6294kX3djscSY93kP" name="ezgif-3ce144193b8a0ece" alt="RTS best units" src="https://cdn.mos.cms.futurecdn.net/7CnLf6294kX3djscSY93kP-1920-80.gif" mos="" align="right" fullscreen="" width="200" height="199" attribution="" endorsement="" class="pull-rightinline"></p></div></div><figcaption itemprop="caption description" class="pull-right inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Xbox)</span></figcaption></figure><p>"Wololo." I win. <em>—Jody Macgregor, Weekend Editor</em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XYkpbW"></div>                            </div>                            <script src="https://kwizly.com/embed/XYkpbW.js" async></script><div class="product"><a data-dimension112="96e84a86-cee3-11f1-a602-57c51d515b9c" 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="96e84a86-cee3-11f1-a602-57c51d515b9c" 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[ All Genshin Impact 7.2 livestream codes ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The <strong>Genshin Impact 7.2 livestream codes </strong>have arrived, providing a bit of bonus currency to use when wishing on the new characters coming in this version. For those who don't know, Hoyoverse runs a livestream every six weeks for its games, showing off the new content coming with the update, but as an added sweetener, it also provides three livestream codes.</p><p>Banner wise it looks like we have electro character, Mitya, and also electro, Valeriy. As usual, I'll put the codes down below as they drop during the stream. Make sure to redeem them asap, since livestream codes <strong>usually expire within a day</strong> or so.</p><h2 id="genshin-impact-codes-all-current-livestream-primogems">Genshin Impact codes: All current livestream Primogems</h2><ul><li><strong>HourOfRuin</strong> - 100 Primogems and 10 Mystic Enhancement Ore</li><li><strong>ExpertMitya</strong> - 100 Primogems and five Hero’s Wit</li><li><strong>PhotoTime</strong> - 100 Primogems and 50,000 Mora</li></ul><h2 id="how-to-redeem-genshin-impact-codes">How to redeem Genshin Impact codes</h2><p>You'll need to reach Adventure Rank 10 to redeem your Genshin livestream codes, but this is relatively easy to achieve if you've just started playing. Once done, there are two methods to claim your codes. </p><p>The first is through the game:</p><ol start="1"><li>Launch Genshin Impact</li><li>Open the in-game menu</li><li>Select Settings and then Account</li><li>Click Redeem Now and paste a code into the box</li><li>Claim your Primogems from the in-game mailbox</li></ol><p>Or you can redeem codes online through the redemption website:</p><ol start="1"><li>Navigate to the <a href="https://genshin.hoyoverse.com/en/gift">Genshin Impact code redemption</a> website</li><li>Enter your info and select character region</li><li>Place a code in the box and click redeem</li><li>Grab your rewards via the in-game mailbox</li></ol><div class="product"><a data-dimension112="c132b2da-cd5e-11f1-8250-fbdc8148f6cb" 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="c132b2da-cd5e-11f1-8250-fbdc8148f6cb" 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/rpg/genshin-impact-codes-7-2-livestream/</link>
                                                                            <description>
                            <![CDATA[ Collect the latest Primogems from the special program. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">oMVZNb48ra93YvE7wZwaPc</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/DVhxJyYVaZML3TuJ3Hqjd9-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 12:04:33 +0000</pubDate>                                                                                                                                <updated>Fri, 23 Oct 2026 12:38:17 +0000</updated>
                                                                                                                                            <category><![CDATA[RPG]]></category>
                                                    <category><![CDATA[Games]]></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/DVhxJyYVaZML3TuJ3Hqjd9-1920-80.jpg">
                                                            <media:credit><![CDATA[Hoyoverse]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Genshin Impact 7.2 codes - The Traveler with Snezhnaya characters]]></media:description>                                                            <media:text><![CDATA[Genshin Impact 7.2 codes - The Traveler with Snezhnaya characters]]></media:text>
                                <media:title type="plain"><![CDATA[Genshin Impact 7.2 codes - The Traveler with Snezhnaya characters]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/DVhxJyYVaZML3TuJ3Hqjd9-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The <strong>Genshin Impact 7.2 livestream codes </strong>have arrived, providing a bit of bonus currency to use when wishing on the new characters coming in this version. For those who don't know, Hoyoverse runs a livestream every six weeks for its games, showing off the new content coming with the update, but as an added sweetener, it also provides three livestream codes.</p><p>Banner wise it looks like we have electro character, Mitya, and also electro, Valeriy. As usual, I'll put the codes down below as they drop during the stream. Make sure to redeem them asap, since livestream codes <strong>usually expire within a day</strong> or so.</p><h2 id="genshin-impact-codes-all-current-livestream-primogems">Genshin Impact codes: All current livestream Primogems</h2><ul><li><strong>HourOfRuin</strong> - 100 Primogems and 10 Mystic Enhancement Ore</li><li><strong>ExpertMitya</strong> - 100 Primogems and five Hero’s Wit</li><li><strong>PhotoTime</strong> - 100 Primogems and 50,000 Mora</li></ul><h2 id="how-to-redeem-genshin-impact-codes">How to redeem Genshin Impact codes</h2><p>You'll need to reach Adventure Rank 10 to redeem your Genshin livestream codes, but this is relatively easy to achieve if you've just started playing. Once done, there are two methods to claim your codes. </p><p>The first is through the game:</p><ol start="1"><li>Launch Genshin Impact</li><li>Open the in-game menu</li><li>Select Settings and then Account</li><li>Click Redeem Now and paste a code into the box</li><li>Claim your Primogems from the in-game mailbox</li></ol><p>Or you can redeem codes online through the redemption website:</p><ol start="1"><li>Navigate to the <a href="https://genshin.hoyoverse.com/en/gift">Genshin Impact code redemption</a> website</li><li>Enter your info and select character region</li><li>Place a code in the box and click redeem</li><li>Grab your rewards via the in-game mailbox</li></ol><div class="product"><a data-dimension112="c132b2da-cd5e-11f1-8250-fbdc8148f6cb" 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="c132b2da-cd5e-11f1-8250-fbdc8148f6cb" 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[ Stolen RTX 5090 from Brazilian airport forklift heist reportedly turns up on second hand market for $6,400, but the rest remain AWOL ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I reported on <a href="https://www.pcgamer.com/hardware/graphics-cards/two-entire-pallets-of-rtx-5090s-have-gone-missing-from-a-brazilian-airport-usd495-000-worth-of-unobtanium-graphics-cards-now-presumably-at-large/" target="_blank">a missing shipment of RTX 5090s</a> earlier this week, with two pallets worth of the highly-prized graphics cards presumably stolen from a Brazilian airport. Now new details of what looks to be a heist have emerged, and one of the GPUs has reportedly ended up on a second-hand marketplace.</p><p><a href="https://gmconline.com.br/noticias/policial/furto-de-carga-de-r-25-milhoes-de-empresa-de-maringa-anuncio-sai-do-ar-e-tres-funcionarios-de-aeroporto-sao-identificados/" target="_blank">GMC Online</a> reports that Brazilian news channel Jornal da Band spotted the graphics card for sale on OLX, an online marketplace for used wares. The serial number of the card is said to match one of the missing units, with the price set at R$32,000, equivalent to around $6,400 (via <a href="https://videocardz.com/newz/someone-tried-to-sell-an-rtx-5090-from-a-stolen-470k-shipment-online-with-its-serial-number-visible" target="_blank">Videocardz</a>).</p><p>The broadcaster has revealed new information on the missing cards, said to be obtained from a Brazilian police report. According to the outlet, two outsourced forklift operators removed the pallets from an airport warehouse on September 21, while a third employee allegedly helped to move them through electronic security controls.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async></script><p>The shipment of GPUs belongs to Brazilian electronics distributer Oderço. The CEO of the Oderço Group, Oderço Matos, has previously <a href="https://www.instagram.com/reel/DekU56QjpYv/" target="_blank">spoken on the company's Instagram account</a> about the missing GPUs, calling for more clarification from the authorities as to what exactly happened to the company's cargo.</p><p>GMC Online reports that Guarulhos International Airport has responded to the outlet, confirming that it had notified the authorities of the incident and is now in contact with the importer's representative. </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:3123px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="rhWu44sDqYPTAiiJjUGKsE" name="nvidia-rtx-5090-01" alt="Nvidia RTX 5090 Founders Edition graphics card on different backgrounds" src="https://cdn.mos.cms.futurecdn.net/rhWu44sDqYPTAiiJjUGKsE-1920-80.jpg" mos="" align="middle" fullscreen="" width="3123" height="1757" 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>Representatives from the airport say the investigation is now the responsibility of the appropriate authorities, and that it has provided guidance for initiating the compensation process.</p><p>The Oderço Group CEO has stated that the missing GPUs were worth R$2.5 million ($495,000) at cost, so we're not talking about pocket change here. RTX 5090s have become extremely difficult to find in recent months, although Nvidia GeForce chief Jeff Fisher has <a href="https://www.pcgamer.com/hardware/graphics-cards/rtx-5090-not-dead-says-nvidia-but-its-mysteriously-vanished-from-the-companys-official-marketplace/" target="_blank">insisted that the ultra high-end consumer card is still in production</a>.</p><p>Regardless, we've stopped tracking the card on our <a href="https://www.pcgamer.com/hardware/graphics-cards/graphics-card-price-watch-deals/" target="_blank">graphics card price watch</a> page, as the market is full of ludicrously priced listings from third party sellers. Even a single card is worth a huge amount of cash these days—but by the looks of things, shifting two pallets worth of ill-gotten GPUs without someone picking up on it may prove to be an impossible task.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/graphics-cards/stolen-rtx-5090-from-brazilian-airport-forklift-heist-reportedly-turns-up-on-second-hand-market-for-usd6-400-but-the-rest-remain-awol/</link>
                                                                            <description>
                            <![CDATA[ These things have serial numbers, you know. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ZG528uzidPNE4vxhse9QtE</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/5bd3uhMH4zZZvhutBqHPbM-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 10:42:31 +0000</pubDate>                                                                                                                                <updated>Fri, 23 Oct 2026 13:33:37 +0000</updated>
                                                                                                                                            <category><![CDATA[Graphics Cards]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-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/5bd3uhMH4zZZvhutBqHPbM-1920-80.jpg">
                                                            <media:credit><![CDATA[Deep Field Games/Nvidia]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A split image of a forklift in Abiotic Factor and an RTX 5090 graphics card]]></media:description>                                                            <media:text><![CDATA[A split image of a forklift in Abiotic Factor and an RTX 5090 graphics card]]></media:text>
                                <media:title type="plain"><![CDATA[A split image of a forklift in Abiotic Factor and an RTX 5090 graphics card]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/5bd3uhMH4zZZvhutBqHPbM-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I reported on <a href="https://www.pcgamer.com/hardware/graphics-cards/two-entire-pallets-of-rtx-5090s-have-gone-missing-from-a-brazilian-airport-usd495-000-worth-of-unobtanium-graphics-cards-now-presumably-at-large/" target="_blank">a missing shipment of RTX 5090s</a> earlier this week, with two pallets worth of the highly-prized graphics cards presumably stolen from a Brazilian airport. Now new details of what looks to be a heist have emerged, and one of the GPUs has reportedly ended up on a second-hand marketplace.</p><p><a href="https://gmconline.com.br/noticias/policial/furto-de-carga-de-r-25-milhoes-de-empresa-de-maringa-anuncio-sai-do-ar-e-tres-funcionarios-de-aeroporto-sao-identificados/" target="_blank">GMC Online</a> reports that Brazilian news channel Jornal da Band spotted the graphics card for sale on OLX, an online marketplace for used wares. The serial number of the card is said to match one of the missing units, with the price set at R$32,000, equivalent to around $6,400 (via <a href="https://videocardz.com/newz/someone-tried-to-sell-an-rtx-5090-from-a-stolen-470k-shipment-online-with-its-serial-number-visible" target="_blank">Videocardz</a>).</p><p>The broadcaster has revealed new information on the missing cards, said to be obtained from a Brazilian police report. According to the outlet, two outsourced forklift operators removed the pallets from an airport warehouse on September 21, while a third employee allegedly helped to move them through electronic security controls.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async></script><p>The shipment of GPUs belongs to Brazilian electronics distributer Oderço. The CEO of the Oderço Group, Oderço Matos, has previously <a href="https://www.instagram.com/reel/DekU56QjpYv/" target="_blank">spoken on the company's Instagram account</a> about the missing GPUs, calling for more clarification from the authorities as to what exactly happened to the company's cargo.</p><p>GMC Online reports that Guarulhos International Airport has responded to the outlet, confirming that it had notified the authorities of the incident and is now in contact with the importer's representative. </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:3123px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="rhWu44sDqYPTAiiJjUGKsE" name="nvidia-rtx-5090-01" alt="Nvidia RTX 5090 Founders Edition graphics card on different backgrounds" src="https://cdn.mos.cms.futurecdn.net/rhWu44sDqYPTAiiJjUGKsE-1920-80.jpg" mos="" align="middle" fullscreen="" width="3123" height="1757" 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>Representatives from the airport say the investigation is now the responsibility of the appropriate authorities, and that it has provided guidance for initiating the compensation process.</p><p>The Oderço Group CEO has stated that the missing GPUs were worth R$2.5 million ($495,000) at cost, so we're not talking about pocket change here. RTX 5090s have become extremely difficult to find in recent months, although Nvidia GeForce chief Jeff Fisher has <a href="https://www.pcgamer.com/hardware/graphics-cards/rtx-5090-not-dead-says-nvidia-but-its-mysteriously-vanished-from-the-companys-official-marketplace/" target="_blank">insisted that the ultra high-end consumer card is still in production</a>.</p><p>Regardless, we've stopped tracking the card on our <a href="https://www.pcgamer.com/hardware/graphics-cards/graphics-card-price-watch-deals/" target="_blank">graphics card price watch</a> page, as the market is full of ludicrously priced listings from third party sellers. Even a single card is worth a huge amount of cash these days—but by the looks of things, shifting two pallets worth of ill-gotten GPUs without someone picking up on it may prove to be an impossible task.</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[ Asus ROG Rapture GT-BN98 router review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Asus ROG Rapture GT-BN98 Pro"></div><p>We’re not surprised that Asus has delivered the first Wi-Fi 8 router. The company has been ruling the router roost recently and notably broke the 3,000 Mbps transfer-rate barrier with its AI-enhanced, ROG Rapture GT-BE19000AI Wi-Fi 7 gaming router. That’s old hat now that its functionally-identical Wi-Fi 8 sibling, the <a href="https://rog.asus.com/networking/rog-rapture-gt-bn98/" target="_blank">Asus ROG Rapture GT-BN98</a>, is here. Or is it?</p><p>Wi-Fi 8 (also known as 802.11bn) is expected to be officially ratified in late 2028. By the time you read this, at least four routers will have hit the market, but no laptops (or other devices) are in sight. But, that shouldn’t matter.</p><p>We've spent some time in the last year testing top-tier Wi-Fi 7 set-ups, and seeing they can be faster than some 10 Gbps wired connections, so why do we need another Wi-Fi generation? However, unlike previous generations, Wi-Fi 8 isn’t about delivering more speed, it’s about delivering a more-reliable signal (including more-robust uploading), to new and old devices alike, in crowded Wi-Fi environments, over greater distances, in real-world environments. </p><div ><table><caption>GT-BN98 Specs</caption><tbody><tr><td class="firstcol " ><p><strong>Network standard</strong></p></td><td  ><p>WiFi 8 (802.11bn) (Draft)</p></td></tr><tr><td class="firstcol " ><p><strong>Speed</strong></p></td><td  ><p>Wi-Fi 24.43 Mbps</p></td></tr><tr><td class="firstcol " ><p><strong>Operating frequency</strong></p></td><td  ><p>2.4 GHz, 5 GHz, 6 GHz</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>1× 10 Gbps WAN/LAN, 1× 2.5 Gbps WAN/LAN, 1× 10 Gbps LAN, 3× 2.5 Gbps LAN, USB 3.2 Gen 1, USB 2.0</p></td></tr><tr><td class="firstcol " ><p><strong>Features</strong></p></td><td  ><p>Quad-Core CPU w/ NPU, parental controls, edge security controls, game acceleration, Docker, Portainer, AiQoS, multi-SSID, Alexa and Google voice assistants</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions</strong></p></td><td  ><p>350.41 x 350.41 x 220.6 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>2.07 kg</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>~$999 / £790</p></td></tr></tbody></table></div><p>This should particularly benefit networks with numerous IoT and smart-home devices; gamers who require reliable, very-low latencies; people in high-density apartment blocks; industrial facilities filled with metal and RF interference; and streamers uploading live footage. </p><p>That pretty much covers everyone.</p><p>Aficionados will know that the technologies used to manifest these advances are denoted by a smorgasbord of acronyms and Wi-Fi 8 doesn’t disappoint...</p><p>Primary benefits stem from Modulation and Coding Schemes (MCS) that support Unequal Modulation (UEQM). This means that, when you move further away from the signal, the smoother the performance drop-off curve will be. With previous generations, whenever the signal-to-noise (SNR) ratio increased at distance, performance plummeted down to a lower performance tier in a harsh, stepped fashion. This new technology provides better performance at mid-to-long range.</p><p>Other core benefits stem from Enhanced Long Range (ELR) and Distributed-Tone Resource Unit (DRU) technologies. The former enhances weak connections with extra, back-up data packets and a stronger signal designed to benefit device connections at the edge of a network (including outdoors and in sheds and garages). This means low-powered devices will connect more reliably without dropping-off your network – essentially extending their range. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/TkDiHvhhNQEw9LzwxZi953-1920-80.jpg" alt="Asus ROG Rapture GT-BN98 Wi-Fi 8 router" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zJbZ2AcUUz4p9TubUZBm53-1920-80.jpg" alt="Asus ROG Rapture GT-BN98 Wi-Fi 8 router" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>DRU augments this by distributing a signal across a wider spectrum. This doesn’t just strengthen distant connections, but (sometimes significantly) will improve upload speeds from networked devices.</p><p>Multi-AP Coexistence is a category of technologies that describes how nearby routers can work together: Coordinated Beamforming (Co-BF) enables multiple access points to exchange information and map out the fastest, most-efficient channels to devices. Coordinated Spatial Reuse (Co-SR) sees nearby wireless access points adjust transmission power dynamically, allowing them to transmit on the same channel simultaneously without drowning each other out. Coordinated Time-Division Multiple Access (Co-TDMA) sees neighbouring routers agree upon dividing up (and sharing) transmission slots to benefit everyone, instead of fighting for bandwidth. Non-Primary Channel Access (NPCA) lets an access point use secondary (sub) channels, if the primary channel gets blocked. Seamless Multi-Link Operation (Seamless MLO) facilitates smoother roaming across wireless nodes. This all makes wireless networks faster and more reliable in crowded environments.</p><p>Finally, there’s Dynamic Sub-Band Operation (DSO) which carves-up a wide wireless channel into smaller 20Hz or 40Hz blocks to suit narrow-band devices. Plus, Enhanced Distributed Channel Access (EDCA) which upgrades standard wireless traffic queues to reduce access delays in real-time, benefitting low-latency applications like voice, AR/VR and gaming. </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="G5sCEdbZ7j5FM76umTbAY7" name="PXL_20261023_030816324" alt="Asus ROG Rapture GT-BN98 Wi-Fi 8 router" src="https://cdn.mos.cms.futurecdn.net/G5sCEdbZ7j5FM76umTbAY7-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: Future)</span></figcaption></figure><p>With all that ringing in your ears, how does the GT-BN98, with its two 10 Gbps ports and quad-band 24.4 Gbps wireless speed, actually perform? We ran an extended-version of our usual tests in our Sydney weatherboard cottage. This involves downloading large video files to a fast, Wi-Fi 7 laptop, from a tethered 10 Gbps Synology NVMe NAS up close, two rooms away and 15 metres away outside in the garden. </p><p>We compared it to our daily driver, the TP-Link Deco BE85 Wi-Fi 7 mesh which has undergone countless updates since our initial review, plus the ROG Rapture GT-BE19000AI which broke 3,000Mbps.</p><p>Up close the GT-BN98 registered 1,788 Mbps, which is fast but significantly behind the BE19000AI’s 3,052 Mbps and the Deco’s 2,500 Mbps.</p><p>Two rooms away, the GT-BN98 dropped to 894 Mbps which is significantly faster than any of its Wi-Fi 7 siblings which struggle to get past 500 Mbps at this distance. The Deco’s mesh managed 1,650 Mbps thanks to its nearby node.</p><p>In the garden, performance dropped to 120 Mbps for the GT-BN98, which is significantly better than the 12 Mbps of the BE19000AI but a long way off the Deco’s (third-node-augmented) 280 Mbps.</p><p>So, while it’s not the fastest up close (yet), we can already see Wi-Fi 8’s benefits at distance.</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="q4AHYmUtpVPhXBoQBf7byC" name="PXL_20261023_030527830" alt="Asus ROG Rapture GT-BN98 Wi-Fi 8 router" src="https://cdn.mos.cms.futurecdn.net/q4AHYmUtpVPhXBoQBf7byC-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: Future)</span></figcaption></figure><p>I then repeated the tests on the GT-BN98 and the Deco with 4K YouTube running on a networked PC and a Netflix movie running on a smart TV. </p><p>The GT-BN98 registered 1,647 Mbps up close, 695 Mbps two rooms away and 120 Mbps (again) outside. The Deco scored 1,526 Mbps, 1,490 Mbps and 280 Mbps respectively. This illustrates that there’s minimal performance drop-off on a busy network, at all distances, for the Wi-Fi 8 router, while performance drop-off is much-more pronounced, at high speeds, on the top-performing Wi-Fi 7 mesh.</p><p>While we had the opportunity to test a second, tethered GT-BN98 connected as an access point, we didn’t have a computer that had a 10Gbps Ethernet connection to gather any meaningful, non-bottlenecked results. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/LWb829bXqrnNTKeNMAEQTH-1920-80.jpg" alt="Asus ROG Rapture GT-BN98 Wi-Fi 8 router" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vXHNRot9UMxVM2PJRxBi4j-1920-80.jpg" alt="Asus ROG Rapture GT-BN98 Wi-Fi 8 router" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Ultimately, the scores are what we expected for a first-gen product: raw-speed can’t match mature, top-tier Wi-Fi 7 routers yet, but performance holds up better over distance. That’s an early big win for Wi-Fi 8 in general and the GT-BN98 in particular.</p><p>Beyond performance, the GT-BN98 is packed with Asus’ market-leading plethora of features which we’ll skirt through this time: competitive gamers get automated latency boosts with preconfigured game acceleration settings for connected computers, consoles and handhelds; extensive network and device-level security features and parental controls are provided sans subscription (unlike TP-Link); there’s media and file server functionality (that even includes Docker and Portainer hosting); SMB-level VPN functionality; and older/cheaper Asus routers can be used as range-extending nodes.</p><p>So, should you buy it? At around $999 (£790, AU$1,999) it’s certainly not cheap, but when compared to other top-tier gaming routers, it’s not hideously expensive, either. The <a href="https://www.amazon.com/dp/B0C4W31L4N?plpRedirect=mhFallback&ref=clp_hp_h_pc" target="_blank">TP-Link BE85 three-node Wi-Fi mesh still costs $1,200</a> (plus subscriptions) and isn’t nearly as well featured. Its otherwise-identical Wi-Fi 7 sibling, the <a href="https://www.amazon.com/dp/B0FPV9DV1R?plpRedirect=mhFallback&ref=clp_hp_h_pc" target="_blank">GT-BE19000AI, costs $560 less</a>, but that’s suddenly old technology.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/networking/asus-rog-rapture-gt-bn98-review/</link>
                                                                            <description>
                            <![CDATA[ Asus delivers the first Wi-Fi 8 router. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">XhutYN95iVo6wgEMe82ecY</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vXHNRot9UMxVM2PJRxBi4j-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 09:53:57 +0000</pubDate>                                                                                                                                <updated>Fri, 23 Oct 2026 20:43:56 +0000</updated>
                                                                                                                                            <category><![CDATA[Networking]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Ross ]]></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/vXHNRot9UMxVM2PJRxBi4j-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Asus ROG Rapture GT-BN98 Wi-Fi 8 router]]></media:description>                                                            <media:text><![CDATA[Asus ROG Rapture GT-BN98 Wi-Fi 8 router]]></media:text>
                                <media:title type="plain"><![CDATA[Asus ROG Rapture GT-BN98 Wi-Fi 8 router]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vXHNRot9UMxVM2PJRxBi4j-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Asus ROG Rapture GT-BN98 Pro"></div><p>We’re not surprised that Asus has delivered the first Wi-Fi 8 router. The company has been ruling the router roost recently and notably broke the 3,000 Mbps transfer-rate barrier with its AI-enhanced, ROG Rapture GT-BE19000AI Wi-Fi 7 gaming router. That’s old hat now that its functionally-identical Wi-Fi 8 sibling, the <a href="https://rog.asus.com/networking/rog-rapture-gt-bn98/" target="_blank">Asus ROG Rapture GT-BN98</a>, is here. Or is it?</p><p>Wi-Fi 8 (also known as 802.11bn) is expected to be officially ratified in late 2028. By the time you read this, at least four routers will have hit the market, but no laptops (or other devices) are in sight. But, that shouldn’t matter.</p><p>We've spent some time in the last year testing top-tier Wi-Fi 7 set-ups, and seeing they can be faster than some 10 Gbps wired connections, so why do we need another Wi-Fi generation? However, unlike previous generations, Wi-Fi 8 isn’t about delivering more speed, it’s about delivering a more-reliable signal (including more-robust uploading), to new and old devices alike, in crowded Wi-Fi environments, over greater distances, in real-world environments. </p><div ><table><caption>GT-BN98 Specs</caption><tbody><tr><td class="firstcol " ><p><strong>Network standard</strong></p></td><td  ><p>WiFi 8 (802.11bn) (Draft)</p></td></tr><tr><td class="firstcol " ><p><strong>Speed</strong></p></td><td  ><p>Wi-Fi 24.43 Mbps</p></td></tr><tr><td class="firstcol " ><p><strong>Operating frequency</strong></p></td><td  ><p>2.4 GHz, 5 GHz, 6 GHz</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>1× 10 Gbps WAN/LAN, 1× 2.5 Gbps WAN/LAN, 1× 10 Gbps LAN, 3× 2.5 Gbps LAN, USB 3.2 Gen 1, USB 2.0</p></td></tr><tr><td class="firstcol " ><p><strong>Features</strong></p></td><td  ><p>Quad-Core CPU w/ NPU, parental controls, edge security controls, game acceleration, Docker, Portainer, AiQoS, multi-SSID, Alexa and Google voice assistants</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions</strong></p></td><td  ><p>350.41 x 350.41 x 220.6 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>2.07 kg</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>~$999 / £790</p></td></tr></tbody></table></div><p>This should particularly benefit networks with numerous IoT and smart-home devices; gamers who require reliable, very-low latencies; people in high-density apartment blocks; industrial facilities filled with metal and RF interference; and streamers uploading live footage. </p><p>That pretty much covers everyone.</p><p>Aficionados will know that the technologies used to manifest these advances are denoted by a smorgasbord of acronyms and Wi-Fi 8 doesn’t disappoint...</p><p>Primary benefits stem from Modulation and Coding Schemes (MCS) that support Unequal Modulation (UEQM). This means that, when you move further away from the signal, the smoother the performance drop-off curve will be. With previous generations, whenever the signal-to-noise (SNR) ratio increased at distance, performance plummeted down to a lower performance tier in a harsh, stepped fashion. This new technology provides better performance at mid-to-long range.</p><p>Other core benefits stem from Enhanced Long Range (ELR) and Distributed-Tone Resource Unit (DRU) technologies. The former enhances weak connections with extra, back-up data packets and a stronger signal designed to benefit device connections at the edge of a network (including outdoors and in sheds and garages). This means low-powered devices will connect more reliably without dropping-off your network – essentially extending their range. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/TkDiHvhhNQEw9LzwxZi953-1920-80.jpg" alt="Asus ROG Rapture GT-BN98 Wi-Fi 8 router" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zJbZ2AcUUz4p9TubUZBm53-1920-80.jpg" alt="Asus ROG Rapture GT-BN98 Wi-Fi 8 router" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>DRU augments this by distributing a signal across a wider spectrum. This doesn’t just strengthen distant connections, but (sometimes significantly) will improve upload speeds from networked devices.</p><p>Multi-AP Coexistence is a category of technologies that describes how nearby routers can work together: Coordinated Beamforming (Co-BF) enables multiple access points to exchange information and map out the fastest, most-efficient channels to devices. Coordinated Spatial Reuse (Co-SR) sees nearby wireless access points adjust transmission power dynamically, allowing them to transmit on the same channel simultaneously without drowning each other out. Coordinated Time-Division Multiple Access (Co-TDMA) sees neighbouring routers agree upon dividing up (and sharing) transmission slots to benefit everyone, instead of fighting for bandwidth. Non-Primary Channel Access (NPCA) lets an access point use secondary (sub) channels, if the primary channel gets blocked. Seamless Multi-Link Operation (Seamless MLO) facilitates smoother roaming across wireless nodes. This all makes wireless networks faster and more reliable in crowded environments.</p><p>Finally, there’s Dynamic Sub-Band Operation (DSO) which carves-up a wide wireless channel into smaller 20Hz or 40Hz blocks to suit narrow-band devices. Plus, Enhanced Distributed Channel Access (EDCA) which upgrades standard wireless traffic queues to reduce access delays in real-time, benefitting low-latency applications like voice, AR/VR and gaming. </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="G5sCEdbZ7j5FM76umTbAY7" name="PXL_20261023_030816324" alt="Asus ROG Rapture GT-BN98 Wi-Fi 8 router" src="https://cdn.mos.cms.futurecdn.net/G5sCEdbZ7j5FM76umTbAY7-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: Future)</span></figcaption></figure><p>With all that ringing in your ears, how does the GT-BN98, with its two 10 Gbps ports and quad-band 24.4 Gbps wireless speed, actually perform? We ran an extended-version of our usual tests in our Sydney weatherboard cottage. This involves downloading large video files to a fast, Wi-Fi 7 laptop, from a tethered 10 Gbps Synology NVMe NAS up close, two rooms away and 15 metres away outside in the garden. </p><p>We compared it to our daily driver, the TP-Link Deco BE85 Wi-Fi 7 mesh which has undergone countless updates since our initial review, plus the ROG Rapture GT-BE19000AI which broke 3,000Mbps.</p><p>Up close the GT-BN98 registered 1,788 Mbps, which is fast but significantly behind the BE19000AI’s 3,052 Mbps and the Deco’s 2,500 Mbps.</p><p>Two rooms away, the GT-BN98 dropped to 894 Mbps which is significantly faster than any of its Wi-Fi 7 siblings which struggle to get past 500 Mbps at this distance. The Deco’s mesh managed 1,650 Mbps thanks to its nearby node.</p><p>In the garden, performance dropped to 120 Mbps for the GT-BN98, which is significantly better than the 12 Mbps of the BE19000AI but a long way off the Deco’s (third-node-augmented) 280 Mbps.</p><p>So, while it’s not the fastest up close (yet), we can already see Wi-Fi 8’s benefits at distance.</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="q4AHYmUtpVPhXBoQBf7byC" name="PXL_20261023_030527830" alt="Asus ROG Rapture GT-BN98 Wi-Fi 8 router" src="https://cdn.mos.cms.futurecdn.net/q4AHYmUtpVPhXBoQBf7byC-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: Future)</span></figcaption></figure><p>I then repeated the tests on the GT-BN98 and the Deco with 4K YouTube running on a networked PC and a Netflix movie running on a smart TV. </p><p>The GT-BN98 registered 1,647 Mbps up close, 695 Mbps two rooms away and 120 Mbps (again) outside. The Deco scored 1,526 Mbps, 1,490 Mbps and 280 Mbps respectively. This illustrates that there’s minimal performance drop-off on a busy network, at all distances, for the Wi-Fi 8 router, while performance drop-off is much-more pronounced, at high speeds, on the top-performing Wi-Fi 7 mesh.</p><p>While we had the opportunity to test a second, tethered GT-BN98 connected as an access point, we didn’t have a computer that had a 10Gbps Ethernet connection to gather any meaningful, non-bottlenecked results. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/LWb829bXqrnNTKeNMAEQTH-1920-80.jpg" alt="Asus ROG Rapture GT-BN98 Wi-Fi 8 router" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vXHNRot9UMxVM2PJRxBi4j-1920-80.jpg" alt="Asus ROG Rapture GT-BN98 Wi-Fi 8 router" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Ultimately, the scores are what we expected for a first-gen product: raw-speed can’t match mature, top-tier Wi-Fi 7 routers yet, but performance holds up better over distance. That’s an early big win for Wi-Fi 8 in general and the GT-BN98 in particular.</p><p>Beyond performance, the GT-BN98 is packed with Asus’ market-leading plethora of features which we’ll skirt through this time: competitive gamers get automated latency boosts with preconfigured game acceleration settings for connected computers, consoles and handhelds; extensive network and device-level security features and parental controls are provided sans subscription (unlike TP-Link); there’s media and file server functionality (that even includes Docker and Portainer hosting); SMB-level VPN functionality; and older/cheaper Asus routers can be used as range-extending nodes.</p><p>So, should you buy it? At around $999 (£790, AU$1,999) it’s certainly not cheap, but when compared to other top-tier gaming routers, it’s not hideously expensive, either. The <a href="https://www.amazon.com/dp/B0C4W31L4N?plpRedirect=mhFallback&ref=clp_hp_h_pc" target="_blank">TP-Link BE85 three-node Wi-Fi mesh still costs $1,200</a> (plus subscriptions) and isn’t nearly as well featured. Its otherwise-identical Wi-Fi 7 sibling, the <a href="https://www.amazon.com/dp/B0FPV9DV1R?plpRedirect=mhFallback&ref=clp_hp_h_pc" target="_blank">GT-BE19000AI, costs $560 less</a>, but that’s suddenly old technology.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ A public outing of severe and unfixed Linux kernel vulnerabilities should have you thinking of updating your SteamOS or other distros to beta branches ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you're an enlightened sort, who has sought out the sunny uplands of a Linux operating system for your gaming rig in these exciting days of almost seamless game compatibility, then you might want to have a think about migrating your OS onto a beta branch for a while. A list of as-yet unpatched Linux kernel vulnerabilities has been sent out to a public mailing list by accident, and some of these issues score as high as 9 on the CVSS security-scare-o-meter.</p><p>The incident was <a href="https://www.phoronix.com/news/LKML-New-Trend-Vulnerabilities" target="_blank">reported by Phoronix</a> yesterday, where Michael Larabel noted that overnight several new vulnerability reports had gone to a public rather than private security mailing list. The reports had seemingly come from Trend Micro's Zero Day Initiative—an initiative set up to <a href="https://www.trendmicro.com/content/dam/trendmicro/global/en/business/products/network/intrusion-prevention/threat-intelligence/ov_zero_day_initiative.pdf" target="_blank">promote extended vulnerability reporting</a> (.pdf warning) with a bug bounty system extending to a group of external researchers.</p><p>I guess sometimes a group can be <em>too</em> extended.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async></script><p>Anyways, the list of vulnerabilities was jumped on by what Phoronix calls Linux's second-in-command, Greg Kroah-Hartman, who maintains the stable branch of the kernel. Kroah-Hartman responded to each of the reports individually asking them to fix their submission process.</p><p>Mostly because none of these vulnerabilities have been patched on the main kernel yet, and remain open to attack. And those attack vectors have just been made public. Eep. The more positive news, however, is that some of the cases are undergoing testing or are at least queued in beta or '-next' branches. </p><p>So there is a chance that your chosen distro might have those patches in place for the security conscious if you opt-in to a beta branch for an update. Worth a check, eh?</p><p>Phoronix lists these vulnerabilities as:</p><ul><li><strong></strong><a href="https://lore.kernel.org/lkml/BYAPR01MB3830472B5702C089B0BBB77D80662@BYAPR01MB3830.prod.exchangelabs.com/"><strong>ZDI-CAN-33549</strong></a><strong> as a CVSS 9.0 scored vulnerability for SMB Direct remote code execution vulnerability due to integer underflow. For this one there is a patch in a Git branch of code intended for Linux v7.5 but now presumably will be expedited for getting to mainline.</strong></li><li><strong></strong><a href="https://lore.kernel.org/lkml/BYAPR01MB383076AC412E19C48CFBEAE980662@BYAPR01MB3830.prod.exchangelabs.com/"><strong>ZDI-CAN-33774</strong></a><strong> as a KSMBD race condition that can lead to remote code execution. Another CVSS 9.0 rated vulnerability.</strong></li><li><strong></strong><a href="https://lore.kernel.org/lkml/BYAPR01MB3830CECF5D0871064C59BA0280662@BYAPR01MB3830.prod.exchangelabs.com/"><strong>ZDI-CAN-33367</strong></a><strong> is a vulnerability for skbuff skb_zerocopy in the network code that can lead to local privilege escalation. For this one Linux kernel developers received a security report from another source last week over the same issue and a patch is expected to be posted soon.</strong></li><li><strong></strong><a href="https://lore.kernel.org/dri-devel/2026102254-protector-seventy-6454@gregkh/"><strong>ZDI-CAN-34068</strong></a><strong> as a VMWGFX VMware graphics driver bug with an out-of-bounds write leading to local privilege escalation.</strong></li><li><strong></strong><a href="https://lore.kernel.org/all/2026102226-duly-imprison-a2c1@gregkh/"><strong>ZDI-CAN-34076</strong></a><strong> an uninitialized resource in the NVMET code leading to information disclosure.</strong></li><li><strong></strong><a href="https://lore.kernel.org/all/BYAPR01MB383046745372577D8F5902D580672@BYAPR01MB3830.prod.exchangelabs.com/"><strong>ZDI-CAN-32005</strong></a><strong> was also posted to the mailing list a day prior for a search-domain TCP query stack buffer overflow leading to local privilege escalation.</strong></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/a-public-outing-of-severe-and-unfixed-linux-kernel-vulnerabilities-should-have-you-thinking-of-updating-your-steamos-or-other-distros-to-beta-branches/</link>
                                                                            <description>
                            <![CDATA[ The accidental reveal of unpatched vulnerabilities as high as 9 on the CVSS score chart is a little worrisome. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">BDyTaQPdCdggekvid2fbVX</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/7EimC87J9aoLbZEbfWBX9H-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 09:26:40 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Hardware]]></category>
                                                                                                <author><![CDATA[ dave.james@futurenet.com (Dave James) ]]></author>                    <dc:creator><![CDATA[ Dave James ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9-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/7EimC87J9aoLbZEbfWBX9H-1920-80.jpg">
                                                            <media:credit><![CDATA[Pixabay]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[https://pixabay.com/photos/linux-laptop-screen-wallpaper-wood-1962898/]]></media:description>                                                            <media:text><![CDATA[https://pixabay.com/photos/linux-laptop-screen-wallpaper-wood-1962898/]]></media:text>
                                <media:title type="plain"><![CDATA[https://pixabay.com/photos/linux-laptop-screen-wallpaper-wood-1962898/]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/7EimC87J9aoLbZEbfWBX9H-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you're an enlightened sort, who has sought out the sunny uplands of a Linux operating system for your gaming rig in these exciting days of almost seamless game compatibility, then you might want to have a think about migrating your OS onto a beta branch for a while. A list of as-yet unpatched Linux kernel vulnerabilities has been sent out to a public mailing list by accident, and some of these issues score as high as 9 on the CVSS security-scare-o-meter.</p><p>The incident was <a href="https://www.phoronix.com/news/LKML-New-Trend-Vulnerabilities" target="_blank">reported by Phoronix</a> yesterday, where Michael Larabel noted that overnight several new vulnerability reports had gone to a public rather than private security mailing list. The reports had seemingly come from Trend Micro's Zero Day Initiative—an initiative set up to <a href="https://www.trendmicro.com/content/dam/trendmicro/global/en/business/products/network/intrusion-prevention/threat-intelligence/ov_zero_day_initiative.pdf" target="_blank">promote extended vulnerability reporting</a> (.pdf warning) with a bug bounty system extending to a group of external researchers.</p><p>I guess sometimes a group can be <em>too</em> extended.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async></script><p>Anyways, the list of vulnerabilities was jumped on by what Phoronix calls Linux's second-in-command, Greg Kroah-Hartman, who maintains the stable branch of the kernel. Kroah-Hartman responded to each of the reports individually asking them to fix their submission process.</p><p>Mostly because none of these vulnerabilities have been patched on the main kernel yet, and remain open to attack. And those attack vectors have just been made public. Eep. The more positive news, however, is that some of the cases are undergoing testing or are at least queued in beta or '-next' branches. </p><p>So there is a chance that your chosen distro might have those patches in place for the security conscious if you opt-in to a beta branch for an update. Worth a check, eh?</p><p>Phoronix lists these vulnerabilities as:</p><ul><li><strong></strong><a href="https://lore.kernel.org/lkml/BYAPR01MB3830472B5702C089B0BBB77D80662@BYAPR01MB3830.prod.exchangelabs.com/"><strong>ZDI-CAN-33549</strong></a><strong> as a CVSS 9.0 scored vulnerability for SMB Direct remote code execution vulnerability due to integer underflow. For this one there is a patch in a Git branch of code intended for Linux v7.5 but now presumably will be expedited for getting to mainline.</strong></li><li><strong></strong><a href="https://lore.kernel.org/lkml/BYAPR01MB383076AC412E19C48CFBEAE980662@BYAPR01MB3830.prod.exchangelabs.com/"><strong>ZDI-CAN-33774</strong></a><strong> as a KSMBD race condition that can lead to remote code execution. Another CVSS 9.0 rated vulnerability.</strong></li><li><strong></strong><a href="https://lore.kernel.org/lkml/BYAPR01MB3830CECF5D0871064C59BA0280662@BYAPR01MB3830.prod.exchangelabs.com/"><strong>ZDI-CAN-33367</strong></a><strong> is a vulnerability for skbuff skb_zerocopy in the network code that can lead to local privilege escalation. For this one Linux kernel developers received a security report from another source last week over the same issue and a patch is expected to be posted soon.</strong></li><li><strong></strong><a href="https://lore.kernel.org/dri-devel/2026102254-protector-seventy-6454@gregkh/"><strong>ZDI-CAN-34068</strong></a><strong> as a VMWGFX VMware graphics driver bug with an out-of-bounds write leading to local privilege escalation.</strong></li><li><strong></strong><a href="https://lore.kernel.org/all/2026102226-duly-imprison-a2c1@gregkh/"><strong>ZDI-CAN-34076</strong></a><strong> an uninitialized resource in the NVMET code leading to information disclosure.</strong></li><li><strong></strong><a href="https://lore.kernel.org/all/BYAPR01MB383046745372577D8F5902D580672@BYAPR01MB3830.prod.exchangelabs.com/"><strong>ZDI-CAN-32005</strong></a><strong> was also posted to the mailing list a day prior for a search-domain TCP query stack buffer overflow leading to local privilege escalation.</strong></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ My GOTY is $7 and has 253 Steam reviews ]]></title>
                                                                                                <dc:content><![CDATA[ <p><em>Fast-paced. 3D Platformer. Parkour. First-Person. Racing.</em></p><p>Those are the tags affixed to the Steam page for <a href="https://store.steampowered.com/app/2999500/STUNTBOOST/">Stuntboost</a>, a game that I've had trouble summing up with a clean label when asked about it. Stuntboost is a skateboarding game that sometimes features a car, a platformer with a speedometer, an ode to those shrunken bedroom maps popularized by early FPS modders. </p><p>It's also, quite easily, my favorite game of 2026 so far.</p><p>Yet, Stuntboost could've easily slipped under my radar. It's been out for a month and hasn't made a big splash on Steam—it's rated "Very Positive" with 253 reviews. I only found it through a friend's recommendation, and even then, the art style didn't immediately suggest it was my thing.</p><p>Stunboost's toy fingerboards and cardboard circuits give the impression of a chill, Hot Wheels-adjacent racer your child could enjoy, but unless that child is accomplished with a mouse and keyboard, that ain't happening. This is the only skateboarding game with a warning that suggests you play with a mouse, and it's immediately obvious why.</p><p>Once you learn a few techniques, Stuntboost looks like this:</p><iframe src="https://content.jwplatform.com/players/B4RIikCM.html" id="B4RIikCM" title="Stuntboost (2)" width="600" height="338" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>And this.</p><iframe src="https://content.jwplatform.com/players/ZTEyhuUc.html" id="ZTEyhuUc" title="Stuntboost (3)" width="600" height="338" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>And this.</p><iframe src="https://content.jwplatform.com/players/mGXFJZQs.html" id="mGXFJZQs" title="Stuntboost (6)" width="600" height="338" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>Despite its choice of vehicles, this thing's for FPS movement sickos—an exercise in precision camera control and first-person platforming. It's essentially a three button game (jump, crouch, grind) about gaining and maintaining speed. Many of its tracks are non-linear obstacle courses that ask you to find your own way across, and the devs actively encourage looking for shortcuts.</p><p>I've been obsessed (a word I'm not using lightly) with Stuntboost's 40+ levels for weeks now, replaying tracks and cutting seconds off my times to score the top medals. And once I have those medals, I get to work shaving hundredths of seconds to take the number one spot on my friend leaderboard. Oh man, this is a <em>dangerous</em> game for a friendly rivalry. I now live in fear of a Discord DM informing me that the PB I spent hours honing has been shattered.</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.29%;"><img id="BjqjdjoD5LB67khBv36Bse" name="20261022151726_1" alt="Stuntboost" src="https://cdn.mos.cms.futurecdn.net/BjqjdjoD5LB67khBv36Bse-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Byting Games)</span></figcaption></figure><p>But I honestly welcome the excuse to replay tracks, because Stuntboost's movement is fundamentally thrilling, and its maps are masterfully crafted with standard and absurd routing in mind. Its wide ramps, massive jumps, and daring speeds remind me a lot of Trackmania—my favorite racing series—but more specifically, a subset of "full speed" community tracks that never ask you to brake. </p><p>Stuntboost also nails a lot of little quality-of-life features that you rarely see in games with way larger budgets. Information about a track is revealed in stages: I can't see friends' times until I've beaten the track once, and global leaderboards are locked until I get the diamond medal. The ghost of my best time appears automatically, but I can also turn on the ghosts of my friends or anyone else on the leaderboard. I can even watch anyone's replay in full as long as I've discovered the same shortcuts they used—a smart touch (possibly inspired by <a href="https://www.pcgamer.com/neon-white-review/" target="_blank">Neon White</a>) that prevents spoilers and entices me to search for what I've missed.</p><div class="card card--standard card--rows-3 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/qwmkUSoNZhCSZUyjK4UWuR.jpg" alt="Neon White tips guide"></p></div><div class="card__content"><h3 class="card__title">&quot;It&#39;s like Neon White&quot;</h3><div class="card__description-wrapper"><div class="card__description"><ul><li>Layered leaderboards</li><li>Shortcuts</li><li>First-person platforming</li></ul></div><div class="card__description"><p><strong>BUT:</strong> I never finished Neon White because the levels got overwhelming. Juggling cards and shooting mandatory targets sometimes made levels feel strict and suffocating. Stuntboost is simpler, faster, and improvisational.</p></div></div></div></div><p>Watching replays is a big deal, too, because it's primarily how I picked up on community techniques that opened my third eye: varial kickflips, grind hopping, speed storage. Every sloped surface is an opportunity for just a <em>bit </em>more speed and every ramp-shaped object—be it a plate, playing card, or three-ring binder—is a springboard that could send me across the map. The variability of a single track can be staggering.</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.29%;"><img id="XW5Wb4LJHEfZh9jtHjJwqe" name="20261022151745_1" alt="Stuntboost" src="https://cdn.mos.cms.futurecdn.net/XW5Wb4LJHEfZh9jtHjJwqe-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Byting Games)</span></figcaption></figure><p>Later worlds (which visit other rooms of the same house) expand beyond the skateboard with car levels that revolve around drifting, free roam scooter levels with S-K-A-T-E collectibles, and a longboard that can't jump. Some of these are just a neat palate cleanser, but the car levels are particularly spectacular for how they force me to relearn how I turn and, eventually, hit sick drifts that're impossible on the skateboard.</p><div class="card card--standard card--rows-2 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/urWVNfAoSis6yuvJpbEgVZ.jpg" alt="Trackmania"></p></div><div class="card__content"><h3 class="card__title">&quot;It&#39;s like Trackmania&quot;</h3><div class="card__description-wrapper"><div class="card__description"><ul><li>Ghosts</li><li>High speed</li><li>Wild tracks</li></ul></div><div class="card__description"><p><strong>BUT: </strong>Trackmania is a proper driving game, and Stuntboost is its own thing. Where Trackmania demands braking and cornering to improve track times, Stuntboost has no brake, lets you turn on a dime whenever, and encourages max speed at all costs. If I made a Trackmania, it'd be just like this.</p></div></div></div></div><p>Every level has a hidden tape that unlocks a free cam (excellent for scouting) and contributes to unlocking a set of bonus levels. I haven't played all of these yet, but I'm told there's a huge tower gauntlet with a fierce leaderboard race. There's also a speedrun mode that times a run of the complete game, board skins, and a daily challenge.</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.29%;"><img id="8e2VQoY7MCWFB4Vc8T9rve" name="20261022151559_1" alt="Stuntboost" src="https://cdn.mos.cms.futurecdn.net/8e2VQoY7MCWFB4Vc8T9rve-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Byting Games)</span></figcaption></figure><p>I am in awe of how unique and fun and fully-featured this thing is, and for $7. Frankly, it's an injustice that Stuntboost isn't one of the year's big indie success stories, but that's nothing new. The indie games that click for me always gravitate toward <a href="https://www.pcgamer.com/games/fps/the-best-fps-of-2024-so-far-is-echo-point-nova-a-usd25-hyper-mobile-co-op-shooter-i-cant-put-down/">interesting movement mechanics</a> or use of physics, and that rarely intersects with what PC gamers are currently going wild about (deckbuilders, autoshooters, and city builders mostly).</p><p>I've played lots of those—what I want are more games that make me feel alive and dangerous. Stuntboost has me vibrating in place, leaning into high-speed turns, and cursing a god I don't believe in. It's an intoxicating rush on a level I have not experienced before, and you should absolutely play it.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/racing/my-goty-is-usd7-and-has-253-steam-reviews/</link>
                                                                            <description>
                            <![CDATA[ Stuntboost is a racing game for FPS movement sickos. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Sj2Ra9wjGDMhnbXcutoLec</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Vo86zsDQwNRKRhdfHbVscG-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 22:29:10 +0000</pubDate>                                                                                                                                <updated>Thu, 22 Oct 2026 23:21:26 +0000</updated>
                                                                                                                                            <category><![CDATA[Racing]]></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/Vo86zsDQwNRKRhdfHbVscG-1920-80.jpg">
                                                            <media:credit><![CDATA[Byting Games]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Stuntboost]]></media:description>                                                            <media:text><![CDATA[Stuntboost]]></media:text>
                                <media:title type="plain"><![CDATA[Stuntboost]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Vo86zsDQwNRKRhdfHbVscG-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><em>Fast-paced. 3D Platformer. Parkour. First-Person. Racing.</em></p><p>Those are the tags affixed to the Steam page for <a href="https://store.steampowered.com/app/2999500/STUNTBOOST/">Stuntboost</a>, a game that I've had trouble summing up with a clean label when asked about it. Stuntboost is a skateboarding game that sometimes features a car, a platformer with a speedometer, an ode to those shrunken bedroom maps popularized by early FPS modders. </p><p>It's also, quite easily, my favorite game of 2026 so far.</p><p>Yet, Stuntboost could've easily slipped under my radar. It's been out for a month and hasn't made a big splash on Steam—it's rated "Very Positive" with 253 reviews. I only found it through a friend's recommendation, and even then, the art style didn't immediately suggest it was my thing.</p><p>Stunboost's toy fingerboards and cardboard circuits give the impression of a chill, Hot Wheels-adjacent racer your child could enjoy, but unless that child is accomplished with a mouse and keyboard, that ain't happening. This is the only skateboarding game with a warning that suggests you play with a mouse, and it's immediately obvious why.</p><p>Once you learn a few techniques, Stuntboost looks like this:</p><iframe src="https://content.jwplatform.com/players/B4RIikCM.html" id="B4RIikCM" title="Stuntboost (2)" width="600" height="338" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>And this.</p><iframe src="https://content.jwplatform.com/players/ZTEyhuUc.html" id="ZTEyhuUc" title="Stuntboost (3)" width="600" height="338" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>And this.</p><iframe src="https://content.jwplatform.com/players/mGXFJZQs.html" id="mGXFJZQs" title="Stuntboost (6)" width="600" height="338" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>Despite its choice of vehicles, this thing's for FPS movement sickos—an exercise in precision camera control and first-person platforming. It's essentially a three button game (jump, crouch, grind) about gaining and maintaining speed. Many of its tracks are non-linear obstacle courses that ask you to find your own way across, and the devs actively encourage looking for shortcuts.</p><p>I've been obsessed (a word I'm not using lightly) with Stuntboost's 40+ levels for weeks now, replaying tracks and cutting seconds off my times to score the top medals. And once I have those medals, I get to work shaving hundredths of seconds to take the number one spot on my friend leaderboard. Oh man, this is a <em>dangerous</em> game for a friendly rivalry. I now live in fear of a Discord DM informing me that the PB I spent hours honing has been shattered.</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.29%;"><img id="BjqjdjoD5LB67khBv36Bse" name="20261022151726_1" alt="Stuntboost" src="https://cdn.mos.cms.futurecdn.net/BjqjdjoD5LB67khBv36Bse-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Byting Games)</span></figcaption></figure><p>But I honestly welcome the excuse to replay tracks, because Stuntboost's movement is fundamentally thrilling, and its maps are masterfully crafted with standard and absurd routing in mind. Its wide ramps, massive jumps, and daring speeds remind me a lot of Trackmania—my favorite racing series—but more specifically, a subset of "full speed" community tracks that never ask you to brake. </p><p>Stuntboost also nails a lot of little quality-of-life features that you rarely see in games with way larger budgets. Information about a track is revealed in stages: I can't see friends' times until I've beaten the track once, and global leaderboards are locked until I get the diamond medal. The ghost of my best time appears automatically, but I can also turn on the ghosts of my friends or anyone else on the leaderboard. I can even watch anyone's replay in full as long as I've discovered the same shortcuts they used—a smart touch (possibly inspired by <a href="https://www.pcgamer.com/neon-white-review/" target="_blank">Neon White</a>) that prevents spoilers and entices me to search for what I've missed.</p><div class="card card--standard card--rows-3 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/qwmkUSoNZhCSZUyjK4UWuR.jpg" alt="Neon White tips guide"></p></div><div class="card__content"><h3 class="card__title">&quot;It&#39;s like Neon White&quot;</h3><div class="card__description-wrapper"><div class="card__description"><ul><li>Layered leaderboards</li><li>Shortcuts</li><li>First-person platforming</li></ul></div><div class="card__description"><p><strong>BUT:</strong> I never finished Neon White because the levels got overwhelming. Juggling cards and shooting mandatory targets sometimes made levels feel strict and suffocating. Stuntboost is simpler, faster, and improvisational.</p></div></div></div></div><p>Watching replays is a big deal, too, because it's primarily how I picked up on community techniques that opened my third eye: varial kickflips, grind hopping, speed storage. Every sloped surface is an opportunity for just a <em>bit </em>more speed and every ramp-shaped object—be it a plate, playing card, or three-ring binder—is a springboard that could send me across the map. The variability of a single track can be staggering.</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.29%;"><img id="XW5Wb4LJHEfZh9jtHjJwqe" name="20261022151745_1" alt="Stuntboost" src="https://cdn.mos.cms.futurecdn.net/XW5Wb4LJHEfZh9jtHjJwqe-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Byting Games)</span></figcaption></figure><p>Later worlds (which visit other rooms of the same house) expand beyond the skateboard with car levels that revolve around drifting, free roam scooter levels with S-K-A-T-E collectibles, and a longboard that can't jump. Some of these are just a neat palate cleanser, but the car levels are particularly spectacular for how they force me to relearn how I turn and, eventually, hit sick drifts that're impossible on the skateboard.</p><div class="card card--standard card--rows-2 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/urWVNfAoSis6yuvJpbEgVZ.jpg" alt="Trackmania"></p></div><div class="card__content"><h3 class="card__title">&quot;It&#39;s like Trackmania&quot;</h3><div class="card__description-wrapper"><div class="card__description"><ul><li>Ghosts</li><li>High speed</li><li>Wild tracks</li></ul></div><div class="card__description"><p><strong>BUT: </strong>Trackmania is a proper driving game, and Stuntboost is its own thing. Where Trackmania demands braking and cornering to improve track times, Stuntboost has no brake, lets you turn on a dime whenever, and encourages max speed at all costs. If I made a Trackmania, it'd be just like this.</p></div></div></div></div><p>Every level has a hidden tape that unlocks a free cam (excellent for scouting) and contributes to unlocking a set of bonus levels. I haven't played all of these yet, but I'm told there's a huge tower gauntlet with a fierce leaderboard race. There's also a speedrun mode that times a run of the complete game, board skins, and a daily challenge.</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.29%;"><img id="8e2VQoY7MCWFB4Vc8T9rve" name="20261022151559_1" alt="Stuntboost" src="https://cdn.mos.cms.futurecdn.net/8e2VQoY7MCWFB4Vc8T9rve-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Byting Games)</span></figcaption></figure><p>I am in awe of how unique and fun and fully-featured this thing is, and for $7. Frankly, it's an injustice that Stuntboost isn't one of the year's big indie success stories, but that's nothing new. The indie games that click for me always gravitate toward <a href="https://www.pcgamer.com/games/fps/the-best-fps-of-2024-so-far-is-echo-point-nova-a-usd25-hyper-mobile-co-op-shooter-i-cant-put-down/">interesting movement mechanics</a> or use of physics, and that rarely intersects with what PC gamers are currently going wild about (deckbuilders, autoshooters, and city builders mostly).</p><p>I've played lots of those—what I want are more games that make me feel alive and dangerous. Stuntboost has me vibrating in place, leaning into high-speed turns, and cursing a god I don't believe in. It's an intoxicating rush on a level I have not experienced before, and you should absolutely play it.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ A new Fallout 4 mod adds an entire town, but more importantly, it lets you join a gang ]]></title>
                                                                                                <dc:content><![CDATA[ <p>There's nothing I like more in a Fallout game then stumbling across some weird little settlement filled with oddball characters. So when I saw that this mod for Fallout 4 added <a href="https://www.nexusmods.com/fallout4/mods/109732?tab=description">a whole new town called Detour</a> that's built on top of an overpass near Bedford Station, that was an instant download.</p><p>Better yet, the mod features new quests and over a dozen new characters voiced by real people—no AI was used!</p><p>But there's something better than <em>that</em>, even. I was delighted to discover that the town of Detour <em>has its own gang</em>. It's a small gang, sure: the overpass Detour is built on isn't particularly big and the town itself is pretty tiny, so there's not a whole lot of room for different factions to spring up. But that doesn't stop the members of the Detour Degens from occupying one little corner of the town where they hang out in matching jackets, smoking cigs, chugging from beer bottles, and looking tough.</p><p>Sort of. Look, the Detour Degens are no Tunnel Snakes, that's for sure. But they live on an overpass. They're doing their best.</p><p>There are a few different types of missions you can do to raise your reputation with the town of Detour, and besides helping out the sheriff with bounties and recovering stolen goods for a few of the merchants, you can also get in good with the gang. The two members of the Degens I met told me that the third member, their leader, was locked up and they wanted me to spring him.</p><p>Yeah, there's a total of three members of the gang. Like I said, they're doing their best.</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:2166px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="7ctHB2pmW86ygpKYFSrxyS" name="gang1" alt="Gang members in Fallout 4" src="https://cdn.mos.cms.futurecdn.net/7ctHB2pmW86ygpKYFSrxyS-1920-80.jpg" mos="" align="middle" fullscreen="1" width="2166" height="1218" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/7ctHB2pmW86ygpKYFSrxyS-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: Bethesda)</span></figcaption></figure><p>It was sort of amusing because the gang leader was locked up maybe 15 feet away from the gang's turf in an itty bitty jail cell in the cramped sheriff's office. But in keeping with Fallout tradition, there are a few ways to get the Degen's leader out of the clink. </p><p>Another gang mission was to tag various places around town with the Degen logo, which was also kinda cute. I don't really know why you'd need to advertise your gang in a town that small: surely, everyone knows you by now.</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="9iJMq82qcnfyeNzDiJM2Me" name="1" alt="A town built on an overpass" src="https://cdn.mos.cms.futurecdn.net/9iJMq82qcnfyeNzDiJM2Me-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: Bethesda)</span></figcaption></figure><p>But I still did it because I wanna be in the smallest gang in Fallout history (except for maybe <a href="https://fallout.wiki/wiki/Maud%27s_Muggers">Maud's Muggers</a>). Once I tagged the town (it took maybe two minutes) they invited me to join them in a proper criminal quest. I won't spoil it, but like all good heists it went a little wrong in the middle and turned out fine in the end. Plus, the Detour Degens now have a new member, bringing the roster up to four people! I'll wear my new leather jacket proudly from now on.</p><p>You can download the <a href="https://www.nexusmods.com/fallout4/mods/109732?tab=description">Detour mod here</a>, and I'll just point out again that it's been made without the use of AI, something that feels less and less common in the modding scene these days.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/fallout/a-new-fallout-4-mod-adds-an-entire-town-but-more-importantly-it-lets-you-join-a-gang/</link>
                                                                            <description>
                            <![CDATA[ They're not the Tunnel Snakes, but they're trying. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">YZS33ajYFzfLS4CZAsb5eK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/rKPhj32cokdeEyPpNizGJT-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 22:22:04 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Fallout]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                    <category><![CDATA[RPG]]></category>
                                                                                                <author><![CDATA[ clivingston@pcgamer.com (Christopher Livingston) ]]></author>                    <dc:creator><![CDATA[ Christopher Livingston ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/vMPWcamtj9aoVBYFtt2Hp7-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/rKPhj32cokdeEyPpNizGJT-1920-80.jpg">
                                                            <media:credit><![CDATA[Bethesda]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Gang members in Fallout 4]]></media:description>                                                            <media:text><![CDATA[Gang members in Fallout 4]]></media:text>
                                <media:title type="plain"><![CDATA[Gang members in Fallout 4]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/rKPhj32cokdeEyPpNizGJT-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>There's nothing I like more in a Fallout game then stumbling across some weird little settlement filled with oddball characters. So when I saw that this mod for Fallout 4 added <a href="https://www.nexusmods.com/fallout4/mods/109732?tab=description">a whole new town called Detour</a> that's built on top of an overpass near Bedford Station, that was an instant download.</p><p>Better yet, the mod features new quests and over a dozen new characters voiced by real people—no AI was used!</p><p>But there's something better than <em>that</em>, even. I was delighted to discover that the town of Detour <em>has its own gang</em>. It's a small gang, sure: the overpass Detour is built on isn't particularly big and the town itself is pretty tiny, so there's not a whole lot of room for different factions to spring up. But that doesn't stop the members of the Detour Degens from occupying one little corner of the town where they hang out in matching jackets, smoking cigs, chugging from beer bottles, and looking tough.</p><p>Sort of. Look, the Detour Degens are no Tunnel Snakes, that's for sure. But they live on an overpass. They're doing their best.</p><p>There are a few different types of missions you can do to raise your reputation with the town of Detour, and besides helping out the sheriff with bounties and recovering stolen goods for a few of the merchants, you can also get in good with the gang. The two members of the Degens I met told me that the third member, their leader, was locked up and they wanted me to spring him.</p><p>Yeah, there's a total of three members of the gang. Like I said, they're doing their best.</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:2166px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="7ctHB2pmW86ygpKYFSrxyS" name="gang1" alt="Gang members in Fallout 4" src="https://cdn.mos.cms.futurecdn.net/7ctHB2pmW86ygpKYFSrxyS-1920-80.jpg" mos="" align="middle" fullscreen="1" width="2166" height="1218" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/7ctHB2pmW86ygpKYFSrxyS-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: Bethesda)</span></figcaption></figure><p>It was sort of amusing because the gang leader was locked up maybe 15 feet away from the gang's turf in an itty bitty jail cell in the cramped sheriff's office. But in keeping with Fallout tradition, there are a few ways to get the Degen's leader out of the clink. </p><p>Another gang mission was to tag various places around town with the Degen logo, which was also kinda cute. I don't really know why you'd need to advertise your gang in a town that small: surely, everyone knows you by now.</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="9iJMq82qcnfyeNzDiJM2Me" name="1" alt="A town built on an overpass" src="https://cdn.mos.cms.futurecdn.net/9iJMq82qcnfyeNzDiJM2Me-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: Bethesda)</span></figcaption></figure><p>But I still did it because I wanna be in the smallest gang in Fallout history (except for maybe <a href="https://fallout.wiki/wiki/Maud%27s_Muggers">Maud's Muggers</a>). Once I tagged the town (it took maybe two minutes) they invited me to join them in a proper criminal quest. I won't spoil it, but like all good heists it went a little wrong in the middle and turned out fine in the end. Plus, the Detour Degens now have a new member, bringing the roster up to four people! I'll wear my new leather jacket proudly from now on.</p><p>You can download the <a href="https://www.nexusmods.com/fallout4/mods/109732?tab=description">Detour mod here</a>, and I'll just point out again that it's been made without the use of AI, something that feels less and less common in the modding scene these days.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Epic announces game jam where you have to use AI, then walks back the requirement ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Unreal Engine maker Epic Games is running a game jam in November with thousands of dollars in prizes up for grabs. Contrary to so many art contests which ban the use of AI, participants in Epic's event are highly encouraged to use AI.</p><p>The theme of the <a href="https://www.unrealengine.com/news/2026-epic-ai-megajam" target="_blank">2026 Epic AI MegaJam </a>will be revealed on November 11, and participating individuals and teams will then have from November 12–15 to produce their games with the help of AI tools.</p><p>Some will work in-person at a San Francisco event space, and there will be daily livestreams with progress updates. The winners in three categories will each receive $7,500, with smaller cash prizes for second and third place winners, as well as additional categories like "best team." Also on the table are "Development Continuation Grants of up to $50,000 per team."</p><p>Epic extended the invitation with a reference to The Matrix's 'red pill' scene, presenting red-pilled AI-driven development as an opportunity to "ship awesome games in a weekend," while old-fashioned blue-pilled development would have you "wait months to prototype."  The hand offering the red pill features an extra finger, a reference to the common mistake made by AI image generators. </p><p>The choice follows a recent pattern from Epic of aloofness and defiance directed at AI critics. Last week, the company <a href="https://www.pcgamer.com/software/platforms/epic-says-its-new-vibe-coded-epic-games-store-launcher-is-faster-than-steam/">referred to</a> its new Epic Games Store launcher as "vibe coded," sending the message that it's not ashamed to rely heavily on AI for software development.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2113347611080151105"><p lang="en" dir="ltr">Vibe your way to 50K.  The 2026 Epic AI MegaJam begins Nov 12: https://t.co/aAXEqj7zmE https://t.co/h3Kgs9Y5zH<a href="https://twitter.com/cantworkitout/status/2113347611080151105">October 22, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Following <a href="https://www.pcgamer.com/gaming-industry/game-development/our-humble-goal-is-to-survive-the-ai-revolution-says-epic-games-ceo-as-its-star-wars-and-marvel-crossover-pivots-to-ai-first-development/">a report </a>that Epic directed a team working on a Star Wars and Marvel crossover to pivot to "AI first" development, Epic founder and CEO Tim Sweeney said that the company is "moving developers around to retool for maximum AI acceleration."</p><p>The CEO is bullish on AI not just for coding, but for other fields as well, <a href="https://x.com/TimSweeneyEpic/status/2111640459718074479?s=20" target="_blank">saying </a>that he expects creative work to become more about "direction" than manual creation. </p><p>"Developers who are getting value from AI should speak up," Sweeney <a href="https://x.com/TimSweeneyEpic/status/2111644950341558389?s=20" target="_blank">posted recently</a>. "There's safety in numbers. MOST developers are doing it and loving it—and if they're not talking about it it's mostly out of fear for haters attacking them, their product, and their company."</p><p>Sweeney and Epic have received support for their AI positivity on X, but despite the platform's concentration of Grok users and aspiring AI entrepreneurs, substantial resistance also shows up in the replies.</p><p>"So do yall think you invented the concept of a game jam or what?" <a href="https://x.com/Alyx_Gr/status/2113352956431212917?s=20" target="_blank">said one poster</a> in response to the AI MegaJam announcement. "The ludum dare game jam was only 24 hours in 2002, so like, a quarter of the time as your game jam. but you want to make it look like its only possible with AI with this 'wait months to prototype.'"</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/ai/epic-announces-game-jam-where-you-have-to-use-ai/</link>
                                                                            <description>
                            <![CDATA[ The Unreal Engine and Fortnite company has extended the public a many-fingered invitation. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">9JFFTSRzcnCGvvvVQXDRxU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/kcoLy3wUGtqe8Xvfo3fa5U-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 21:39:30 +0000</pubDate>                                                                                                                                <updated>Thu, 22 Oct 2026 22:06:56 +0000</updated>
                                                                                                                                            <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                <author><![CDATA[ tyler@pcgamer.com (Tyler Wilde) ]]></author>                    <dc:creator><![CDATA[ Tyler Wilde ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/rGvfSUkSBEPzBAVS3jRh9E-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Tyler grew up in Silicon Valley during the &#039;80s and &#039;90s, playing games like Zork and Arkanoid on early PCs. He was later captivated by Myst, SimCity, Civilization, Command &amp; Conquer, all the shooters they call &quot;boomer shooters&quot; now, and PS1 classic Bushido Blade (that&#039;s right: he had Bleem!). Tyler joined PC Gamer in 2011, and today he&#039;s focused on the site&#039;s news coverage. His hobbies include amateur boxing and adding to his 1,200-plus hours in Rocket League.&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/kcoLy3wUGtqe8Xvfo3fa5U-1920-80.jpg">
                                                            <media:credit><![CDATA[Epic Games]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[2026 Epic AI MegaJam promotional image with a six-fingered hand offering the opportunity to &quot;ship awesome games in a weekend.&quot;]]></media:description>                                                            <media:text><![CDATA[2026 Epic AI MegaJam promotional image with a six-fingered hand offering the opportunity to &quot;ship awesome games in a weekend.&quot;]]></media:text>
                                <media:title type="plain"><![CDATA[2026 Epic AI MegaJam promotional image with a six-fingered hand offering the opportunity to &quot;ship awesome games in a weekend.&quot;]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/kcoLy3wUGtqe8Xvfo3fa5U-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Unreal Engine maker Epic Games is running a game jam in November with thousands of dollars in prizes up for grabs. Contrary to so many art contests which ban the use of AI, participants in Epic's event are highly encouraged to use AI.</p><p>The theme of the <a href="https://www.unrealengine.com/news/2026-epic-ai-megajam" target="_blank">2026 Epic AI MegaJam </a>will be revealed on November 11, and participating individuals and teams will then have from November 12–15 to produce their games with the help of AI tools.</p><p>Some will work in-person at a San Francisco event space, and there will be daily livestreams with progress updates. The winners in three categories will each receive $7,500, with smaller cash prizes for second and third place winners, as well as additional categories like "best team." Also on the table are "Development Continuation Grants of up to $50,000 per team."</p><p>Epic extended the invitation with a reference to The Matrix's 'red pill' scene, presenting red-pilled AI-driven development as an opportunity to "ship awesome games in a weekend," while old-fashioned blue-pilled development would have you "wait months to prototype."  The hand offering the red pill features an extra finger, a reference to the common mistake made by AI image generators. </p><p>The choice follows a recent pattern from Epic of aloofness and defiance directed at AI critics. Last week, the company <a href="https://www.pcgamer.com/software/platforms/epic-says-its-new-vibe-coded-epic-games-store-launcher-is-faster-than-steam/">referred to</a> its new Epic Games Store launcher as "vibe coded," sending the message that it's not ashamed to rely heavily on AI for software development.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2113347611080151105"><p lang="en" dir="ltr">Vibe your way to 50K.  The 2026 Epic AI MegaJam begins Nov 12: https://t.co/aAXEqj7zmE https://t.co/h3Kgs9Y5zH<a href="https://twitter.com/cantworkitout/status/2113347611080151105">October 22, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Following <a href="https://www.pcgamer.com/gaming-industry/game-development/our-humble-goal-is-to-survive-the-ai-revolution-says-epic-games-ceo-as-its-star-wars-and-marvel-crossover-pivots-to-ai-first-development/">a report </a>that Epic directed a team working on a Star Wars and Marvel crossover to pivot to "AI first" development, Epic founder and CEO Tim Sweeney said that the company is "moving developers around to retool for maximum AI acceleration."</p><p>The CEO is bullish on AI not just for coding, but for other fields as well, <a href="https://x.com/TimSweeneyEpic/status/2111640459718074479?s=20" target="_blank">saying </a>that he expects creative work to become more about "direction" than manual creation. </p><p>"Developers who are getting value from AI should speak up," Sweeney <a href="https://x.com/TimSweeneyEpic/status/2111644950341558389?s=20" target="_blank">posted recently</a>. "There's safety in numbers. MOST developers are doing it and loving it—and if they're not talking about it it's mostly out of fear for haters attacking them, their product, and their company."</p><p>Sweeney and Epic have received support for their AI positivity on X, but despite the platform's concentration of Grok users and aspiring AI entrepreneurs, substantial resistance also shows up in the replies.</p><p>"So do yall think you invented the concept of a game jam or what?" <a href="https://x.com/Alyx_Gr/status/2113352956431212917?s=20" target="_blank">said one poster</a> in response to the AI MegaJam announcement. "The ludum dare game jam was only 24 hours in 2002, so like, a quarter of the time as your game jam. but you want to make it look like its only possible with AI with this 'wait months to prototype.'"</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Canadian politician calls on government to help BioWare employees buy the studio and run it themselves ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The <a href="https://www.pcgamer.com/gaming-industry/rip-bioware-ea-has-shut-down-the-legendary-rpg-developer/" target="_blank">closure of BioWare</a> is a tremendous loss, not just for gamers but for Canada: The Edmonton-based studio was named one of the country's best places to work multiple times over the years, even <a href="https://blog.bioware.com/2017/11/09/bioware-named-one-of-canadas-top-employers/" target="_blank">after the Electronic Arts acquisition</a> that ultimately spelled its doom. It's not entirely surprising, then, that its shutdown caught the attention of one of the country's top politicians, who had some harsh words for Electronic Arts about it.</p><p>"This is private equity, this is what it does. Buy up businesses, run them into the ground, and rip them apart for short-term profit," Avi Lewis, leader of the New Democratic Party—traditionally Canada's third-largest political party, although it's run aground a bit over the past several years—wrote on social media. </p><p>"The developers at BioWare know how to run the studio. They know how to make the games we all love. They should be given the first opportunity—and the federal support—to buy it and run it themselves. And if we want to avoid the Mass Effect effect in Canada, we should be keeping private equity out, not welcoming it in."</p><p>The NDP are a center-left party, although the ol' Overton window has resulted in a more centrist style in recent years—a drift Lewis was elected specifically to correct. He's been fairly forceful on that front, speaking out in support of anti-fascist causes and calling for the nationalization of vital industries in Canada that have been swallowed up by larger international interests. Predictably, that led some of his followers to jokingly (I think) call for BioWare to be nationalized.</p><blockquote class="bluesky-embed" data-bluesky-uri="at://did:plc:idsofvph6jyjtkumhhla6n5e/app.bsky.feed.post/3myfzwfphok2s" data-bluesky-cid="bafyreic6fsauzexhgfrs2m4fevbnvcjb6ipqtt7ulwvidym7rqvhok7mgy" cite="https://bsky.app/profile/avilewis.ca/post/3myfzwfphok2s"><p lang="en">This is private equity, this is what it does.Buy up businesses, run them into the ground, and rip them apart for short-term profit.www.pcgamer.com/gaming-indus...</p>— @avilewis.ca (<a href="https://bsky.app/profile/did:plc:idsofvph6jyjtkumhhla6n5e?ref_src=embed">@avilewis.ca.bsky.social</a>) <a href="https://bsky.app/profile/avilewis.ca/post/3myfzwfphok2s">2026-10-22T21:26:28.216Z</a></blockquote><p>While the "Mass Effect effect" line is a bit of a clunker, Lewis showed off his gamer cred in response to an inquiry on <a href="https://x.com/avilewis/status/2113020503044874454" target="_blank">X</a>: When asked who he romanced in Mass Effect 2, he replied, "If I'm honest, I'm a Mass Effect 1 on the PS3 type of guy."</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:1010px;"><p class="vanilla-image-block" style="padding-top:72.77%;"><img id="LsxRA5ZQMNDqaqVEUywbDL" name="avi" alt="If I'm honest, I'm a Mass Effect 1 on the PS3 type of guy." src="https://cdn.mos.cms.futurecdn.net/LsxRA5ZQMNDqaqVEUywbDL-1920-80.png" mos="" align="middle" fullscreen="1" width="1010" height="735" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/LsxRA5ZQMNDqaqVEUywbDL-1920-80.png' 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: Avi Lewis (Twitter))</span></figcaption></figure><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="89a51f96-ce5e-11f1-8cd2-27d827e75a76" 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="89a51f96-ce5e-11f1-8cd2-27d827e75a76" 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/mass-effect/canadian-politician-calls-on-government-to-help-bioware-employees-buy-the-studio-and-run-it-themselves/</link>
                                                                            <description>
                            <![CDATA[ Avi Lewis, leader of one of Canada's top opposition parties, is not a fan of private equity. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">79Fn2PSLudQRF2V92HMYME</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/YVKeg3ZHUnns3N5BAXnxzm-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 21:26:29 +0000</pubDate>                                                                                                                                <updated>Fri, 23 Oct 2026 00:15:25 +0000</updated>
                                                                                                                                            <category><![CDATA[Mass Effect]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                    <category><![CDATA[Action]]></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/YVKeg3ZHUnns3N5BAXnxzm-1920-80.jpg">
                                                            <media:credit><![CDATA[Getty Images - Photo by Stacey Newman/SOPA Images/LightRocket via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[TORONTO, CANADA - 2026/04/26: Avi Lewis, son of Stephen Lewis and the newly elected leader of the federal New Democratic Party (NDP) in Canada seen speaking to the mourners. A memorial service at the Chrysalis Theatre at Toronto Metropolitan University honored the life and legacy of Canadian politician, diplomat, and activist Stephen Lewis, who died at 88. Mourners gathered to reflect on his work in human rights, social justice, and global HIV/AIDS advocacy. Tributes also highlighted his support for African grandmothers and community-led responses to the AIDS epidemic. (Photo by Stacey Newman/SOPA Images/LightRocket via Getty Images)]]></media:description>                                                            <media:text><![CDATA[TORONTO, CANADA - 2026/04/26: Avi Lewis, son of Stephen Lewis and the newly elected leader of the federal New Democratic Party (NDP) in Canada seen speaking to the mourners. A memorial service at the Chrysalis Theatre at Toronto Metropolitan University honored the life and legacy of Canadian politician, diplomat, and activist Stephen Lewis, who died at 88. Mourners gathered to reflect on his work in human rights, social justice, and global HIV/AIDS advocacy. Tributes also highlighted his support for African grandmothers and community-led responses to the AIDS epidemic. (Photo by Stacey Newman/SOPA Images/LightRocket via Getty Images)]]></media:text>
                                <media:title type="plain"><![CDATA[TORONTO, CANADA - 2026/04/26: Avi Lewis, son of Stephen Lewis and the newly elected leader of the federal New Democratic Party (NDP) in Canada seen speaking to the mourners. A memorial service at the Chrysalis Theatre at Toronto Metropolitan University honored the life and legacy of Canadian politician, diplomat, and activist Stephen Lewis, who died at 88. Mourners gathered to reflect on his work in human rights, social justice, and global HIV/AIDS advocacy. Tributes also highlighted his support for African grandmothers and community-led responses to the AIDS epidemic. (Photo by Stacey Newman/SOPA Images/LightRocket via Getty Images)]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/YVKeg3ZHUnns3N5BAXnxzm-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The <a href="https://www.pcgamer.com/gaming-industry/rip-bioware-ea-has-shut-down-the-legendary-rpg-developer/" target="_blank">closure of BioWare</a> is a tremendous loss, not just for gamers but for Canada: The Edmonton-based studio was named one of the country's best places to work multiple times over the years, even <a href="https://blog.bioware.com/2017/11/09/bioware-named-one-of-canadas-top-employers/" target="_blank">after the Electronic Arts acquisition</a> that ultimately spelled its doom. It's not entirely surprising, then, that its shutdown caught the attention of one of the country's top politicians, who had some harsh words for Electronic Arts about it.</p><p>"This is private equity, this is what it does. Buy up businesses, run them into the ground, and rip them apart for short-term profit," Avi Lewis, leader of the New Democratic Party—traditionally Canada's third-largest political party, although it's run aground a bit over the past several years—wrote on social media. </p><p>"The developers at BioWare know how to run the studio. They know how to make the games we all love. They should be given the first opportunity—and the federal support—to buy it and run it themselves. And if we want to avoid the Mass Effect effect in Canada, we should be keeping private equity out, not welcoming it in."</p><p>The NDP are a center-left party, although the ol' Overton window has resulted in a more centrist style in recent years—a drift Lewis was elected specifically to correct. He's been fairly forceful on that front, speaking out in support of anti-fascist causes and calling for the nationalization of vital industries in Canada that have been swallowed up by larger international interests. Predictably, that led some of his followers to jokingly (I think) call for BioWare to be nationalized.</p><blockquote class="bluesky-embed" data-bluesky-uri="at://did:plc:idsofvph6jyjtkumhhla6n5e/app.bsky.feed.post/3myfzwfphok2s" data-bluesky-cid="bafyreic6fsauzexhgfrs2m4fevbnvcjb6ipqtt7ulwvidym7rqvhok7mgy" cite="https://bsky.app/profile/avilewis.ca/post/3myfzwfphok2s"><p lang="en">This is private equity, this is what it does.Buy up businesses, run them into the ground, and rip them apart for short-term profit.www.pcgamer.com/gaming-indus...</p>— @avilewis.ca (<a href="https://bsky.app/profile/did:plc:idsofvph6jyjtkumhhla6n5e?ref_src=embed">@avilewis.ca.bsky.social</a>) <a href="https://bsky.app/profile/avilewis.ca/post/3myfzwfphok2s">2026-10-22T21:26:28.216Z</a></blockquote><p>While the "Mass Effect effect" line is a bit of a clunker, Lewis showed off his gamer cred in response to an inquiry on <a href="https://x.com/avilewis/status/2113020503044874454" target="_blank">X</a>: When asked who he romanced in Mass Effect 2, he replied, "If I'm honest, I'm a Mass Effect 1 on the PS3 type of guy."</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:1010px;"><p class="vanilla-image-block" style="padding-top:72.77%;"><img id="LsxRA5ZQMNDqaqVEUywbDL" name="avi" alt="If I'm honest, I'm a Mass Effect 1 on the PS3 type of guy." src="https://cdn.mos.cms.futurecdn.net/LsxRA5ZQMNDqaqVEUywbDL-1920-80.png" mos="" align="middle" fullscreen="1" width="1010" height="735" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/LsxRA5ZQMNDqaqVEUywbDL-1920-80.png' 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: Avi Lewis (Twitter))</span></figcaption></figure><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="89a51f96-ce5e-11f1-8cd2-27d827e75a76" 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="89a51f96-ce5e-11f1-8cd2-27d827e75a76" 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[ 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[ How to dual wield in Cyberpunk 2077 ]]></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="euhtdD8p4q4nw6LDn6mzpV" name="cyberpunk-2077-dual-wield-2" alt="Cyberpunk 2077 dual wield skill" src="https://cdn.mos.cms.futurecdn.net/euhtdD8p4q4nw6LDn6mzpV-1920-80.jpg" mos="" align="middle" fullscreen="1" width="2560" height="1440" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/euhtdD8p4q4nw6LDn6mzpV-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: CD Projekt)</span></figcaption></figure><p>You can now dual wield certain weapons in <a href="https://www.pcgamer.com/cyberpunk-2077/" target="_blank">Cyberpunk 2077</a> thanks to its Edgerunners 2.5 patch, though sadly it's limited to revolvers and pistols from the power category, which you can either use dual-wielded, or mix and match if you want to have multiple iconics at once.</p><p>First, though, you need to unlock the Double Trouble perk in the Cool tree at 9. There are also four subsidiary perks, which improve your dual-wielding proficiency. There are a few important things to remember:</p><ul><li>Dual-wielded iconics will retain their abilities and effects.</li><li>Dual wielding two weapons will make them weaker, though this is somewhat mitigated via Double Trouble's other perks.</li></ul><p>Either way, using two iconic power pistols and revolvers adds a lot of potential in terms of comboing effects and running and gunning your way through Night City's mean streets</p><div class="product"><a data-dimension112="cf418200-cd6a-11f1-a1dc-2577b249c224" 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="cf418200-cd6a-11f1-a1dc-2577b249c224" 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/rpg/how-to-dual-wield-in-cyberpunk-2077/</link>
                                                                            <description>
                            <![CDATA[ Combo your pistols or revolvers with the 2.5 update. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">zrvJQ3mVCFqECzcfsyExSZ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/YjAHFWfcj4a6qCzYqnU7qV-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 19:35:48 +0000</pubDate>                                                                                                                                <updated>Thu, 22 Oct 2026 19:52:29 +0000</updated>
                                                                                                                                            <category><![CDATA[RPG]]></category>
                                                    <category><![CDATA[Games]]></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/YjAHFWfcj4a6qCzYqnU7qV-1920-80.jpg">
                                                            <media:credit><![CDATA[CD Projekt]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Cyberpunk 2077 dual wielding]]></media:description>                                                            <media:text><![CDATA[Cyberpunk 2077 dual wielding]]></media:text>
                                <media:title type="plain"><![CDATA[Cyberpunk 2077 dual wielding]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/YjAHFWfcj4a6qCzYqnU7qV-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="euhtdD8p4q4nw6LDn6mzpV" name="cyberpunk-2077-dual-wield-2" alt="Cyberpunk 2077 dual wield skill" src="https://cdn.mos.cms.futurecdn.net/euhtdD8p4q4nw6LDn6mzpV-1920-80.jpg" mos="" align="middle" fullscreen="1" width="2560" height="1440" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/euhtdD8p4q4nw6LDn6mzpV-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: CD Projekt)</span></figcaption></figure><p>You can now dual wield certain weapons in <a href="https://www.pcgamer.com/cyberpunk-2077/" target="_blank">Cyberpunk 2077</a> thanks to its Edgerunners 2.5 patch, though sadly it's limited to revolvers and pistols from the power category, which you can either use dual-wielded, or mix and match if you want to have multiple iconics at once.</p><p>First, though, you need to unlock the Double Trouble perk in the Cool tree at 9. There are also four subsidiary perks, which improve your dual-wielding proficiency. There are a few important things to remember:</p><ul><li>Dual-wielded iconics will retain their abilities and effects.</li><li>Dual wielding two weapons will make them weaker, though this is somewhat mitigated via Double Trouble's other perks.</li></ul><p>Either way, using two iconic power pistols and revolvers adds a lot of potential in terms of comboing effects and running and gunning your way through Night City's mean streets</p><div class="product"><a data-dimension112="cf418200-cd6a-11f1-a1dc-2577b249c224" 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="cf418200-cd6a-11f1-a1dc-2577b249c224" 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 King's outfit in Cyberpunk 2077 ]]></title>
                                                                                                <dc:content><![CDATA[ <figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/3YBqzgVobDSXBLaerK2kvi-1920-80.jpg" alt="Cyberpunk 2077 King's outfit - Wakako's message" /><figcaption>You'll get a message from Wakako with the quest after you complete The Heist and do two gigs for her<small role="credit">CD Projekt</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QnX6wxRBVXAYqYYJAtmjvi-1920-80.jpg" alt="Cyberpunk 2077 King's outfit - Speaking to King" /><figcaption>Speak to King at BuryGer and accept the job<small role="credit">CD Projekt</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zKwLPV2YkbLmCFHc9ma6pi-1920-80.jpg" alt="Cyberpunk 2077 King's outfit - Entering prison" /><figcaption>Enter the prison<small role="credit">CD Projekt</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/a9ig4Lo9ZYLb4whsU6ncvi-1920-80.jpg" alt="Cyberpunk 2077 King's outfit - Coronation" /><figcaption>When directed, head to the bathroom and interact with the duffel bag<small role="credit">CD Projekt</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vbF29xCDJR28CJhGP23jvi-1920-80.jpg" alt="Cyberpunk 2077 King's outfit - Coronation in menu" /><figcaption>Coronation is the name of King's iconic Tech Revolver<small role="credit">CD Projekt</small></figcaption></figure></figure><p>Though perhaps not the most memorable of Edgerunners 2's characters, Weak Kingsley, or "The King" has the best outfit, including his spectacles and crown-emblazoned coat.</p><p>No wonder, then, that <a href="https://www.pcgamer.com/cyberpunk-2077/" target="_blank">Cyberpunk 2077</a> added the new Clampdown quest that lets you get his outfit and gigantic hand cannon in the Edgerunners 2.5 update, similar to how it did for <a href="https://www.pcgamer.com/cyberpunk-2077-davids-jacket-edgerunners/">David's jacket</a> and <a href="https://www.pcgamer.com/cyberpunk-2077-rebecca-shotgun-guts/">Rebecca's Shotgun</a> for season one. To complete this quest, you need to:</p><ol start="1"><li>Complete The Heist, two gigs for Wakako, and then wait for her message, starting the Clampdown quest.</li><li>Read the message, head to the meeting at BuryGer diner and speak to King, accepting the job.</li><li>Go to the prison.</li><li>When directed, head to the bathroom and interact with the duffle bag under the bench.</li></ol><p>The quest will continue, but you'll have King's iconic Coronation Tech Revolver, plus his full outfit, including the glasses.</p><div class="product"><a data-dimension112="bcdec034-ce4e-11f1-a2e1-490ef283c1b6" 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="bcdec034-ce4e-11f1-a2e1-490ef283c1b6" 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/rpg/cyberpunk-2077-king-outfit-clampdown-edgerunners/</link>
                                                                            <description>
                            <![CDATA[ Grab Weak Kingsley's coat, glasses, and gun from Edgerunners 2. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ckrdZAXUCtH6DkpjJcfecb</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/jkE7od7qNxy9z2yskrLvhi-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 19:32:18 +0000</pubDate>                                                                                                                                <updated>Fri, 23 Oct 2026 13:30:09 +0000</updated>
                                                                                                                                            <category><![CDATA[RPG]]></category>
                                                    <category><![CDATA[Games]]></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/jkE7od7qNxy9z2yskrLvhi-1920-80.jpg">
                                                            <media:credit><![CDATA[CD Projekt]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Cyberpunk 2077 King&#039;s outfit]]></media:description>                                                            <media:text><![CDATA[Cyberpunk 2077 King&#039;s outfit]]></media:text>
                                <media:title type="plain"><![CDATA[Cyberpunk 2077 King&#039;s outfit]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/jkE7od7qNxy9z2yskrLvhi-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/3YBqzgVobDSXBLaerK2kvi-1920-80.jpg" alt="Cyberpunk 2077 King's outfit - Wakako's message" /><figcaption>You'll get a message from Wakako with the quest after you complete The Heist and do two gigs for her<small role="credit">CD Projekt</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QnX6wxRBVXAYqYYJAtmjvi-1920-80.jpg" alt="Cyberpunk 2077 King's outfit - Speaking to King" /><figcaption>Speak to King at BuryGer and accept the job<small role="credit">CD Projekt</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zKwLPV2YkbLmCFHc9ma6pi-1920-80.jpg" alt="Cyberpunk 2077 King's outfit - Entering prison" /><figcaption>Enter the prison<small role="credit">CD Projekt</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/a9ig4Lo9ZYLb4whsU6ncvi-1920-80.jpg" alt="Cyberpunk 2077 King's outfit - Coronation" /><figcaption>When directed, head to the bathroom and interact with the duffel bag<small role="credit">CD Projekt</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vbF29xCDJR28CJhGP23jvi-1920-80.jpg" alt="Cyberpunk 2077 King's outfit - Coronation in menu" /><figcaption>Coronation is the name of King's iconic Tech Revolver<small role="credit">CD Projekt</small></figcaption></figure></figure><p>Though perhaps not the most memorable of Edgerunners 2's characters, Weak Kingsley, or "The King" has the best outfit, including his spectacles and crown-emblazoned coat.</p><p>No wonder, then, that <a href="https://www.pcgamer.com/cyberpunk-2077/" target="_blank">Cyberpunk 2077</a> added the new Clampdown quest that lets you get his outfit and gigantic hand cannon in the Edgerunners 2.5 update, similar to how it did for <a href="https://www.pcgamer.com/cyberpunk-2077-davids-jacket-edgerunners/">David's jacket</a> and <a href="https://www.pcgamer.com/cyberpunk-2077-rebecca-shotgun-guts/">Rebecca's Shotgun</a> for season one. To complete this quest, you need to:</p><ol start="1"><li>Complete The Heist, two gigs for Wakako, and then wait for her message, starting the Clampdown quest.</li><li>Read the message, head to the meeting at BuryGer diner and speak to King, accepting the job.</li><li>Go to the prison.</li><li>When directed, head to the bathroom and interact with the duffle bag under the bench.</li></ol><p>The quest will continue, but you'll have King's iconic Coronation Tech Revolver, plus his full outfit, including the glasses.</p><div class="product"><a data-dimension112="bcdec034-ce4e-11f1-a2e1-490ef283c1b6" 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="bcdec034-ce4e-11f1-a2e1-490ef283c1b6" 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[ Future Capcom games will have Onimusha to thank for RE Engine's gnarly dismemberments ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.pcgamer.com/onimusha-way-of-the-sword/" target="_blank">Onimusha: Way of the Sword</a> has received universal praise for its combat animations, which somehow manage to look natural and fluid no matter what angle or direction hero Miyamoto Musashi has to swing his sword to parry an incoming blow. In a post-launch interview, I asked Capcom how—beyond doing <em>a ton of work</em> across Onimusha's lengthy development—they managed to raise the bar for this sort of action game.</p><p>"Starting the project six years ago, we felt it was important to have that detail to sell the power and the excitement of the action, so it's something we really focused on," said director Satoru Nihei.</p><p>"Even at that starting point, we knew it was something that Capcom, as a company, have as a great strength: We have a lot of assets and tech available to us that allow us to create these varieties of actions. That's something we really felt we could leverage to make the game really stand out that a lot of other places can't really copy. On top of producing a lot of animations and motion capture, we have to give a lot of credit to the programmers for taking that data and putting it in a form that we can have them make these very smooth transitions, with these physics-based calculations, to go from one animation to another. It was a big team effort in getting the animations to look how they do."</p><p>PC Gamer actually got a behind-the-scenes look at that process when we traveled to Osaka this summer to see Onimusha: Way of the Sword wrapping up development.</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/pIHYi-jktpk" allowfullscreen></iframe></div></div><p>The effort put into Onimusha's animations is even more impressive within the scope of the final game and its roster of intricately choreographed boss fights. Despite being the third of Capcom's three big releases this year, following Resident Evil: Requiem and Pragmata, Onimusha features some fancy samurai dismemberment tech new to the publisher's in-house game engine. Rather than factoring into the more scripted boss fights, it comes into play when Musashi chops weaker enemies into pieces with dramatic finishers like the lightning fast Issen strike.</p><p>"One particular piece of technology that was added specifically for this title that we couldn't have done before is what we call the dynamic dismemberment system," Nihei said. "If you slash enemies with certain attacks they get cut in the exact path that a sword passes through. While that's something that has been done in the past in other games, one of the challenges and things we built on that was brand new with Onimusha was having that happen along with enemies still being animated as they're dying and dropping.</p><p>"In lots of other games you'd cut them, they'd kind of freeze when you do the cut and then fall apart. We had to have the programmers add to RE Engine to be able to enable that to really sell the impact of moves like the Issen. That was something brand new added to the engine."</p><p>This isn't the first time Nihei has talked about Onimusha's dismemberment system, but I followed up by contrasting it with other action games like Metal Gear Rising: Revengeance, which go a bit more freeform with their chopping. Nihei said that the Onimusha team knew they didn't want to go that route even early in development.</p><p>"In other games where you have that ability to cut up anything—just because of the tempo and style of game we wanted to make, it wasn't something we considered for Onimusha. Choosing exactly which direction and how you want to cut, we didn't think it was a good match for this particular title. Rather, we wanted to have something that happened reactively to how you're playing, to show off the power of the abilities."</p><p>Now that Onimusha's dynamic dismemberments are bedded into RE Engine, I hope they'll show up in Capcom's future games. Surely next time Leon blows a zombie in half with a shotgun its guts will be slipping and sliding all over the place.</p><div class="product"><a data-dimension112="bc979dec-ce4b-11f1-bf53-9b8e9c1bc339" 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="bc979dec-ce4b-11f1-bf53-9b8e9c1bc339" 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/action/future-capcom-games-will-have-onimusha-to-thank-for-re-engines-gnarly-dismemberments/</link>
                                                                            <description>
                            <![CDATA[ Surely this will come in handy for the next Resident Evil. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">VMjMBRi7i4tpgfKiy7BjZb</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/R8pn3UWuBqjRFpAv3qwvWT-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 19:18:23 +0000</pubDate>                                                                                                                                <updated>Thu, 22 Oct 2026 19:18:42 +0000</updated>
                                                                                                                                            <category><![CDATA[Action]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                                                                <author><![CDATA[ wesley@pcgamer.com (Wes Fenlon) ]]></author>                    <dc:creator><![CDATA[ Wes Fenlon ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/oLoGHTuSZDFZX6QdzCTj4R-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Wes has been covering games and hardware for more than 10 years, first at tech sites like The Wirecutter and Tested before joining the PC Gamer team in 2014. Wes plays a little bit of everything, but he&#039;ll always jump at the chance to cover emulation and Japanese games.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not obsessively optimizing and re-optimizing a tangle of conveyor belts in Satisfactory (it&#039;s really becoming a problem), he&#039;s probably playing a 20-year-old Final Fantasy or some opaque ASCII roguelike. With a focus on writing and editing features, he seeks out personal stories and in-depth histories from the corners of PC gaming and its niche communities. 50% pizza by volume (deep dish, to be specific).&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;His lasting legacy on this earth may be &lt;a href=&quot;https://www.pcgamer.com/ive-somehow-been-wasding-wrong-my-whole-life/&quot; target=&quot;_blank&quot;&gt;using WASD wrong&lt;/a&gt; for his entire life.&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/R8pn3UWuBqjRFpAv3qwvWT-1920-80.jpg">
                                                            <media:credit><![CDATA[Capcom]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Onimusha: Way of the Sword&#039;s villain]]></media:description>                                                            <media:text><![CDATA[Onimusha: Way of the Sword&#039;s villain]]></media:text>
                                <media:title type="plain"><![CDATA[Onimusha: Way of the Sword&#039;s villain]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/R8pn3UWuBqjRFpAv3qwvWT-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.pcgamer.com/onimusha-way-of-the-sword/" target="_blank">Onimusha: Way of the Sword</a> has received universal praise for its combat animations, which somehow manage to look natural and fluid no matter what angle or direction hero Miyamoto Musashi has to swing his sword to parry an incoming blow. In a post-launch interview, I asked Capcom how—beyond doing <em>a ton of work</em> across Onimusha's lengthy development—they managed to raise the bar for this sort of action game.</p><p>"Starting the project six years ago, we felt it was important to have that detail to sell the power and the excitement of the action, so it's something we really focused on," said director Satoru Nihei.</p><p>"Even at that starting point, we knew it was something that Capcom, as a company, have as a great strength: We have a lot of assets and tech available to us that allow us to create these varieties of actions. That's something we really felt we could leverage to make the game really stand out that a lot of other places can't really copy. On top of producing a lot of animations and motion capture, we have to give a lot of credit to the programmers for taking that data and putting it in a form that we can have them make these very smooth transitions, with these physics-based calculations, to go from one animation to another. It was a big team effort in getting the animations to look how they do."</p><p>PC Gamer actually got a behind-the-scenes look at that process when we traveled to Osaka this summer to see Onimusha: Way of the Sword wrapping up development.</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/pIHYi-jktpk" allowfullscreen></iframe></div></div><p>The effort put into Onimusha's animations is even more impressive within the scope of the final game and its roster of intricately choreographed boss fights. Despite being the third of Capcom's three big releases this year, following Resident Evil: Requiem and Pragmata, Onimusha features some fancy samurai dismemberment tech new to the publisher's in-house game engine. Rather than factoring into the more scripted boss fights, it comes into play when Musashi chops weaker enemies into pieces with dramatic finishers like the lightning fast Issen strike.</p><p>"One particular piece of technology that was added specifically for this title that we couldn't have done before is what we call the dynamic dismemberment system," Nihei said. "If you slash enemies with certain attacks they get cut in the exact path that a sword passes through. While that's something that has been done in the past in other games, one of the challenges and things we built on that was brand new with Onimusha was having that happen along with enemies still being animated as they're dying and dropping.</p><p>"In lots of other games you'd cut them, they'd kind of freeze when you do the cut and then fall apart. We had to have the programmers add to RE Engine to be able to enable that to really sell the impact of moves like the Issen. That was something brand new added to the engine."</p><p>This isn't the first time Nihei has talked about Onimusha's dismemberment system, but I followed up by contrasting it with other action games like Metal Gear Rising: Revengeance, which go a bit more freeform with their chopping. Nihei said that the Onimusha team knew they didn't want to go that route even early in development.</p><p>"In other games where you have that ability to cut up anything—just because of the tempo and style of game we wanted to make, it wasn't something we considered for Onimusha. Choosing exactly which direction and how you want to cut, we didn't think it was a good match for this particular title. Rather, we wanted to have something that happened reactively to how you're playing, to show off the power of the abilities."</p><p>Now that Onimusha's dynamic dismemberments are bedded into RE Engine, I hope they'll show up in Capcom's future games. Surely next time Leon blows a zombie in half with a shotgun its guts will be slipping and sliding all over the place.</p><div class="product"><a data-dimension112="bc979dec-ce4b-11f1-bf53-9b8e9c1bc339" 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="bc979dec-ce4b-11f1-bf53-9b8e9c1bc339" 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[ 'No other studio in the world did it better' than BioWare at its peak, says former Dragon Age lead writer David Gaider ]]></title>
                                                                                                <dc:content><![CDATA[ <p>After EA's announcement this week, PC Gamer reached out to BioWare veteran David Gaider to ask for his reflection on the closure and his memories of the studio. Gaider joined BioWare in 1999 to work on Baldur's Gate 2: Shadows of Amn and went on to be lead writer on the early Dragon Age games, leaving BioWare in 2016 and co-founding <a href="https://www.summerfallstudios.com/">Summerfall Studios</a> in 2019.</p><h2 id="gaider-on-bioware">Gaider on BioWare</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pFGV8fJ5sSyMtvBACWWgV3" name="dragon-age-origins-cullen.jpg" alt="Dragon Age: Origins - Cullen stands trapped behind a magical wall wearing Templar armor and looking concerned." src="https://cdn.mos.cms.futurecdn.net/pFGV8fJ5sSyMtvBACWWgV3-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: BioWare)</span></figcaption></figure><h2 id="the-loss-of-a-legacy-hurts">The loss of a legacy hurts</h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/dragon-age/no-other-studio-in-the-world-did-it-better-than-bioware-at-its-peak-says-former-dragon-age-lead-writer-david-gaider/</link>
                                                                            <description>
                            <![CDATA[ Just because we saw this coming doesn't mean it hurts less. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">pLD86Eai3gD9GH9QfSVsGh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/zbuCBKBrtXuEzbQkqCSz8S-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 17:57:26 +0000</pubDate>                                                                                                                                <updated>Thu, 22 Oct 2026 18:42:55 +0000</updated>
                                                                                                                                            <category><![CDATA[Dragon Age]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                    <category><![CDATA[RPG]]></category>
                                                                                                <author><![CDATA[ lauren@pcgamer.com (Lauren Morton) ]]></author>                    <dc:creator><![CDATA[ Lauren Morton ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/CoudgUkKX2WLFCPMbGjoX5-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/zbuCBKBrtXuEzbQkqCSz8S-1920-80.jpg">
                                                            <media:credit><![CDATA[EA]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Morrigan from Dragon Age next to a headshot of David Gaider]]></media:description>                                                            <media:text><![CDATA[Morrigan from Dragon Age next to a headshot of David Gaider]]></media:text>
                                <media:title type="plain"><![CDATA[Morrigan from Dragon Age next to a headshot of David Gaider]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/zbuCBKBrtXuEzbQkqCSz8S-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>After EA's announcement this week, PC Gamer reached out to BioWare veteran David Gaider to ask for his reflection on the closure and his memories of the studio. Gaider joined BioWare in 1999 to work on Baldur's Gate 2: Shadows of Amn and went on to be lead writer on the early Dragon Age games, leaving BioWare in 2016 and co-founding <a href="https://www.summerfallstudios.com/">Summerfall Studios</a> in 2019.</p><h2 id="gaider-on-bioware">Gaider on BioWare</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pFGV8fJ5sSyMtvBACWWgV3" name="dragon-age-origins-cullen.jpg" alt="Dragon Age: Origins - Cullen stands trapped behind a magical wall wearing Templar armor and looking concerned." src="https://cdn.mos.cms.futurecdn.net/pFGV8fJ5sSyMtvBACWWgV3-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: BioWare)</span></figcaption></figure><h2 id="the-loss-of-a-legacy-hurts">The loss of a legacy hurts</h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Splash Damage acquired this studio just 3 months after laying off a bunch of people—now it's laying them off, too ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The <a href="https://www.pcgamer.com/gaming-industry/rip-bioware-ea-has-shut-down-the-legendary-rpg-developer/">closure of BioWare</a> and layoff of roughly 400 people at Electronic Arts is being rightly excoriated as an example of the corrosive effects of capital on pretty much everything good. But that same sort of thing happens, maybe more often than we'd like to think, on smaller scales, too. Case in point: Gamepires, creator of open-world survival game <a href="https://www.pcgamer.com/scum/" target="_blank">Scum</a>, which announced last week that it's putting people out of work.</p><p>The bad news came via an unattributed message posted on <a href="https://x.com/ScumGame/status/2110283255060603386/photo/1">X</a>: "A difficult decision has been made to reduce the size of the Gamepires team, which means saying goodbye to colleagues who've helped shape Scum and the studio. This step is necessary to help Gamepires adapt to challenging market conditions and long-term sustainability."</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:124.92%;"><img id="X6aP4mrbYBNu4zbh6Yi7cR" name="Imported image 1 - 1792689471441" alt="A difficult decision has been made to reduce the size of the Gamepires team, which means saying goodbye to colleagues who've helped shape Scum and the studio. This step is necessary to help Gamepires adapt to challenging market conditions and long-term sustainability." src="https://cdn.mos.cms.futurecdn.net/X6aP4mrbYBNu4zbh6Yi7cR-1920-80.jpg" mos="" align="middle" fullscreen="1" width="602" height="752" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/X6aP4mrbYBNu4zbh6Yi7cR-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: Gamepires)</span></figcaption></figure><p>It's all very bloodless and generic—the sort of statement that could've come from just about any game studio making layoffs over the past six months or so. </p><p>What makes this particular case feel so egregious, though, is that Gamepires was <a href="https://www.pcgamer.com/gaming-industry/3-months-after-laying-off-a-bunch-of-people-splash-damage-has-become-splash-damage-group-and-acquired-another-studio/" target="_blank">acquired by Splash Damage Group</a>, in a deal backed by Emona Capital, just eight months ago. And <em>that </em>acquisition was made just three months after Splash Damage <a href="https://www.pcgamer.com/gaming-industry/2-months-after-being-acquired-by-private-equity-splash-damage-is-making-major-layoffs-so-it-can-remain-agile-even-though-it-hasnt-released-a-game-since-2020/" target="_blank">made major layoffs</a> of its own, so it could "remain agile and adaptable in what has been a very challenging market." And <em>those </em>layoffs came just two months after Splash Damage was <a href="https://www.pcgamer.com/gaming-industry/9-months-after-cancelling-transformers-reactivate-splash-damage-splits-from-tencent-and-is-now-owned-by-private-equity-investors/" target="_blank">acquired by then-unnamed private equity investors</a>.</p><p>Splash Damage hasn't released a game since Gears Tactics in 2020: Its planned next big thing, Transformers: Reactivate, was cancelled in 2025. Gamepires' survival game Scum, meanwhile, is still ticking over nicely on Steam, where it's being regularly updated with hotfixes and content updates. </p><p>In fact, Splash Damage said when it acquired Gamepires that "bringing the teams together around Scum gives Splash Damage Group immediate, meaningful work to focus on," adding, "That stability has been important for protecting roles and giving the studio a solid foundation for its future. Splash Damage Group is currently just under 150 people, and we will be working closely with Emona to grow the group over the next few years."</p><p>Yet here we are, eight months later. </p><p>So, to recap:</p><ul><li>Splash Damage gets <strong>bought up by private equity</strong></li><li>Splash Damage <strong>lays off employees</strong></li><li>Splash Damage, <strong>backed by private equity, acquires Gamepires</strong></li><li>Gamepires <strong>lays off employees</strong></li></ul><p>The number of people put out of work wasn't revealed, but in response to our inquiry Splash Damage issued the following statement:</p><p><em>"Gamepires is part of Splash Damage Group and has reduced the size of its team in response to challenging market conditions and to support the studio’s long-term sustainability.</em></p><p><em>"These redundancies have affected colleagues we work closely with, whose work has helped make SCUM what it is today. We know this is difficult news for those leaving. We have great respect for their work and the contribution they’ve made to both the game and the studio.</em></p><p><em>"Development of SCUM will continue, and we’ll keep working with our colleagues at Gamepires to support updates and new content."</em></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="a2c89fd6-ce3e-11f1-bc68-3d8aa510d68c" 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="a2c89fd6-ce3e-11f1-bc68-3d8aa510d68c" 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/gaming-industry/splash-damage-acquired-this-studio-just-3-months-after-laying-off-a-bunch-of-people-now-its-laying-them-off-too/</link>
                                                                            <description>
                            <![CDATA[ An undisclosed number of employees have been let go from the studio behind survival game Scum. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">QkVsgr7JTRxm6kG8dPJdrV</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Wsgd5xK2eX6PXhVUsPmXcV-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 17:34:04 +0000</pubDate>                                                                                                                                <updated>Thu, 22 Oct 2026 18:34:54 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Industry]]></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/Wsgd5xK2eX6PXhVUsPmXcV-1920-80.jpg">
                                                            <media:credit><![CDATA[Gamepires]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Scum screenshot - dude in sunglasses about to get ganked by a bear]]></media:description>                                                            <media:text><![CDATA[Scum screenshot - dude in sunglasses about to get ganked by a bear]]></media:text>
                                <media:title type="plain"><![CDATA[Scum screenshot - dude in sunglasses about to get ganked by a bear]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Wsgd5xK2eX6PXhVUsPmXcV-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The <a href="https://www.pcgamer.com/gaming-industry/rip-bioware-ea-has-shut-down-the-legendary-rpg-developer/">closure of BioWare</a> and layoff of roughly 400 people at Electronic Arts is being rightly excoriated as an example of the corrosive effects of capital on pretty much everything good. But that same sort of thing happens, maybe more often than we'd like to think, on smaller scales, too. Case in point: Gamepires, creator of open-world survival game <a href="https://www.pcgamer.com/scum/" target="_blank">Scum</a>, which announced last week that it's putting people out of work.</p><p>The bad news came via an unattributed message posted on <a href="https://x.com/ScumGame/status/2110283255060603386/photo/1">X</a>: "A difficult decision has been made to reduce the size of the Gamepires team, which means saying goodbye to colleagues who've helped shape Scum and the studio. This step is necessary to help Gamepires adapt to challenging market conditions and long-term sustainability."</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:124.92%;"><img id="X6aP4mrbYBNu4zbh6Yi7cR" name="Imported image 1 - 1792689471441" alt="A difficult decision has been made to reduce the size of the Gamepires team, which means saying goodbye to colleagues who've helped shape Scum and the studio. This step is necessary to help Gamepires adapt to challenging market conditions and long-term sustainability." src="https://cdn.mos.cms.futurecdn.net/X6aP4mrbYBNu4zbh6Yi7cR-1920-80.jpg" mos="" align="middle" fullscreen="1" width="602" height="752" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/X6aP4mrbYBNu4zbh6Yi7cR-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: Gamepires)</span></figcaption></figure><p>It's all very bloodless and generic—the sort of statement that could've come from just about any game studio making layoffs over the past six months or so. </p><p>What makes this particular case feel so egregious, though, is that Gamepires was <a href="https://www.pcgamer.com/gaming-industry/3-months-after-laying-off-a-bunch-of-people-splash-damage-has-become-splash-damage-group-and-acquired-another-studio/" target="_blank">acquired by Splash Damage Group</a>, in a deal backed by Emona Capital, just eight months ago. And <em>that </em>acquisition was made just three months after Splash Damage <a href="https://www.pcgamer.com/gaming-industry/2-months-after-being-acquired-by-private-equity-splash-damage-is-making-major-layoffs-so-it-can-remain-agile-even-though-it-hasnt-released-a-game-since-2020/" target="_blank">made major layoffs</a> of its own, so it could "remain agile and adaptable in what has been a very challenging market." And <em>those </em>layoffs came just two months after Splash Damage was <a href="https://www.pcgamer.com/gaming-industry/9-months-after-cancelling-transformers-reactivate-splash-damage-splits-from-tencent-and-is-now-owned-by-private-equity-investors/" target="_blank">acquired by then-unnamed private equity investors</a>.</p><p>Splash Damage hasn't released a game since Gears Tactics in 2020: Its planned next big thing, Transformers: Reactivate, was cancelled in 2025. Gamepires' survival game Scum, meanwhile, is still ticking over nicely on Steam, where it's being regularly updated with hotfixes and content updates. </p><p>In fact, Splash Damage said when it acquired Gamepires that "bringing the teams together around Scum gives Splash Damage Group immediate, meaningful work to focus on," adding, "That stability has been important for protecting roles and giving the studio a solid foundation for its future. Splash Damage Group is currently just under 150 people, and we will be working closely with Emona to grow the group over the next few years."</p><p>Yet here we are, eight months later. </p><p>So, to recap:</p><ul><li>Splash Damage gets <strong>bought up by private equity</strong></li><li>Splash Damage <strong>lays off employees</strong></li><li>Splash Damage, <strong>backed by private equity, acquires Gamepires</strong></li><li>Gamepires <strong>lays off employees</strong></li></ul><p>The number of people put out of work wasn't revealed, but in response to our inquiry Splash Damage issued the following statement:</p><p><em>"Gamepires is part of Splash Damage Group and has reduced the size of its team in response to challenging market conditions and to support the studio’s long-term sustainability.</em></p><p><em>"These redundancies have affected colleagues we work closely with, whose work has helped make SCUM what it is today. We know this is difficult news for those leaving. We have great respect for their work and the contribution they’ve made to both the game and the studio.</em></p><p><em>"Development of SCUM will continue, and we’ll keep working with our colleagues at Gamepires to support updates and new content."</em></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="a2c89fd6-ce3e-11f1-bc68-3d8aa510d68c" 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="a2c89fd6-ce3e-11f1-bc68-3d8aa510d68c" 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[ Someone leaked a Mass Effect 5 trailer and now I feel even worse, because it looks really good ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The day after the <a href="https://www.pcgamer.com/gaming-industry/rip-bioware-ea-has-shut-down-the-legendary-rpg-developer/" target="_blank">closure of BioWare</a> and cancellation of the next Mass Effect game, a purported trailer for Mass Effect: Universe has surfaced on Reddit. The authenticity of the trailer is unknown at this point, but at the very least it sure looks legit.</p><p>Straight to it, here's the video:</p><figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/masseffect/comments/1xclmpu/mass_effect_universe_trailer">Mass Effect: Universe Trailer</a><figcaption><cite> from <a href="https://www.reddit.com/r/masseffect">r/masseffect</a></cite></figcaption></blockquote></figure><script async src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p>Man, that looks like Mass Effect—and sounds like it, too. The music is right, and at least two PC Gamer employees are pretty sure that's Liara's actual voice. Shepard's out, but the new guy seems suitably Shepard-like, although I can't help but notice the absence of the N7 logo on his uniform. Maybe the new guy was meant to be a rawer, rougher kind of troubleshooter—more of a housecleaner than a world-saver—or perhaps the ascent to the rank was meant to be part of the character's progression, which would've been cool.</p><p>There are no obvious AI telltales here, at least none that I can see, and adding to the trailer's "real deal" potential, a redditor claiming to be an EA employee said yesterday that a trailer for the new game <a href="https://www.reddit.com/r/Austin/comments/1xc0uzv/comment/19rgdyayriv9c/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">had been produced</a> and suggested that it was not as early in the development process as was widely believed.</p><p>Not long after the trailer came to light, Jason Schreier of Bloomberg said on <a href="https://bsky.app/profile/jasonschreier.bsky.social/post/3myi6wo57ns2f" target="_blank">Bluesky</a> that it is indeed real, and that BioWare had been working on the game until its closure.</p><p>Whatever the case—and we're still working on verifying its provenance—the trailer is also just the right blend of sexy, violent, and corny: Even if this isn't a real trailer for what BioWare was working on (and at this point it seems pretty certain that it is), it's a Mass Effect we would definitely play.</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="6a80669a-ce39-11f1-8181-59164892a8fa" 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="6a80669a-ce39-11f1-8181-59164892a8fa" 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/mass-effect/someone-leaked-a-mass-effect-5-trailer-and-now-i-feel-even-worse-because-it-looks-really-good/</link>
                                                                            <description>
                            <![CDATA[ The video was posted several hours after a purported EA employee said a trailer for the new game was ready to go. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Bo69HFfg2oLizYJVMVdAxL</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/QLBVemEasSnJmdfJ6VMfKF-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 16:56:08 +0000</pubDate>                                                                                                                                <updated>Thu, 22 Oct 2026 18:42:55 +0000</updated>
                                                                                                                                            <category><![CDATA[Mass Effect]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                    <category><![CDATA[Action]]></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/QLBVemEasSnJmdfJ6VMfKF-1920-80.jpg">
                                                            <media:credit><![CDATA[BioWare/Electronic Arts]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Liara T&#039;Soni in Mass Effect: Universe trailer]]></media:description>                                                            <media:text><![CDATA[Liara T&#039;Soni in Mass Effect: Universe trailer]]></media:text>
                                <media:title type="plain"><![CDATA[Liara T&#039;Soni in Mass Effect: Universe trailer]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/QLBVemEasSnJmdfJ6VMfKF-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The day after the <a href="https://www.pcgamer.com/gaming-industry/rip-bioware-ea-has-shut-down-the-legendary-rpg-developer/" target="_blank">closure of BioWare</a> and cancellation of the next Mass Effect game, a purported trailer for Mass Effect: Universe has surfaced on Reddit. The authenticity of the trailer is unknown at this point, but at the very least it sure looks legit.</p><p>Straight to it, here's the video:</p><figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/masseffect/comments/1xclmpu/mass_effect_universe_trailer">Mass Effect: Universe Trailer</a><figcaption><cite> from <a href="https://www.reddit.com/r/masseffect">r/masseffect</a></cite></figcaption></blockquote></figure><script async src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p>Man, that looks like Mass Effect—and sounds like it, too. The music is right, and at least two PC Gamer employees are pretty sure that's Liara's actual voice. Shepard's out, but the new guy seems suitably Shepard-like, although I can't help but notice the absence of the N7 logo on his uniform. Maybe the new guy was meant to be a rawer, rougher kind of troubleshooter—more of a housecleaner than a world-saver—or perhaps the ascent to the rank was meant to be part of the character's progression, which would've been cool.</p><p>There are no obvious AI telltales here, at least none that I can see, and adding to the trailer's "real deal" potential, a redditor claiming to be an EA employee said yesterday that a trailer for the new game <a href="https://www.reddit.com/r/Austin/comments/1xc0uzv/comment/19rgdyayriv9c/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">had been produced</a> and suggested that it was not as early in the development process as was widely believed.</p><p>Not long after the trailer came to light, Jason Schreier of Bloomberg said on <a href="https://bsky.app/profile/jasonschreier.bsky.social/post/3myi6wo57ns2f" target="_blank">Bluesky</a> that it is indeed real, and that BioWare had been working on the game until its closure.</p><p>Whatever the case—and we're still working on verifying its provenance—the trailer is also just the right blend of sexy, violent, and corny: Even if this isn't a real trailer for what BioWare was working on (and at this point it seems pretty certain that it is), it's a Mass Effect we would definitely play.</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="6a80669a-ce39-11f1-8181-59164892a8fa" 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="6a80669a-ce39-11f1-8181-59164892a8fa" 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[ I've never seen a laptop cooler come with its own comic strip before, but it still hasn't convinced me this noisy beast is worth $50 ]]></title>
                                                                                                <dc:content><![CDATA[ <div  class="fancy-box"><div class="fancy_box-title">Budget Win or Recycle Bin?</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="MopksAbEqHgsjRp86WSqTg" name="budgetwinorrecyclebin" caption="" alt="The red and blue logo for Budget Win or Recycle Bin, with the PC Gamer logo in the top left" src="https://cdn.mos.cms.futurecdn.net/MopksAbEqHgsjRp86WSqTg-1920-80.jpg" 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"><em><strong>Andy Edser</strong></em><em> is a man with a mission. It's a mission he didn't sign up for, or even want, but I'm his boss so he has to do what I say. And I'm making him test a ton of different cheap tech I might find on Amazon, AliExpress, TikTok Shop, or down the back of my sofa. Out of nowhere it will appear on his doorstep with no warning, and he has no choice but to use whatever it is like his life depends on it. Because it does. </em></p></div></div><p>I find myself charmed (and perhaps a little perturbed) by the little black envelope included with this Klim Everest laptop cooling pad. Inside you get a set of shiny stickers, a warranty card, and, err.. a comic strip depicting the fictional process that begins when you order one.</p><p>"Your product was carefully retrieved from our inventory with sterilized anti-bacterial gloves and placed on a satin silk cushion," the first panel explains. "The party we organized to celebrate your order lasted three days."</p><p>Okay, that's something I've never seen before. And I'll be honest, the sarcastic comic endears me to the product more than it should. I could do without the last panel, though, which says: "If you feel like it, send us a photo of you (or your pet) and we'll send you a printable version of this comic strip with your photo on 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:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="V6EzDDicevtbN3qJbwAPpm" name="Klimcomic" alt="An image of the comic strip that comes included with the Klim Everest laptop cooler" src="https://cdn.mos.cms.futurecdn.net/V6EzDDicevtbN3qJbwAPpm-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/V6EzDDicevtbN3qJbwAPpm-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: Future)</span></figcaption></figure><p>A step too far, I feel. Anyway, the pad itself is a very sizable unit, designed to cool laptops from 14 to 17.3-inches in size and powered by a USB Type-A port. Atop its silver plastic frame sits a foam gasket, designed to create a seal between the bottom of your lappy and the outside air. Two 60 mm fans pull cool air from the rear of the pad and fire it at the bottom of your machine, into any awaiting vents.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/hncUbmpZMqjzSTAPJzN7s8-1920-80.jpg" alt="Assorted images of the Klim Everest laptop cooler, and everything included inside the box" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SHG8DAx37x7VRoXBD6Q6s8-1920-80.jpg" alt="Assorted images of the Klim Everest laptop cooler, and everything included inside the box" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Ktm4sn34pRhSqDJ5PHUub8-1920-80.jpg" alt="Assorted images of the Klim Everest laptop cooler, and everything included inside the box" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/RzYeKWxuwHZUbmztnBCji8-1920-80.jpg" alt="Assorted images of the Klim Everest laptop cooler, and everything included inside the box" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cw3PgZdUJjN6vDbWN7XMs8-1920-80.jpg" alt="Assorted images of the Klim Everest laptop cooler, and everything included inside the box" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TECWsw5JvfzBCvWHkmZKu8-1920-80.jpg" alt="Assorted images of the Klim Everest laptop cooler, and everything included inside the box" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SWNmpswLQvmKnKWAQ2Dks8-1920-80.jpg" alt="Assorted images of the Klim Everest laptop cooler, and everything included inside the box" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The full MSRP of the Klim Everest is listed as $60, but it's <a href="https://www.amazon.com/KLIM-Everest-Cooling-Powerful-Overheating/dp/B0F7M1LKJ7/" target="_blank">currently down to $50 at Amazon</a>. There are cheaper options on the market, but this one is much more wallet-friendly than, say, <a href="https://www.amazon.com/Razer-Laptop-Cooling-Pad-Intelligent/dp/B0DJDWWHTV/" target="_blank">this Razer unit for a mahoosive $150</a>.</p><p>Speaking of which, I have an ageing Razer Blade 15 that likes to get toasty under full load. So, I booted up the Cyberpunk 2077 benchmark, ran it on repeat, and gathered my temperature readings—before placing the lappy atop the Everest (making sure not to block any vents) to see if it made much difference.</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-1792677909036-ng4e3cyml *, #fv-chart-1792677909036-ng4e3cyml *:before, #fv-chart-1792677909036-ng4e3cyml *:after, #fv-chart-1792677909036-ng4e3cyml-slideshow *, #fv-chart-1792677909036-ng4e3cyml-slideshow *:before, #fv-chart-1792677909036-ng4e3cyml-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792677909036-ng4e3cyml, #fv-chart-1792677909036-ng4e3cyml-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792677909036-ng4e3cyml { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792677909036-ng4e3cyml.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792677909036-ng4e3cyml.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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1792677909036-ng4e3cyml-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792677909036-ng4e3cyml-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-1792677909036-ng4e3cyml-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-1792677909036-ng4e3cyml-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792677909036-ng4e3cyml-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792677909036-ng4e3cyml-slideshow .fv-nav-btn.disabled, #fv-chart-1792677909036-ng4e3cyml-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-1792677909036-ng4e3cyml-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-1792677909036-ng4e3cyml-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-1792677909036-ng4e3cyml-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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792677909036-ng4e3cyml .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792677909036-ng4e3cyml .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792677909036-ng4e3cyml .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792677909036-ng4e3cyml .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-bar-row, #fv-chart-1792677909036-ng4e3cyml .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792677909036-ng4e3cyml.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792677909036-ng4e3cyml.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792677909036-ng4e3cyml .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792677909036-ng4e3cyml .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792677909036-ng4e3cyml .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792677909036-ng4e3cyml .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792677909036-ng4e3cyml .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792677909036-ng4e3cyml .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792677909036-ng4e3cyml .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792677909036-ng4e3cyml .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml.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-1792677909036-ng4e3cyml.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792677909036-ng4e3cyml.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792677909036-ng4e3cyml .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792677909036-ng4e3cyml .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml.mobile-view .fv-pie-container, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-row, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-stacked-product, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-grouped-bar-product, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-bar-row, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-stacked-product, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792677909036-ng4e3cyml.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-1792677909036-ng4e3cyml.mobile-view .fv-bar-label, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-grouped-product-title, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-bar-label, #fv-chart-1792677909036-ng4e3cyml.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-1792677909036-ng4e3cyml.mobile-view .fv-bar-container, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-cluster, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-bar-container, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792677909036-ng4e3cyml.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-1792677909036-ng4e3cyml.mobile-view .fv-x-axis-wrapper, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-x-axis-label-space, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-x-axis-chart-space, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-benchmark-title, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-dropdown-title, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-carousel-nav-btn, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-chart-title, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-chart-subhead, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-versus-header, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-versus-select-wrapper, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-versus-vs, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-versus-select-container, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-versus-select, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792677909036-ng4e3cyml.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-1792677909036-ng4e3cyml.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-commentary-inline, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-dials-grid, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-dial-title, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792677909036-ng4e3cyml .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792677909036-ng4e3cyml .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-bar-row, #fv-chart-1792677909036-ng4e3cyml .fv-stacked-product, #fv-chart-1792677909036-ng4e3cyml .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-bar-label, #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-bar-container, #fv-chart-1792677909036-ng4e3cyml .fv-bar-cluster { width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792677909036-ng4e3cyml .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792677909036-ng4e3cyml .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-x-axis-label-space { display: none !important; } #fv-chart-1792677909036-ng4e3cyml .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-stl-shop-all-logo, #fv-chart-1792677909036-ng4e3cyml .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792677909036-ng4e3cyml .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792677909036-ng4e3cyml .fv-dial-title { font-size: 16px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792677909036-ng4e3cyml.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": "Klin Everest laptop cooling pad testing",  "description": "Results recorded on a Razer Blade 15 (2020) gaming laptop with an Intel Core i7 10875H and an RTX 3080 mobile GPU",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-10-22T14:05:09.036Z",  "citation": "The Klin Everest does manage to lower the peak CPU temperature of the Blade 15 by two degrees, resulting in ever-so-slightly higher clockspeeds. However, gaming performance and GPU stats remain well within margins of error.",  "keywords": [    "Razer Blade 15 | No cooling pad",    "Razer Blade 15 | Cooling pad set to maximum",    "Cyberpunk 2077 (1080p Ultra RT, DLSS Quality)",    "Temperatures",    "CPU stats",    "GPU stats",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Razer Blade 15 | Cooling pad set to maximum – Cyberpunk 2077 (1080p Ultra RT, DLSS Quality)",      "value": 51,      "unitText": "Avg FPS"    },    {      "@type": "PropertyValue",      "name": "Razer Blade 15 | No cooling pad – Cyberpunk 2077 (1080p Ultra RT, DLSS Quality)",      "value": 51,      "unitText": "Avg FPS"    },    {      "@type": "PropertyValue",      "name": "Razer Blade 15 | Cooling pad set to maximum – Temperatures",      "value": 70,      "unitText": "Avg CPU (°C)"    },    {      "@type": "PropertyValue",      "name": "Razer Blade 15 | No cooling pad – Temperatures",      "value": 70,      "unitText": "Avg CPU (°C)"    },    {      "@type": "PropertyValue",      "name": "Razer Blade 15 | Cooling pad set to maximum – CPU stats",      "value": 2583,      "unitText": "Avg CPU freq. (MHz)"    },    {      "@type": "PropertyValue",      "name": "Razer Blade 15 | No cooling pad – CPU stats",      "value": 2562,      "unitText": "Avg CPU freq. (MHz)"    },    {      "@type": "PropertyValue",      "name": "Razer Blade 15 | Cooling pad set to maximum – GPU stats",      "value": 1163,      "unitText": "Avg GPU freq. (MHz)"    },    {      "@type": "PropertyValue",      "name": "Razer Blade 15 | No cooling pad – GPU stats",      "value": 1192,      "unitText": "Avg GPU freq. (MHz)"    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-10-22T14:05:09.036Z","state":{"data":[{"productName":"Razer Blade 15 | Cooling pad set to maximum","attribute":"Cyberpunk 2077 (1080p Ultra RT, DLSS Quality)","value":51,"unit":"Avg FPS","multiValues":[{"value":51,"unit":"Avg FPS"},{"value":40,"unit":"1% Low FPS"}],"color":"","site":"PC Gamer"},{"productName":"Razer Blade 15 | Cooling pad set to maximum","attribute":"Temperatures","value":70,"unit":"Avg CPU (°C)","multiValues":[{"value":70,"unit":"Avg CPU (°C)"},{"value":83,"unit":"Max CPU (°C)"},{"value":65,"unit":"Avg GPU (°C)"},{"value":73,"unit":"Max GPU (°C)"}],"color":"","site":"PC Gamer"},{"productName":"Razer Blade 15 | Cooling pad set to maximum","attribute":"CPU stats","value":2583,"unit":"Avg CPU freq. (MHz)","multiValues":[{"value":2583,"unit":"Avg CPU freq. (MHz)"},{"value":3442,"unit":"Max CPU freq. (MHz)"}],"color":"","site":"PC Gamer"},{"productName":"Razer Blade 15 | Cooling pad set to maximum","attribute":"GPU stats","value":1163,"unit":"Avg GPU freq. (MHz)","multiValues":[{"value":1163,"unit":"Avg GPU freq. (MHz)"},{"value":1775,"unit":"Max GPU freq. (MHz)"}],"color":"","site":"PC Gamer"},{"productName":"Razer Blade 15 | No cooling pad","attribute":"Cyberpunk 2077 (1080p Ultra RT, DLSS Quality)","value":51,"unit":"Avg FPS","multiValues":[{"value":51,"unit":"Avg FPS"},{"value":41,"unit":"1% Low FPS"}],"color":"","site":"PC Gamer"},{"productName":"Razer Blade 15 | No cooling pad","attribute":"Temperatures","value":70,"unit":"Avg CPU (°C)","multiValues":[{"value":70,"unit":"Avg CPU (°C)"},{"value":85,"unit":"Max CPU (°C)"},{"value":66,"unit":"Avg GPU (°C)"},{"value":73,"unit":"Max GPU (°C)"}],"color":"","site":"PC Gamer"},{"productName":"Razer Blade 15 | No cooling pad","attribute":"CPU stats","value":2562,"unit":"Avg CPU freq. (MHz)","multiValues":[{"value":2562,"unit":"Avg CPU freq. (MHz)"},{"value":3380,"unit":"Max CPU freq. (MHz)"}],"color":"","site":"PC Gamer"},{"productName":"Razer Blade 15 | No cooling pad","attribute":"GPU stats","value":1192,"unit":"Avg GPU freq. (MHz)","multiValues":[{"value":1192,"unit":"Avg GPU freq. (MHz)"},{"value":1775,"unit":"Max GPU freq. (MHz)"}],"color":"","site":"PC Gamer"}],"products":["Razer Blade 15 | Cooling pad set to maximum","Razer Blade 15 | No cooling pad"],"attributes":["Cyberpunk 2077 (1080p Ultra RT, DLSS Quality)","Temperatures","CPU stats","GPU stats"],"selectedProducts":["Razer Blade 15 | No cooling pad","Razer Blade 15 | Cooling pad set to maximum"],"selectedPrimaryProduct":null,"selectedAttributes":["Cyberpunk 2077 (1080p Ultra RT, DLSS Quality)","Temperatures","CPU stats","GPU stats"],"productColors":[{"productName":"Razer Blade 15 | Cooling pad set to maximum","color":"#E33235"},{"productName":"Razer Blade 15 | No cooling pad","color":"#FE9F58"}],"initialProductColors":[{"productName":"Razer Blade 15 | Cooling pad set to maximum","color":"#E33235"},{"productName":"Razer Blade 15 | No cooling pad","color":"#FE9F58"}],"attributeColors":[],"attributeGroups":[],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"Dropdown","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":"Klin Everest laptop cooling pad testing","subhead":"Results recorded on a Razer Blade 15 (2020) gaming laptop with an Intel Core i7 10875H and an RTX 3080 mobile GPU","caption":"The Klin Everest does manage to lower the peak CPU temperature of the Blade 15 by two degrees, resulting in ever-so-slightly higher clockspeeds. However, gaming performance and GPU stats remain well within margins of error. ","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":false,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":true,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1792677909036-ng4e3cyml" class="fv-chart-wrapper  labels-on-top " data-bar-labels-on-top="true" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Klin Everest laptop cooling pad testing</h3><p class="fv-chart-subhead">Results recorded on a Razer Blade 15 (2020) gaming laptop with an Intel Core i7 10875H and an RTX 3080 mobile GPU</p><div class="fv-dropdown-wrapper"><div class="fv-dropdown-title-container"><select class="fv-dropdown-title"><option value="0">Cyberpunk 2077 (1080p Ultra RT, DLSS Quality)</option><option value="1">Temperatures</option><option value="2">CPU stats</option><option value="3">GPU stats</option></select><div class="fv-dropdown-chevron"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"/></svg></div></div></div><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1792677909036-ng4e3cyml-bar-Cyberpunk 2077 (1080p Ultra RT, DLSS Quality)" data-chart-type="Bar" data-title="Cyberpunk 2077 (1080p Ultra RT, DLSS Quality)" data-subhead="Results recorded on a Razer Blade 15 (2020) gaming laptop with an Intel Core i7 10875H and an RTX 3080 mobile GPU" data-caption="The Klin Everest does manage to lower the peak CPU temperature of the Blade 15 by two degrees, resulting in ever-so-slightly higher clockspeeds. However, gaming performance and GPU stats remain well within margins of error. " style=""><div class="fv-benchmark-group"><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 ">Razer Blade 15 | No cooling pad</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: 85%; background-color: #E33235;" data-target-width="85" 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">51</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 68.33333333333333%; background-color: #FE9F58;" data-target-width="68.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">41</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Razer Blade 15 | Cooling pad set to maximum</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: 85%; background-color: #E33235;" data-target-width="85" 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">51</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 66.66666666666666%; background-color: #FE9F58;" data-target-width="66.66666666666666" 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">40</span></div></div></div></div></div><table class="sr-only"><caption>Cyberpunk 2077 (1080p Ultra RT, DLSS Quality) Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Razer Blade 15 | No cooling pad</td><td>51 Avg FPS, 41 1% Low FPS</td></tr><tr><td>Razer Blade 15 | Cooling pad set to maximum</td><td>51 Avg FPS, 40 1% Low FPS</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1792677909036-ng4e3cyml-bar-Temperatures" data-chart-type="Bar" data-title="Temperatures" data-subhead="Results recorded on a Razer Blade 15 (2020) gaming laptop with an Intel Core i7 10875H and an RTX 3080 mobile GPU" data-caption="The Klin Everest does manage to lower the peak CPU temperature of the Blade 15 by two degrees, resulting in ever-so-slightly higher clockspeeds. However, gaming performance and GPU stats remain well within margins of error. " style="display: none;"><div class="fv-benchmark-group"><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 CPU (°C)</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #FE9F58;"></div><span>Max CPU (°C)</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #1CA9C4;"></div><span>Avg GPU (°C)</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #EB6F71;"></div><span>Max GPU (°C)</span></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Razer Blade 15 | No cooling pad</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: 70%; background-color: #E33235;" data-target-width="70" 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: 85%; background-color: #FE9F58;" data-target-width="85" 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 class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 66%; background-color: #1CA9C4;" data-target-width="66" 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">66</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 73%; background-color: #EB6F71;" data-target-width="73" 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">73</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Razer Blade 15 | Cooling pad set to maximum</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: 70%; background-color: #E33235;" data-target-width="70" 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: 83%; background-color: #FE9F58;" data-target-width="83" 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">83</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 65%; background-color: #1CA9C4;" data-target-width="65" 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">65</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 73%; background-color: #EB6F71;" data-target-width="73" 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">73</span></div></div></div></div></div><table class="sr-only"><caption>Temperatures Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Razer Blade 15 | No cooling pad</td><td>70 Avg CPU (°C), 85 Max CPU (°C), 66 Avg GPU (°C), 73 Max GPU (°C)</td></tr><tr><td>Razer Blade 15 | Cooling pad set to maximum</td><td>70 Avg CPU (°C), 83 Max CPU (°C), 65 Avg GPU (°C), 73 Max GPU (°C)</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1792677909036-ng4e3cyml-bar-CPU stats" data-chart-type="Bar" data-title="CPU stats" data-subhead="Results recorded on a Razer Blade 15 (2020) gaming laptop with an Intel Core i7 10875H and an RTX 3080 mobile GPU" data-caption="The Klin Everest does manage to lower the peak CPU temperature of the Blade 15 by two degrees, resulting in ever-so-slightly higher clockspeeds. However, gaming performance and GPU stats remain well within margins of error. " style="display: none;"><div class="fv-benchmark-group"><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 CPU freq. (MHz)</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #FE9F58;"></div><span>Max CPU freq. (MHz)</span></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Razer Blade 15 | No cooling pad</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.05%; background-color: #E33235;" data-target-width="64.05" 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">2562</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 84.5%; background-color: #FE9F58;" data-target-width="84.5" 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">3380</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Razer Blade 15 | Cooling pad set to maximum</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.575%; background-color: #E33235;" data-target-width="64.575" 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">2583</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 86.05000000000001%; background-color: #FE9F58;" data-target-width="86.05000000000001" 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">3442</span></div></div></div></div></div><table class="sr-only"><caption>CPU stats Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Razer Blade 15 | No cooling pad</td><td>2562 Avg CPU freq. (MHz), 3380 Max CPU freq. (MHz)</td></tr><tr><td>Razer Blade 15 | Cooling pad set to maximum</td><td>2583 Avg CPU freq. (MHz), 3442 Max CPU freq. (MHz)</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1792677909036-ng4e3cyml-bar-GPU stats" data-chart-type="Bar" data-title="GPU stats" data-subhead="Results recorded on a Razer Blade 15 (2020) gaming laptop with an Intel Core i7 10875H and an RTX 3080 mobile GPU" data-caption="The Klin Everest does manage to lower the peak CPU temperature of the Blade 15 by two degrees, resulting in ever-so-slightly higher clockspeeds. However, gaming performance and GPU stats remain well within margins of error. " style="display: none;"><div class="fv-benchmark-group"><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 GPU freq. (MHz)</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #FE9F58;"></div><span>Max GPU freq. (MHz)</span></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Razer Blade 15 | No cooling pad</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: 59.599999999999994%; background-color: #E33235;" data-target-width="59.599999999999994" 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">1192</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 88.75%; background-color: #FE9F58;" data-target-width="88.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">1775</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Razer Blade 15 | Cooling pad set to maximum</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: 58.15%; background-color: #E33235;" data-target-width="58.15" 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">1163</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 88.75%; background-color: #FE9F58;" data-target-width="88.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">1775</span></div></div></div></div></div><table class="sr-only"><caption>GPU stats Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Razer Blade 15 | No cooling pad</td><td>1192 Avg GPU freq. (MHz), 1775 Max GPU freq. (MHz)</td></tr><tr><td>Razer Blade 15 | Cooling pad set to maximum</td><td>1163 Avg GPU freq. (MHz), 1775 Max GPU freq. (MHz)</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 Klin Everest does manage to lower the peak CPU temperature of the Blade 15 by two degrees, resulting in ever-so-slightly higher clockspeeds. However, gaming performance and GPU stats remain well within margins of error. </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-1792677909036-ng4e3cyml', false); });      } else {        initialize('fv-chart-1792677909036-ng4e3cyml', false);      }    })();      </script></div><p>In terms of noise? Yes, very much so. The Everest makes an irritating whirring sound whenever it moves a meaningful amount of air, and the extra cooling doesn't convince the Blade 15's fans to shut up under heavy load, either. The two combine together to create quite the racket, particularly at higher settings.</p><p>And in terms of temps? The Blade 15's RTX 3080 mobile still jumps to the same thermal peak, even with the cooler set to maximum, although I did record a single degree difference in the average GPU temps. However, the clockspeed and performance figures remain well within margins of error. In fact, the average GPU frequency is slightly higher <em>without </em>the pad, as are the 1% lows. Excellent.</p><div><blockquote><p>The bargain-basement screen is rubbish, as is the RGB lighting—and quite a few user reviews note reliability issues</p></blockquote></div><p>That being said, it did manage to drop the peak CPU temperature by a whole two degrees, which seems to have resulted in ever-so-slightly higher clockspeeds. Not that it made any difference to actual gaming performance, but hey. A tiny win's still a win.</p><iframe src="https://content.jwplatform.com/players/cJ4iLz4S.html" id="cJ4iLz4S" title="Klin Everest laptop cooling pad.mp4" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>What my editor has sent me, then, is a large and noisy plinth to rest my laptop on—and little else. The Everest would likely make more of a difference when used with badly overheating machines, perhaps within hotter ambient temperatures, but it certainly hasn't made any major improvements to my gaming laptop on a sunny October day.</p><p>I think a simple laptop stand, enough to raise your machine off a desk to free up airflow beneath the bottom vents, would be a more cost-effective buy. I've found <a href="https://www.amazon.com/Nulaxy-Ergonomic-Aluminum-Detachable-Compatible/dp/B07P54RSPY/" target="_blank">a decent-looking one for $18</a>. It doesn't come with a comic, though. Shame.</p><p>So, is the Klim Everest a "Recycle Bin" candidate? Well, it's loud, largely ineffectual, still pricier than you might expect, and quite the desk dominator. Oh, and the bargain-basement screen is rubbish, as is the RGB lighting—and quite a few user reviews note reliability issues.</p><p>Ah, screw it. Put it in the bin and be done with it.</p><a class="card card--standard card--rows-2 card--align-center" href="https://www.amazon.com/KLIM-Powerful-Turbo-Fan-Performance-Overheating/dp/B0F7M1LKJ7"><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/HEthissa7tE8xcv2zzT6p7.jpg" alt="A Klim Everest laptop cooling pad"></p></div><div class="card__content"><h3 class="card__title">What I got...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>Klim Everest laptop cooling pad</strong><br>Large, noisy, and if you ask me, still overpriced. It did manage to drop my laptop's CPU temps by a very small amount, but I still don't think this is worth $50.</p></div></div></div></a><a class="card card--standard card--rows-2 card--align-center" href="https://www.amazon.com/Nulaxy-Ergonomic-Aluminum-Detachable-Compatible/dp/B07P54RSPY/"><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/oukas3kZL5UwK3Wdh9id2U.jpg" alt="A Nulaxy Full Aluminium Laptop Stand"></p></div><div class="card__content"><h3 class="card__title">What I&#39;d recommend...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>Any bottomless laptop stand</strong><br>This one's a mere $18, and looks perfectly acceptable. Anything that raises your laptop vents off your desk is likely to help with cooling—and at this price, I'd say it's worth a go.</p></div></div></div></a> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/cooling/ive-never-seen-a-laptop-cooler-come-with-its-own-comic-strip-before-but-it-still-hasnt-convinced-me-this-noisy-beast-is-worth-usd50/</link>
                                                                            <description>
                            <![CDATA[ Not so cool. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">5La6MGJ6dNSpphLtMmjXeX</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/T5L8p43bCdF5hCrk2eQbcH-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 16:37:07 +0000</pubDate>                                                                                                                                <updated>Fri, 23 Oct 2026 13:47:28 +0000</updated>
                                                                                                                                            <category><![CDATA[Cooling]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-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/T5L8p43bCdF5hCrk2eQbcH-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Klim Everest laptop cooler with a comic strip on top of it]]></media:description>                                                            <media:text><![CDATA[A Klim Everest laptop cooler with a comic strip on top of it]]></media:text>
                                <media:title type="plain"><![CDATA[A Klim Everest laptop cooler with a comic strip on top of it]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/T5L8p43bCdF5hCrk2eQbcH-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Budget Win or Recycle Bin?</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="MopksAbEqHgsjRp86WSqTg" name="budgetwinorrecyclebin" caption="" alt="The red and blue logo for Budget Win or Recycle Bin, with the PC Gamer logo in the top left" src="https://cdn.mos.cms.futurecdn.net/MopksAbEqHgsjRp86WSqTg-1920-80.jpg" 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"><em><strong>Andy Edser</strong></em><em> is a man with a mission. It's a mission he didn't sign up for, or even want, but I'm his boss so he has to do what I say. And I'm making him test a ton of different cheap tech I might find on Amazon, AliExpress, TikTok Shop, or down the back of my sofa. Out of nowhere it will appear on his doorstep with no warning, and he has no choice but to use whatever it is like his life depends on it. Because it does. </em></p></div></div><p>I find myself charmed (and perhaps a little perturbed) by the little black envelope included with this Klim Everest laptop cooling pad. Inside you get a set of shiny stickers, a warranty card, and, err.. a comic strip depicting the fictional process that begins when you order one.</p><p>"Your product was carefully retrieved from our inventory with sterilized anti-bacterial gloves and placed on a satin silk cushion," the first panel explains. "The party we organized to celebrate your order lasted three days."</p><p>Okay, that's something I've never seen before. And I'll be honest, the sarcastic comic endears me to the product more than it should. I could do without the last panel, though, which says: "If you feel like it, send us a photo of you (or your pet) and we'll send you a printable version of this comic strip with your photo on 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:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="V6EzDDicevtbN3qJbwAPpm" name="Klimcomic" alt="An image of the comic strip that comes included with the Klim Everest laptop cooler" src="https://cdn.mos.cms.futurecdn.net/V6EzDDicevtbN3qJbwAPpm-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/V6EzDDicevtbN3qJbwAPpm-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: Future)</span></figcaption></figure><p>A step too far, I feel. Anyway, the pad itself is a very sizable unit, designed to cool laptops from 14 to 17.3-inches in size and powered by a USB Type-A port. Atop its silver plastic frame sits a foam gasket, designed to create a seal between the bottom of your lappy and the outside air. Two 60 mm fans pull cool air from the rear of the pad and fire it at the bottom of your machine, into any awaiting vents.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/hncUbmpZMqjzSTAPJzN7s8-1920-80.jpg" alt="Assorted images of the Klim Everest laptop cooler, and everything included inside the box" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SHG8DAx37x7VRoXBD6Q6s8-1920-80.jpg" alt="Assorted images of the Klim Everest laptop cooler, and everything included inside the box" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Ktm4sn34pRhSqDJ5PHUub8-1920-80.jpg" alt="Assorted images of the Klim Everest laptop cooler, and everything included inside the box" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/RzYeKWxuwHZUbmztnBCji8-1920-80.jpg" alt="Assorted images of the Klim Everest laptop cooler, and everything included inside the box" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cw3PgZdUJjN6vDbWN7XMs8-1920-80.jpg" alt="Assorted images of the Klim Everest laptop cooler, and everything included inside the box" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TECWsw5JvfzBCvWHkmZKu8-1920-80.jpg" alt="Assorted images of the Klim Everest laptop cooler, and everything included inside the box" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SWNmpswLQvmKnKWAQ2Dks8-1920-80.jpg" alt="Assorted images of the Klim Everest laptop cooler, and everything included inside the box" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The full MSRP of the Klim Everest is listed as $60, but it's <a href="https://www.amazon.com/KLIM-Everest-Cooling-Powerful-Overheating/dp/B0F7M1LKJ7/" target="_blank">currently down to $50 at Amazon</a>. There are cheaper options on the market, but this one is much more wallet-friendly than, say, <a href="https://www.amazon.com/Razer-Laptop-Cooling-Pad-Intelligent/dp/B0DJDWWHTV/" target="_blank">this Razer unit for a mahoosive $150</a>.</p><p>Speaking of which, I have an ageing Razer Blade 15 that likes to get toasty under full load. So, I booted up the Cyberpunk 2077 benchmark, ran it on repeat, and gathered my temperature readings—before placing the lappy atop the Everest (making sure not to block any vents) to see if it made much difference.</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-1792677909036-ng4e3cyml *, #fv-chart-1792677909036-ng4e3cyml *:before, #fv-chart-1792677909036-ng4e3cyml *:after, #fv-chart-1792677909036-ng4e3cyml-slideshow *, #fv-chart-1792677909036-ng4e3cyml-slideshow *:before, #fv-chart-1792677909036-ng4e3cyml-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792677909036-ng4e3cyml, #fv-chart-1792677909036-ng4e3cyml-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792677909036-ng4e3cyml { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792677909036-ng4e3cyml.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792677909036-ng4e3cyml.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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1792677909036-ng4e3cyml-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792677909036-ng4e3cyml-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-1792677909036-ng4e3cyml-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-1792677909036-ng4e3cyml-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792677909036-ng4e3cyml-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792677909036-ng4e3cyml-slideshow .fv-nav-btn.disabled, #fv-chart-1792677909036-ng4e3cyml-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-1792677909036-ng4e3cyml-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-1792677909036-ng4e3cyml-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-1792677909036-ng4e3cyml-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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792677909036-ng4e3cyml .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792677909036-ng4e3cyml .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792677909036-ng4e3cyml .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792677909036-ng4e3cyml .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-bar-row, #fv-chart-1792677909036-ng4e3cyml .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792677909036-ng4e3cyml.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792677909036-ng4e3cyml.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792677909036-ng4e3cyml .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792677909036-ng4e3cyml .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792677909036-ng4e3cyml .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792677909036-ng4e3cyml .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792677909036-ng4e3cyml .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792677909036-ng4e3cyml .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792677909036-ng4e3cyml .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792677909036-ng4e3cyml .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml.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-1792677909036-ng4e3cyml.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792677909036-ng4e3cyml.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792677909036-ng4e3cyml .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792677909036-ng4e3cyml .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml.mobile-view .fv-pie-container, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-row, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-stacked-product, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-grouped-bar-product, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-bar-row, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-stacked-product, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792677909036-ng4e3cyml.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-1792677909036-ng4e3cyml.mobile-view .fv-bar-label, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-grouped-product-title, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-bar-label, #fv-chart-1792677909036-ng4e3cyml.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-1792677909036-ng4e3cyml.mobile-view .fv-bar-container, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-cluster, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-bar-container, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792677909036-ng4e3cyml.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-1792677909036-ng4e3cyml.mobile-view .fv-x-axis-wrapper, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-x-axis-label-space, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-x-axis-chart-space, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-benchmark-title, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-dropdown-title, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-carousel-nav-btn, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-chart-title, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-chart-subhead, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-versus-header, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-versus-select-wrapper, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-versus-vs, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-versus-select-container, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-versus-select, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792677909036-ng4e3cyml.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-1792677909036-ng4e3cyml.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-bar-commentary-inline, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-dials-grid, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-dial-title, #fv-chart-1792677909036-ng4e3cyml.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792677909036-ng4e3cyml.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792677909036-ng4e3cyml .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792677909036-ng4e3cyml .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-bar-row, #fv-chart-1792677909036-ng4e3cyml .fv-stacked-product, #fv-chart-1792677909036-ng4e3cyml .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-bar-label, #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-bar-container, #fv-chart-1792677909036-ng4e3cyml .fv-bar-cluster { width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792677909036-ng4e3cyml .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792677909036-ng4e3cyml .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-x-axis-label-space { display: none !important; } #fv-chart-1792677909036-ng4e3cyml .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml .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-1792677909036-ng4e3cyml .fv-stl-shop-all-logo, #fv-chart-1792677909036-ng4e3cyml .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792677909036-ng4e3cyml .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792677909036-ng4e3cyml .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792677909036-ng4e3cyml .fv-dial-title { font-size: 16px !important; } #fv-chart-1792677909036-ng4e3cyml .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792677909036-ng4e3cyml.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": "Klin Everest laptop cooling pad testing",  "description": "Results recorded on a Razer Blade 15 (2020) gaming laptop with an Intel Core i7 10875H and an RTX 3080 mobile GPU",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-10-22T14:05:09.036Z",  "citation": "The Klin Everest does manage to lower the peak CPU temperature of the Blade 15 by two degrees, resulting in ever-so-slightly higher clockspeeds. However, gaming performance and GPU stats remain well within margins of error.",  "keywords": [    "Razer Blade 15 | No cooling pad",    "Razer Blade 15 | Cooling pad set to maximum",    "Cyberpunk 2077 (1080p Ultra RT, DLSS Quality)",    "Temperatures",    "CPU stats",    "GPU stats",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Razer Blade 15 | Cooling pad set to maximum – Cyberpunk 2077 (1080p Ultra RT, DLSS Quality)",      "value": 51,      "unitText": "Avg FPS"    },    {      "@type": "PropertyValue",      "name": "Razer Blade 15 | No cooling pad – Cyberpunk 2077 (1080p Ultra RT, DLSS Quality)",      "value": 51,      "unitText": "Avg FPS"    },    {      "@type": "PropertyValue",      "name": "Razer Blade 15 | Cooling pad set to maximum – Temperatures",      "value": 70,      "unitText": "Avg CPU (°C)"    },    {      "@type": "PropertyValue",      "name": "Razer Blade 15 | No cooling pad – Temperatures",      "value": 70,      "unitText": "Avg CPU (°C)"    },    {      "@type": "PropertyValue",      "name": "Razer Blade 15 | Cooling pad set to maximum – CPU stats",      "value": 2583,      "unitText": "Avg CPU freq. (MHz)"    },    {      "@type": "PropertyValue",      "name": "Razer Blade 15 | No cooling pad – CPU stats",      "value": 2562,      "unitText": "Avg CPU freq. (MHz)"    },    {      "@type": "PropertyValue",      "name": "Razer Blade 15 | Cooling pad set to maximum – GPU stats",      "value": 1163,      "unitText": "Avg GPU freq. (MHz)"    },    {      "@type": "PropertyValue",      "name": "Razer Blade 15 | No cooling pad – GPU stats",      "value": 1192,      "unitText": "Avg GPU freq. (MHz)"    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-10-22T14:05:09.036Z","state":{"data":[{"productName":"Razer Blade 15 | Cooling pad set to maximum","attribute":"Cyberpunk 2077 (1080p Ultra RT, DLSS Quality)","value":51,"unit":"Avg FPS","multiValues":[{"value":51,"unit":"Avg FPS"},{"value":40,"unit":"1% Low FPS"}],"color":"","site":"PC Gamer"},{"productName":"Razer Blade 15 | Cooling pad set to maximum","attribute":"Temperatures","value":70,"unit":"Avg CPU (°C)","multiValues":[{"value":70,"unit":"Avg CPU (°C)"},{"value":83,"unit":"Max CPU (°C)"},{"value":65,"unit":"Avg GPU (°C)"},{"value":73,"unit":"Max GPU (°C)"}],"color":"","site":"PC Gamer"},{"productName":"Razer Blade 15 | Cooling pad set to maximum","attribute":"CPU stats","value":2583,"unit":"Avg CPU freq. (MHz)","multiValues":[{"value":2583,"unit":"Avg CPU freq. (MHz)"},{"value":3442,"unit":"Max CPU freq. (MHz)"}],"color":"","site":"PC Gamer"},{"productName":"Razer Blade 15 | Cooling pad set to maximum","attribute":"GPU stats","value":1163,"unit":"Avg GPU freq. (MHz)","multiValues":[{"value":1163,"unit":"Avg GPU freq. (MHz)"},{"value":1775,"unit":"Max GPU freq. (MHz)"}],"color":"","site":"PC Gamer"},{"productName":"Razer Blade 15 | No cooling pad","attribute":"Cyberpunk 2077 (1080p Ultra RT, DLSS Quality)","value":51,"unit":"Avg FPS","multiValues":[{"value":51,"unit":"Avg FPS"},{"value":41,"unit":"1% Low FPS"}],"color":"","site":"PC Gamer"},{"productName":"Razer Blade 15 | No cooling pad","attribute":"Temperatures","value":70,"unit":"Avg CPU (°C)","multiValues":[{"value":70,"unit":"Avg CPU (°C)"},{"value":85,"unit":"Max CPU (°C)"},{"value":66,"unit":"Avg GPU (°C)"},{"value":73,"unit":"Max GPU (°C)"}],"color":"","site":"PC Gamer"},{"productName":"Razer Blade 15 | No cooling pad","attribute":"CPU stats","value":2562,"unit":"Avg CPU freq. (MHz)","multiValues":[{"value":2562,"unit":"Avg CPU freq. (MHz)"},{"value":3380,"unit":"Max CPU freq. (MHz)"}],"color":"","site":"PC Gamer"},{"productName":"Razer Blade 15 | No cooling pad","attribute":"GPU stats","value":1192,"unit":"Avg GPU freq. (MHz)","multiValues":[{"value":1192,"unit":"Avg GPU freq. (MHz)"},{"value":1775,"unit":"Max GPU freq. (MHz)"}],"color":"","site":"PC Gamer"}],"products":["Razer Blade 15 | Cooling pad set to maximum","Razer Blade 15 | No cooling pad"],"attributes":["Cyberpunk 2077 (1080p Ultra RT, DLSS Quality)","Temperatures","CPU stats","GPU stats"],"selectedProducts":["Razer Blade 15 | No cooling pad","Razer Blade 15 | Cooling pad set to maximum"],"selectedPrimaryProduct":null,"selectedAttributes":["Cyberpunk 2077 (1080p Ultra RT, DLSS Quality)","Temperatures","CPU stats","GPU stats"],"productColors":[{"productName":"Razer Blade 15 | Cooling pad set to maximum","color":"#E33235"},{"productName":"Razer Blade 15 | No cooling pad","color":"#FE9F58"}],"initialProductColors":[{"productName":"Razer Blade 15 | Cooling pad set to maximum","color":"#E33235"},{"productName":"Razer Blade 15 | No cooling pad","color":"#FE9F58"}],"attributeColors":[],"attributeGroups":[],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"Dropdown","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":"Klin Everest laptop cooling pad testing","subhead":"Results recorded on a Razer Blade 15 (2020) gaming laptop with an Intel Core i7 10875H and an RTX 3080 mobile GPU","caption":"The Klin Everest does manage to lower the peak CPU temperature of the Blade 15 by two degrees, resulting in ever-so-slightly higher clockspeeds. However, gaming performance and GPU stats remain well within margins of error. ","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":false,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":true,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1792677909036-ng4e3cyml" class="fv-chart-wrapper  labels-on-top " data-bar-labels-on-top="true" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Klin Everest laptop cooling pad testing</h3><p class="fv-chart-subhead">Results recorded on a Razer Blade 15 (2020) gaming laptop with an Intel Core i7 10875H and an RTX 3080 mobile GPU</p><div class="fv-dropdown-wrapper"><div class="fv-dropdown-title-container"><select class="fv-dropdown-title"><option value="0">Cyberpunk 2077 (1080p Ultra RT, DLSS Quality)</option><option value="1">Temperatures</option><option value="2">CPU stats</option><option value="3">GPU stats</option></select><div class="fv-dropdown-chevron"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"/></svg></div></div></div><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1792677909036-ng4e3cyml-bar-Cyberpunk 2077 (1080p Ultra RT, DLSS Quality)" data-chart-type="Bar" data-title="Cyberpunk 2077 (1080p Ultra RT, DLSS Quality)" data-subhead="Results recorded on a Razer Blade 15 (2020) gaming laptop with an Intel Core i7 10875H and an RTX 3080 mobile GPU" data-caption="The Klin Everest does manage to lower the peak CPU temperature of the Blade 15 by two degrees, resulting in ever-so-slightly higher clockspeeds. However, gaming performance and GPU stats remain well within margins of error. " style=""><div class="fv-benchmark-group"><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 ">Razer Blade 15 | No cooling pad</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: 85%; background-color: #E33235;" data-target-width="85" 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">51</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 68.33333333333333%; background-color: #FE9F58;" data-target-width="68.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">41</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Razer Blade 15 | Cooling pad set to maximum</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: 85%; background-color: #E33235;" data-target-width="85" 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">51</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 66.66666666666666%; background-color: #FE9F58;" data-target-width="66.66666666666666" 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">40</span></div></div></div></div></div><table class="sr-only"><caption>Cyberpunk 2077 (1080p Ultra RT, DLSS Quality) Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Razer Blade 15 | No cooling pad</td><td>51 Avg FPS, 41 1% Low FPS</td></tr><tr><td>Razer Blade 15 | Cooling pad set to maximum</td><td>51 Avg FPS, 40 1% Low FPS</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1792677909036-ng4e3cyml-bar-Temperatures" data-chart-type="Bar" data-title="Temperatures" data-subhead="Results recorded on a Razer Blade 15 (2020) gaming laptop with an Intel Core i7 10875H and an RTX 3080 mobile GPU" data-caption="The Klin Everest does manage to lower the peak CPU temperature of the Blade 15 by two degrees, resulting in ever-so-slightly higher clockspeeds. However, gaming performance and GPU stats remain well within margins of error. " style="display: none;"><div class="fv-benchmark-group"><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 CPU (°C)</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #FE9F58;"></div><span>Max CPU (°C)</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #1CA9C4;"></div><span>Avg GPU (°C)</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #EB6F71;"></div><span>Max GPU (°C)</span></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Razer Blade 15 | No cooling pad</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: 70%; background-color: #E33235;" data-target-width="70" 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: 85%; background-color: #FE9F58;" data-target-width="85" 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 class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 66%; background-color: #1CA9C4;" data-target-width="66" 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">66</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 73%; background-color: #EB6F71;" data-target-width="73" 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">73</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Razer Blade 15 | Cooling pad set to maximum</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: 70%; background-color: #E33235;" data-target-width="70" 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: 83%; background-color: #FE9F58;" data-target-width="83" 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">83</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 65%; background-color: #1CA9C4;" data-target-width="65" 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">65</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 73%; background-color: #EB6F71;" data-target-width="73" 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">73</span></div></div></div></div></div><table class="sr-only"><caption>Temperatures Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Razer Blade 15 | No cooling pad</td><td>70 Avg CPU (°C), 85 Max CPU (°C), 66 Avg GPU (°C), 73 Max GPU (°C)</td></tr><tr><td>Razer Blade 15 | Cooling pad set to maximum</td><td>70 Avg CPU (°C), 83 Max CPU (°C), 65 Avg GPU (°C), 73 Max GPU (°C)</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1792677909036-ng4e3cyml-bar-CPU stats" data-chart-type="Bar" data-title="CPU stats" data-subhead="Results recorded on a Razer Blade 15 (2020) gaming laptop with an Intel Core i7 10875H and an RTX 3080 mobile GPU" data-caption="The Klin Everest does manage to lower the peak CPU temperature of the Blade 15 by two degrees, resulting in ever-so-slightly higher clockspeeds. However, gaming performance and GPU stats remain well within margins of error. " style="display: none;"><div class="fv-benchmark-group"><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 CPU freq. (MHz)</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #FE9F58;"></div><span>Max CPU freq. (MHz)</span></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Razer Blade 15 | No cooling pad</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.05%; background-color: #E33235;" data-target-width="64.05" 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">2562</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 84.5%; background-color: #FE9F58;" data-target-width="84.5" 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">3380</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Razer Blade 15 | Cooling pad set to maximum</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.575%; background-color: #E33235;" data-target-width="64.575" 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">2583</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 86.05000000000001%; background-color: #FE9F58;" data-target-width="86.05000000000001" 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">3442</span></div></div></div></div></div><table class="sr-only"><caption>CPU stats Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Razer Blade 15 | No cooling pad</td><td>2562 Avg CPU freq. (MHz), 3380 Max CPU freq. (MHz)</td></tr><tr><td>Razer Blade 15 | Cooling pad set to maximum</td><td>2583 Avg CPU freq. (MHz), 3442 Max CPU freq. (MHz)</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1792677909036-ng4e3cyml-bar-GPU stats" data-chart-type="Bar" data-title="GPU stats" data-subhead="Results recorded on a Razer Blade 15 (2020) gaming laptop with an Intel Core i7 10875H and an RTX 3080 mobile GPU" data-caption="The Klin Everest does manage to lower the peak CPU temperature of the Blade 15 by two degrees, resulting in ever-so-slightly higher clockspeeds. However, gaming performance and GPU stats remain well within margins of error. " style="display: none;"><div class="fv-benchmark-group"><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 GPU freq. (MHz)</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #FE9F58;"></div><span>Max GPU freq. (MHz)</span></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Razer Blade 15 | No cooling pad</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: 59.599999999999994%; background-color: #E33235;" data-target-width="59.599999999999994" 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">1192</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 88.75%; background-color: #FE9F58;" data-target-width="88.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">1775</span></div></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Razer Blade 15 | Cooling pad set to maximum</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: 58.15%; background-color: #E33235;" data-target-width="58.15" 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">1163</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 88.75%; background-color: #FE9F58;" data-target-width="88.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">1775</span></div></div></div></div></div><table class="sr-only"><caption>GPU stats Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Razer Blade 15 | No cooling pad</td><td>1192 Avg GPU freq. (MHz), 1775 Max GPU freq. (MHz)</td></tr><tr><td>Razer Blade 15 | Cooling pad set to maximum</td><td>1163 Avg GPU freq. (MHz), 1775 Max GPU freq. (MHz)</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 Klin Everest does manage to lower the peak CPU temperature of the Blade 15 by two degrees, resulting in ever-so-slightly higher clockspeeds. However, gaming performance and GPU stats remain well within margins of error. </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-1792677909036-ng4e3cyml', false); });      } else {        initialize('fv-chart-1792677909036-ng4e3cyml', false);      }    })();      </script></div><p>In terms of noise? Yes, very much so. The Everest makes an irritating whirring sound whenever it moves a meaningful amount of air, and the extra cooling doesn't convince the Blade 15's fans to shut up under heavy load, either. The two combine together to create quite the racket, particularly at higher settings.</p><p>And in terms of temps? The Blade 15's RTX 3080 mobile still jumps to the same thermal peak, even with the cooler set to maximum, although I did record a single degree difference in the average GPU temps. However, the clockspeed and performance figures remain well within margins of error. In fact, the average GPU frequency is slightly higher <em>without </em>the pad, as are the 1% lows. Excellent.</p><div><blockquote><p>The bargain-basement screen is rubbish, as is the RGB lighting—and quite a few user reviews note reliability issues</p></blockquote></div><p>That being said, it did manage to drop the peak CPU temperature by a whole two degrees, which seems to have resulted in ever-so-slightly higher clockspeeds. Not that it made any difference to actual gaming performance, but hey. A tiny win's still a win.</p><iframe src="https://content.jwplatform.com/players/cJ4iLz4S.html" id="cJ4iLz4S" title="Klin Everest laptop cooling pad.mp4" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>What my editor has sent me, then, is a large and noisy plinth to rest my laptop on—and little else. The Everest would likely make more of a difference when used with badly overheating machines, perhaps within hotter ambient temperatures, but it certainly hasn't made any major improvements to my gaming laptop on a sunny October day.</p><p>I think a simple laptop stand, enough to raise your machine off a desk to free up airflow beneath the bottom vents, would be a more cost-effective buy. I've found <a href="https://www.amazon.com/Nulaxy-Ergonomic-Aluminum-Detachable-Compatible/dp/B07P54RSPY/" target="_blank">a decent-looking one for $18</a>. It doesn't come with a comic, though. Shame.</p><p>So, is the Klim Everest a "Recycle Bin" candidate? Well, it's loud, largely ineffectual, still pricier than you might expect, and quite the desk dominator. Oh, and the bargain-basement screen is rubbish, as is the RGB lighting—and quite a few user reviews note reliability issues.</p><p>Ah, screw it. Put it in the bin and be done with it.</p><a class="card card--standard card--rows-2 card--align-center" href="https://www.amazon.com/KLIM-Powerful-Turbo-Fan-Performance-Overheating/dp/B0F7M1LKJ7"><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/HEthissa7tE8xcv2zzT6p7.jpg" alt="A Klim Everest laptop cooling pad"></p></div><div class="card__content"><h3 class="card__title">What I got...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>Klim Everest laptop cooling pad</strong><br>Large, noisy, and if you ask me, still overpriced. It did manage to drop my laptop's CPU temps by a very small amount, but I still don't think this is worth $50.</p></div></div></div></a><a class="card card--standard card--rows-2 card--align-center" href="https://www.amazon.com/Nulaxy-Ergonomic-Aluminum-Detachable-Compatible/dp/B07P54RSPY/"><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/oukas3kZL5UwK3Wdh9id2U.jpg" alt="A Nulaxy Full Aluminium Laptop Stand"></p></div><div class="card__content"><h3 class="card__title">What I&#39;d recommend...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>Any bottomless laptop stand</strong><br>This one's a mere $18, and looks perfectly acceptable. Anything that raises your laptop vents off your desk is likely to help with cooling—and at this price, I'd say it's worth a go.</p></div></div></div></a>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'We probably sold millions of boards because of that game, and it was magnificent': 3dfx cofounder gives Quake a 'great deal of credit for our overall success' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you care about retro PC gaming hardware, there's a good chance you've heard of the now-defunct 3dfx. And if you know 3dfx, there's an even better chance you've heard of the 3dfx Voodoo graphics card. Well, according to one of its founders, its success is owed at least in part to the legendary shooter Quake. </p><p>Ross Smith recently spoke to our friends at <a href="https://www.club386.com/3dfx-voodoo-history-ross-smith-interview" target="_blank">Club386</a> in celebration of the first 3dfx Voodoo turning 30 years old, and he talks about the 'Quake effect'. </p><p>Effectively, though Quake launched in June 1996, it didn't get GLQuake, which allowed for 3D hardware acceleration, until the start of 1997. John Carmack reportedly reached out to 3dfx, which then worked on an API called MiniGL that could run the game. In its implementation, 3dfx cards could then run the game at a better resolution in greater detail with a wider range of colours. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async></script><p>Smith says, "I would certainly give id, John, and Quake a great deal of credit for our overall success—we probably sold millions of boards because of that game, and it was magnificent. That’s the last game I’ve gone all the way to the end on, and I was exhausted after doing that. It was well crafted, beautiful, dark."</p><p>It makes sense why developers would want to work with the likes of 3dfx because better compatibility makes their games look better. And a developer is more likely to sell a game if it can wow an audience. </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:4983px;"><p class="vanilla-image-block" style="padding-top:66.59%;"><img id="nRu3QczRKLYEtDPut6ra5B" name="Voodoo (image credit - Fritzchens Fritz).jpg" alt="GPU" src="https://cdn.mos.cms.futurecdn.net/nRu3QczRKLYEtDPut6ra5B-1920-80.jpg" mos="" align="middle" fullscreen="" width="4983" height="3318" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Fritzchens Fritz)</span></figcaption></figure><p>This symbiotic relationship was key to 3dfx development at the start. 3dfx reportedly reached out to developers to show games pre-rendered on 3dfx Voodoo cards, and "they loved it".</p><p>Smith argues this relationship to developers was quite unique at the time. "Most other companies, like S3 or others, saw game developers kind of as a necessary evil, not as the lifeblood of a company that’s focused on gaming. So we flipped the whole thing around.” </p><p>This is a relationship that might seem familiar nowadays, with the likes of Nvidia, Intel, and AMD working directly with developers to improve software. Nvidia and 3dfx <a href="https://www.gamedeveloper.com/game-platforms/nvidia-sues-3dfx" target="_blank">famously took each other to court</a> for various patent infringement complaints in the late '90s and early '00s, and Nvidia acquired many of 3dfx's assets after it filed for bankruptcy in the early 2000s. So in a way, we have 3dfx to thank for parts of Nvidia's successes in the following years, too. </p><p>And 3dfx was unique in a few ways. The Voodoo cards had great 3D acceleration because it was designed specifically for 3D acceleration as a co-processor alongside a 2D card, letting the CPU do other background work at the same time. </p><p>It was just one of many steps towards hardware that was specifically designed for gaming rigs. "We did something revolutionary there," says Smith, "we didn’t have a VGA. That was partly down to our lack of design experience, and partly down to my concern about profitability and compatibility. Being compatible with a million apps is really hard—being compatible with 200 games is much easier.” </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/graphics-cards/we-probably-sold-millions-of-boards-because-of-that-game-and-it-was-magnificent-3dfx-cofounder-gives-quake-a-great-deal-of-credit-for-our-overall-success/</link>
                                                                            <description>
                            <![CDATA[ It's now been 30 years since the first Voodoo card. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">5nwns7d9tMSh4kRFtuBkqP</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/iutJs2kQqPcNw7YGLCLxj9-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 16:34:54 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Graphics Cards]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&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/iutJs2kQqPcNw7YGLCLxj9-1920-80.jpg">
                                                            <media:credit><![CDATA[id Software]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Quake]]></media:description>                                                            <media:text><![CDATA[Quake]]></media:text>
                                <media:title type="plain"><![CDATA[Quake]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/iutJs2kQqPcNw7YGLCLxj9-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you care about retro PC gaming hardware, there's a good chance you've heard of the now-defunct 3dfx. And if you know 3dfx, there's an even better chance you've heard of the 3dfx Voodoo graphics card. Well, according to one of its founders, its success is owed at least in part to the legendary shooter Quake. </p><p>Ross Smith recently spoke to our friends at <a href="https://www.club386.com/3dfx-voodoo-history-ross-smith-interview" target="_blank">Club386</a> in celebration of the first 3dfx Voodoo turning 30 years old, and he talks about the 'Quake effect'. </p><p>Effectively, though Quake launched in June 1996, it didn't get GLQuake, which allowed for 3D hardware acceleration, until the start of 1997. John Carmack reportedly reached out to 3dfx, which then worked on an API called MiniGL that could run the game. In its implementation, 3dfx cards could then run the game at a better resolution in greater detail with a wider range of colours. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async></script><p>Smith says, "I would certainly give id, John, and Quake a great deal of credit for our overall success—we probably sold millions of boards because of that game, and it was magnificent. That’s the last game I’ve gone all the way to the end on, and I was exhausted after doing that. It was well crafted, beautiful, dark."</p><p>It makes sense why developers would want to work with the likes of 3dfx because better compatibility makes their games look better. And a developer is more likely to sell a game if it can wow an audience. </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:4983px;"><p class="vanilla-image-block" style="padding-top:66.59%;"><img id="nRu3QczRKLYEtDPut6ra5B" name="Voodoo (image credit - Fritzchens Fritz).jpg" alt="GPU" src="https://cdn.mos.cms.futurecdn.net/nRu3QczRKLYEtDPut6ra5B-1920-80.jpg" mos="" align="middle" fullscreen="" width="4983" height="3318" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Fritzchens Fritz)</span></figcaption></figure><p>This symbiotic relationship was key to 3dfx development at the start. 3dfx reportedly reached out to developers to show games pre-rendered on 3dfx Voodoo cards, and "they loved it".</p><p>Smith argues this relationship to developers was quite unique at the time. "Most other companies, like S3 or others, saw game developers kind of as a necessary evil, not as the lifeblood of a company that’s focused on gaming. So we flipped the whole thing around.” </p><p>This is a relationship that might seem familiar nowadays, with the likes of Nvidia, Intel, and AMD working directly with developers to improve software. Nvidia and 3dfx <a href="https://www.gamedeveloper.com/game-platforms/nvidia-sues-3dfx" target="_blank">famously took each other to court</a> for various patent infringement complaints in the late '90s and early '00s, and Nvidia acquired many of 3dfx's assets after it filed for bankruptcy in the early 2000s. So in a way, we have 3dfx to thank for parts of Nvidia's successes in the following years, too. </p><p>And 3dfx was unique in a few ways. The Voodoo cards had great 3D acceleration because it was designed specifically for 3D acceleration as a co-processor alongside a 2D card, letting the CPU do other background work at the same time. </p><p>It was just one of many steps towards hardware that was specifically designed for gaming rigs. "We did something revolutionary there," says Smith, "we didn’t have a VGA. That was partly down to our lack of design experience, and partly down to my concern about profitability and compatibility. Being compatible with a million apps is really hard—being compatible with 200 games is much easier.” </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Ex-BioWare boss and Mass Effect director Casey Hudson says he'll 'forever be grateful' for his time at the studio: 'Its legacy will live on' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Yesterday, <a href="https://www.pcgamer.com/gaming-industry/rip-bioware-ea-has-shut-down-the-legendary-rpg-developer/" target="_blank">EA announced that it's closing BioWare</a>, the studio behind beloved RPG franchises like the original Baldur's Gate games, Star Wars: Knights of the Old Republic, Mass Effect, and Dragon Age. Alongside BioWare's closure—and the cancelling of its next Mass Effect project—EA is <a href="https://www.bloomberg.com/news/articles/2026-10-21/electronic-arts-to-cut-400-jobs-shut-down-bioware" target="_blank">reportedly laying off around 400 people</a> in an effort to "align talent and investment" in the wake of its <a href="https://www.pcgamer.com/gaming-industry/the-deal-is-done-electronic-arts-is-now-officially-owned-by-saudi-arabia/" target="_blank">record-breaking private equity buyout</a>.</p><p>While recent years have brought no shortage of high profile studio closings and game cancellations, the news of BioWare's shuttering has prompted an outpouring of sympathies and frustrations from the fans, fellow developers, and former studio staff. Among those mourners is former BioWare game director and ex-general manager Casey Hudson, who <a href="https://x.com/CaseyDHudson/status/2113012091519164839?s=20" target="_blank">reacted to the news on X</a> to say that BioWare's influence will continue even if the studio itself doesn't.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2113012091519164839"><p lang="en" dir="ltr">This is sad news on multiple fronts - for those of us who worked there, for our friends and colleagues at BioWare who are impacted, and for fans who were looking forward to the next Mass Effect adventure. I started my career at BioWare and will forever be grateful to the founders, Greg and Ray, for inviting me to join in BioWare's legendary journey. Its legacy will live on through those who were part of it and continue to create games through a passion for unforgettable stories, worlds and characters.<a href="https://twitter.com/cantworkitout/status/2113012091519164839">October 21, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>"This is sad news on multiple fronts—for those of us who worked there, for our friends and colleagues at BioWare who are impacted, and for fans who were looking forward to the next Mass Effect adventure," Hudson said. "I started my career at BioWare and will forever be grateful to the founders, Greg and Ray, for inviting me to join in BioWare's legendary journey. Its legacy will live on through those who were part of it and continue to create games through a passion for unforgettable stories, worlds, and characters."</p><p>During his tenure at the studio, Hudson had a major influence on some of BioWare's most-loved releases, working as project director on both Star Wars: Knights of the Old Republic and the Mass Effect trilogy. After leaving BioWare in 2014, Hudson returned in 2017 as its general manager—before ultimately departing a second time in 2020, following the troubled development and launch of Anthem, the studio's ill-fated live service shooter.</p><p>Since then, Hudson's been acting as proof of his own assertion about BioWare's lasting influence in game development. Following the 2021 founding and subsequent 2024 closure of his NetEase-acquired studio, Humanoid Origin, Hudson announced in 2025 that he'd started <em>yet another </em>new company: Arcanaut Studios. There, he—and a team <a href="https://www.pcgamer.com/games/rpg/surprise-the-studio-making-star-wars-fate-of-the-old-republic-is-full-of-former-bioware-devs/" target="_blank">stacked with other ex-BioWare devs</a>—are currently at work on Star Wars: Fate of the Old Republic, a "narrative-driven action RPG" that Hudson has called a "spiritual successor" to KotOR.</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="wS5CSUNr6QbY2XqPWc5BcR" name="star-wars-fate-of-the-old-republic-1" alt="Star Wars: Fate of the Old Republic - Crashed ship" src="https://cdn.mos.cms.futurecdn.net/wS5CSUNr6QbY2XqPWc5BcR-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/wS5CSUNr6QbY2XqPWc5BcR-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: Arcanaut Studios)</span></figcaption></figure><p>Hudson's far from the only developer who's reaffirmed BioWare's continuing impact on game development since the news of its closure broke. CD Projekt joint CEO Michał Nowakowski noted how <a href="https://www.pcgamer.com/gaming-industry/cd-projekt-boss-pays-tribute-to-bioware-for-helping-bring-the-witcher-to-life-20-years-ago-bioware-has-been-a-massive-part-of-cdpr-history/" target="_blank">BioWare offered crucial support</a> during the development of the Witcher 1, while Larian CEO <a href="https://x.com/LarAtLarian/status/2113020691251642602?s=20" target="_blank">Swen Vincke wrote on X</a> that the studio "led the way in making RPGs big."</p><p>Legendary immersive sim developer Warren Spector <a href="https://www.pcgamer.com/gaming-industry/game-industry-legend-warren-spector-blows-up-over-biowares-closure-its-utter-bulls-t/" target="_blank">offered a more blunt reaction</a> to BioWare's shuttering, calling the closure "utter bullshit."</p><div class="product"><a data-dimension112="936e0b7c-ce32-11f1-9965-5da522a6a6a6" 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="936e0b7c-ce32-11f1-9965-5da522a6a6a6" 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/gaming-industry/ex-bioware-boss-and-mass-effect-director-casey-hudson-says-hell-forever-be-grateful-for-his-time-at-the-studio-its-legacy-will-live-on/</link>
                                                                            <description>
                            <![CDATA[ The former KotOR director's new studio is working on its own Star Wars entry in the Old Republic era. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Wn9RUMZ2tiBwKdtMzQkMFU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/cCic9S526AbGGLUHaK3Yeg-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 16:24:11 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Industry]]></category>
                                                                                                <author><![CDATA[ lincoln.carpenter@futurenet.com (Lincoln Carpenter) ]]></author>                    <dc:creator><![CDATA[ Lincoln Carpenter ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/FPyrdqJC7WX382U9Ubt8Ee-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/cCic9S526AbGGLUHaK3Yeg-1920-80.jpg">
                                                            <media:credit><![CDATA[EA; Arcanaut Studios]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Announcement art for the Mass Effect board game; former BioWare general manager Casey Hudson.]]></media:description>                                                            <media:text><![CDATA[Announcement art for the Mass Effect board game; former BioWare general manager Casey Hudson.]]></media:text>
                                <media:title type="plain"><![CDATA[Announcement art for the Mass Effect board game; former BioWare general manager Casey Hudson.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/cCic9S526AbGGLUHaK3Yeg-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Yesterday, <a href="https://www.pcgamer.com/gaming-industry/rip-bioware-ea-has-shut-down-the-legendary-rpg-developer/" target="_blank">EA announced that it's closing BioWare</a>, the studio behind beloved RPG franchises like the original Baldur's Gate games, Star Wars: Knights of the Old Republic, Mass Effect, and Dragon Age. Alongside BioWare's closure—and the cancelling of its next Mass Effect project—EA is <a href="https://www.bloomberg.com/news/articles/2026-10-21/electronic-arts-to-cut-400-jobs-shut-down-bioware" target="_blank">reportedly laying off around 400 people</a> in an effort to "align talent and investment" in the wake of its <a href="https://www.pcgamer.com/gaming-industry/the-deal-is-done-electronic-arts-is-now-officially-owned-by-saudi-arabia/" target="_blank">record-breaking private equity buyout</a>.</p><p>While recent years have brought no shortage of high profile studio closings and game cancellations, the news of BioWare's shuttering has prompted an outpouring of sympathies and frustrations from the fans, fellow developers, and former studio staff. Among those mourners is former BioWare game director and ex-general manager Casey Hudson, who <a href="https://x.com/CaseyDHudson/status/2113012091519164839?s=20" target="_blank">reacted to the news on X</a> to say that BioWare's influence will continue even if the studio itself doesn't.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2113012091519164839"><p lang="en" dir="ltr">This is sad news on multiple fronts - for those of us who worked there, for our friends and colleagues at BioWare who are impacted, and for fans who were looking forward to the next Mass Effect adventure. I started my career at BioWare and will forever be grateful to the founders, Greg and Ray, for inviting me to join in BioWare's legendary journey. Its legacy will live on through those who were part of it and continue to create games through a passion for unforgettable stories, worlds and characters.<a href="https://twitter.com/cantworkitout/status/2113012091519164839">October 21, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>"This is sad news on multiple fronts—for those of us who worked there, for our friends and colleagues at BioWare who are impacted, and for fans who were looking forward to the next Mass Effect adventure," Hudson said. "I started my career at BioWare and will forever be grateful to the founders, Greg and Ray, for inviting me to join in BioWare's legendary journey. Its legacy will live on through those who were part of it and continue to create games through a passion for unforgettable stories, worlds, and characters."</p><p>During his tenure at the studio, Hudson had a major influence on some of BioWare's most-loved releases, working as project director on both Star Wars: Knights of the Old Republic and the Mass Effect trilogy. After leaving BioWare in 2014, Hudson returned in 2017 as its general manager—before ultimately departing a second time in 2020, following the troubled development and launch of Anthem, the studio's ill-fated live service shooter.</p><p>Since then, Hudson's been acting as proof of his own assertion about BioWare's lasting influence in game development. Following the 2021 founding and subsequent 2024 closure of his NetEase-acquired studio, Humanoid Origin, Hudson announced in 2025 that he'd started <em>yet another </em>new company: Arcanaut Studios. There, he—and a team <a href="https://www.pcgamer.com/games/rpg/surprise-the-studio-making-star-wars-fate-of-the-old-republic-is-full-of-former-bioware-devs/" target="_blank">stacked with other ex-BioWare devs</a>—are currently at work on Star Wars: Fate of the Old Republic, a "narrative-driven action RPG" that Hudson has called a "spiritual successor" to KotOR.</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="wS5CSUNr6QbY2XqPWc5BcR" name="star-wars-fate-of-the-old-republic-1" alt="Star Wars: Fate of the Old Republic - Crashed ship" src="https://cdn.mos.cms.futurecdn.net/wS5CSUNr6QbY2XqPWc5BcR-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/wS5CSUNr6QbY2XqPWc5BcR-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: Arcanaut Studios)</span></figcaption></figure><p>Hudson's far from the only developer who's reaffirmed BioWare's continuing impact on game development since the news of its closure broke. CD Projekt joint CEO Michał Nowakowski noted how <a href="https://www.pcgamer.com/gaming-industry/cd-projekt-boss-pays-tribute-to-bioware-for-helping-bring-the-witcher-to-life-20-years-ago-bioware-has-been-a-massive-part-of-cdpr-history/" target="_blank">BioWare offered crucial support</a> during the development of the Witcher 1, while Larian CEO <a href="https://x.com/LarAtLarian/status/2113020691251642602?s=20" target="_blank">Swen Vincke wrote on X</a> that the studio "led the way in making RPGs big."</p><p>Legendary immersive sim developer Warren Spector <a href="https://www.pcgamer.com/gaming-industry/game-industry-legend-warren-spector-blows-up-over-biowares-closure-its-utter-bulls-t/" target="_blank">offered a more blunt reaction</a> to BioWare's shuttering, calling the closure "utter bullshit."</p><div class="product"><a data-dimension112="936e0b7c-ce32-11f1-9965-5da522a6a6a6" 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="936e0b7c-ce32-11f1-9965-5da522a6a6a6" 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[ Clive Barker's Hellraiser: Revival review–Rough around the edges  ]]></title>
                                                                                                <dc:content><![CDATA[ <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> A singleplayer action horror game based on Clive Barker's Hellraiser. <br><strong>Release date</strong> October 8, 2026<br><strong>Expect to pay</strong> $40 / £35<br><strong>Developer </strong>Saber Interactive<br><strong>Publisher </strong>Saber Interactive<br><strong>Reviewed on</strong> RTX 3070, Core AMD Ryzen 5 5600G, 16GB RAM<br><strong>Multiplayer </strong>No<br><strong>Steam Deck </strong>Playable<br><strong>Link </strong><a data-analytics-id="inline-link" href="https://store.steampowered.com/app/1551980/Clive_Barkers_Hellraiser_Revival/">Steam</a></p></div></div><p>Bloody hell, that monster with the metal stakes for arms and legs is quick. No matter how fast I run or how well I hide it'll be right where it needs to be, on time and ready to impale me. Don't get me wrong, I actually quite like coming face to face with a de-fleshed monster— especially when it looks this cool—but I'm not a fan of being funneled into the same set pieces over and over again. </p><p>Clive Barker's Hellraiser: Revival does a lot of things right; its body horror and gore is top tier and some of the puzzles really grew on me towards the end. But its action and horror didn't manage to hit the same highs no matter how many grotesque monsters it threw at 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="thbt3rVsvmDVJzbugaZyEJ" name="Clive Barker's Hellraiser: Revival" alt="Clive Barker's Hellraiser: Revival screenshots" src="https://cdn.mos.cms.futurecdn.net/thbt3rVsvmDVJzbugaZyEJ-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: Saber Interactive)</span></figcaption></figure><p>I played Hellraiser on its standard setting—I find it's a good way to get a baseline—and while I didn't have a massive problem with how easy that was, I didn't gel with how inconsistent the fights were and how, ultimately, nothing I did mattered. </p><p>Take the final fight scene with our aforementioned monster with stakes for arms and legs, otherwise known as Charlotte, for example. After being chased through the cult's HQ and the woods she finally cornered me in a clearing in the woods. I used everything I had against Charlotte, going through all the ammo and healing items I had diligently stacked up all while sliding and dodging out of the way of incoming attacks, but she just wouldn't go down. Finally, when I had nothing left, she got me. And then the realisation set in as a cutscene played out; I was never meant to win this fight. </p><p>This happened a couple of times throughout Hellraiser, an action set piece in which your actions didn't really matter. One segment felt like a poor man's COD zombies that saw me nailing planks of wood to the windows in a futile attempt to keep those pesky brain-eaters out. It's not my first rodeo so I was on it. But ultimately I chewed through all the ammo and other resources I had yet again. Soon after a flood of zombies invaded the small cabin I was in and pushed me into a corner where I was trapped by the horde's flailing arms. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/GLpQG9mjyRsvNyUKxVvMVH-1920-80.jpg" alt="Clive Barker's Hellraiser: Revival screenshots" /><figcaption><small role="credit">Saber Interactive</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QV4bk2tFs9oPvokKiejY9J-1920-80.jpg" alt="Clive Barker's Hellraiser: Revival screenshots" /><figcaption><small role="credit">Saber Interactive</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/nQtSLmNvQPNdqPjEtFeasH-1920-80.jpg" alt="Clive Barker's Hellraiser: Revival screenshots" /><figcaption><small role="credit">Saber Interactive</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/kdEo3gsuK6JJuS64HaoPZH-1920-80.jpg" alt="Clive Barker's Hellraiser: Revival screenshots" /><figcaption><small role="credit">Saber Interactive</small></figcaption></figure></figure><p>I actually managed to get out of that situation thanks to some well placed crouches but I didn't last much longer. Eventually one dropped from the rafters (don't ask me how he got there), and I crashed through the floor boards in another short cinematic. Ah, this was all part of the game's plan. It's fine for there to be an outline of how the action should play out, but when the guard rails are this obvious it can be suffocating.Why not make it all into a cinematic if my actions have so little consequence? </p><p>I may have even been able to excuse the strict script if killing enemies were satisfying enough for the journey to outweigh the destination. But the kills are just sort of okay. Enemies' torsos randomly detached from their legs when I threw a saw blade at their head, zombies fell to the floor as if playing dead only to then bite at your ankles, and fighting the guys in full suits of armour is far less epic than it sounds; you just have to hit them over and over with a blunt object.It's very tedious. </p><p>My favourite part of the action by far had to be using the genesis configuration box, an item that bestows the user with limited telekinesis. In fights you can use it to throw deadly items that are helpfully highlighted in blue, like nails or even fire. But this played less of a part than I would've liked with pistols, shotguns, and assault rifles carrying the brunt of the action. </p><h2 id="something-39-s-wrong">Something's wrong </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:1415px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="BUhZ5E4GxixFSkHaYCVEFH" name="Clive Barker's Hellraiser: Revival" alt="Clive Barker's Hellraiser: Revival screenshots" src="https://cdn.mos.cms.futurecdn.net/BUhZ5E4GxixFSkHaYCVEFH-1920-80.jpg" mos="" align="middle" fullscreen="" width="1415" height="796" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Saber Interactive)</span></figcaption></figure><p>So the action isn't all there, but what about the horror? Well, unfortunately I didn't find Hellraiser scary at all. The jumpscares were predictable and I quickly learned that most of the time when a monster scuttled across a gap in the wall or stabbed the log I was crawling through, it was all just for show; it couldn't kill me and therefore wasn't scary. </p><p>You get haunted by a monster riddled with flowing veins stretching out of its body that looks so cool while in the Labyrinth but it never really amounts to anything, none of the horror in the Labyrinth does. Occasionally, the extra-dimensional sadistic cenobite Chatterer will chase you around the maze but he walks pretty slow so he was never much of a threat. At one point I literally ran circles around him while using the genesis configuration to solve a finicky puzzle. </p><p>I will admit, though, I may be slightly numb to jumpscares and horror at this point, so take this with a grain of salt, but while my tolerance may be higher than most, a well placed scare can still get through. Silent Hill: Townfall and Amnesia: The Bunker are just some recent examples that come to mind. </p><h2 id="wasted-potential">Wasted potential </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="Js2diQnPaCpVLj8jHveB5J" name="Clive Barker's Hellraiser: Revival" alt="Clive Barker's Hellraiser: Revival screenshots" src="https://cdn.mos.cms.futurecdn.net/Js2diQnPaCpVLj8jHveB5J-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: Saber Interactive)</span></figcaption></figure><p>It's all a bit of a shame because the look of Hellraiser: Revival is great. I loved all the guts and gore, and every single one of the major monsters looked so awful I couldn't tear myself away. Charlotte may have been an annoying boss fight, but it's been a long time since I saw a monster that was designed so brilliantly that I felt the odd mix of impressed and horrified. </p><div><blockquote><p>It's not particularly innovative and the action isn't massively satisfying. </p></blockquote></div><p>The puzzles were another highlight. I found using the genesis configuration to solve them to be intuitive and rewarding. It actually had me wishing that this game was solely set in the Labyrinth. I think a stealth horror game where the protagonist has to sneak around the maze while solving puzzles would have been much more satisfying and scary. It could have also made the cenobites seem a bit more intimidating, because instead they came off as a bunch of kind of chill alien things who were just into some kinky stuff. They kept their word, helped guide you, and occasionally followed you around the maze.They seemed alright to me. </p><p>Ultimately, Clive Barker's Hellraiser: Revival was simply okay. It's not particularly innovative and the action isn't massively satisfying. But when you stack it up against the greats of the action horror genre like Resident Evil 4, The Last of Us, or even Alan Wake 2 its pitfalls become even more apparent. The gore is cool and all the BDSM is certainly eye-catching, but a fetch quest for  the biggest dildo available isn't enough to bump this game up into a must-play for a fan of the genre; you can get better elsewhere. </p><div class="product"><a data-dimension112="03e5a674-ce30-11f1-bdcd-b55cc4243f3a" 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="03e5a674-ce30-11f1-bdcd-b55cc4243f3a" 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/horror/clive-barkers-hellraiser-revival-review/</link>
                                                                            <description>
                            <![CDATA[ Hellraiser: Revival may not be great action horror but it does win the prize for most unique fetch quest. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Mggf87WVpoBjVfHajdK7gL</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/GFRGR8vGBxx6sqafiXyvcH-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 15:50:04 +0000</pubDate>                                                                                                                                <updated>Thu, 22 Oct 2026 18:42:55 +0000</updated>
                                                                                                                                            <category><![CDATA[Horror]]></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/GFRGR8vGBxx6sqafiXyvcH-1920-80.jpg">
                                                            <media:credit><![CDATA[Saber Interactive]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Clive Barker&#039;s Hellraiser: Revival screenshots]]></media:description>                                                            <media:text><![CDATA[Clive Barker&#039;s Hellraiser: Revival screenshots]]></media:text>
                                <media:title type="plain"><![CDATA[Clive Barker&#039;s Hellraiser: Revival screenshots]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/GFRGR8vGBxx6sqafiXyvcH-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <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> A singleplayer action horror game based on Clive Barker's Hellraiser. <br><strong>Release date</strong> October 8, 2026<br><strong>Expect to pay</strong> $40 / £35<br><strong>Developer </strong>Saber Interactive<br><strong>Publisher </strong>Saber Interactive<br><strong>Reviewed on</strong> RTX 3070, Core AMD Ryzen 5 5600G, 16GB RAM<br><strong>Multiplayer </strong>No<br><strong>Steam Deck </strong>Playable<br><strong>Link </strong><a data-analytics-id="inline-link" href="https://store.steampowered.com/app/1551980/Clive_Barkers_Hellraiser_Revival/">Steam</a></p></div></div><p>Bloody hell, that monster with the metal stakes for arms and legs is quick. No matter how fast I run or how well I hide it'll be right where it needs to be, on time and ready to impale me. Don't get me wrong, I actually quite like coming face to face with a de-fleshed monster— especially when it looks this cool—but I'm not a fan of being funneled into the same set pieces over and over again. </p><p>Clive Barker's Hellraiser: Revival does a lot of things right; its body horror and gore is top tier and some of the puzzles really grew on me towards the end. But its action and horror didn't manage to hit the same highs no matter how many grotesque monsters it threw at 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="thbt3rVsvmDVJzbugaZyEJ" name="Clive Barker's Hellraiser: Revival" alt="Clive Barker's Hellraiser: Revival screenshots" src="https://cdn.mos.cms.futurecdn.net/thbt3rVsvmDVJzbugaZyEJ-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: Saber Interactive)</span></figcaption></figure><p>I played Hellraiser on its standard setting—I find it's a good way to get a baseline—and while I didn't have a massive problem with how easy that was, I didn't gel with how inconsistent the fights were and how, ultimately, nothing I did mattered. </p><p>Take the final fight scene with our aforementioned monster with stakes for arms and legs, otherwise known as Charlotte, for example. After being chased through the cult's HQ and the woods she finally cornered me in a clearing in the woods. I used everything I had against Charlotte, going through all the ammo and healing items I had diligently stacked up all while sliding and dodging out of the way of incoming attacks, but she just wouldn't go down. Finally, when I had nothing left, she got me. And then the realisation set in as a cutscene played out; I was never meant to win this fight. </p><p>This happened a couple of times throughout Hellraiser, an action set piece in which your actions didn't really matter. One segment felt like a poor man's COD zombies that saw me nailing planks of wood to the windows in a futile attempt to keep those pesky brain-eaters out. It's not my first rodeo so I was on it. But ultimately I chewed through all the ammo and other resources I had yet again. Soon after a flood of zombies invaded the small cabin I was in and pushed me into a corner where I was trapped by the horde's flailing arms. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/GLpQG9mjyRsvNyUKxVvMVH-1920-80.jpg" alt="Clive Barker's Hellraiser: Revival screenshots" /><figcaption><small role="credit">Saber Interactive</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QV4bk2tFs9oPvokKiejY9J-1920-80.jpg" alt="Clive Barker's Hellraiser: Revival screenshots" /><figcaption><small role="credit">Saber Interactive</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/nQtSLmNvQPNdqPjEtFeasH-1920-80.jpg" alt="Clive Barker's Hellraiser: Revival screenshots" /><figcaption><small role="credit">Saber Interactive</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/kdEo3gsuK6JJuS64HaoPZH-1920-80.jpg" alt="Clive Barker's Hellraiser: Revival screenshots" /><figcaption><small role="credit">Saber Interactive</small></figcaption></figure></figure><p>I actually managed to get out of that situation thanks to some well placed crouches but I didn't last much longer. Eventually one dropped from the rafters (don't ask me how he got there), and I crashed through the floor boards in another short cinematic. Ah, this was all part of the game's plan. It's fine for there to be an outline of how the action should play out, but when the guard rails are this obvious it can be suffocating.Why not make it all into a cinematic if my actions have so little consequence? </p><p>I may have even been able to excuse the strict script if killing enemies were satisfying enough for the journey to outweigh the destination. But the kills are just sort of okay. Enemies' torsos randomly detached from their legs when I threw a saw blade at their head, zombies fell to the floor as if playing dead only to then bite at your ankles, and fighting the guys in full suits of armour is far less epic than it sounds; you just have to hit them over and over with a blunt object.It's very tedious. </p><p>My favourite part of the action by far had to be using the genesis configuration box, an item that bestows the user with limited telekinesis. In fights you can use it to throw deadly items that are helpfully highlighted in blue, like nails or even fire. But this played less of a part than I would've liked with pistols, shotguns, and assault rifles carrying the brunt of the action. </p><h2 id="something-39-s-wrong">Something's wrong </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:1415px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="BUhZ5E4GxixFSkHaYCVEFH" name="Clive Barker's Hellraiser: Revival" alt="Clive Barker's Hellraiser: Revival screenshots" src="https://cdn.mos.cms.futurecdn.net/BUhZ5E4GxixFSkHaYCVEFH-1920-80.jpg" mos="" align="middle" fullscreen="" width="1415" height="796" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Saber Interactive)</span></figcaption></figure><p>So the action isn't all there, but what about the horror? Well, unfortunately I didn't find Hellraiser scary at all. The jumpscares were predictable and I quickly learned that most of the time when a monster scuttled across a gap in the wall or stabbed the log I was crawling through, it was all just for show; it couldn't kill me and therefore wasn't scary. </p><p>You get haunted by a monster riddled with flowing veins stretching out of its body that looks so cool while in the Labyrinth but it never really amounts to anything, none of the horror in the Labyrinth does. Occasionally, the extra-dimensional sadistic cenobite Chatterer will chase you around the maze but he walks pretty slow so he was never much of a threat. At one point I literally ran circles around him while using the genesis configuration to solve a finicky puzzle. </p><p>I will admit, though, I may be slightly numb to jumpscares and horror at this point, so take this with a grain of salt, but while my tolerance may be higher than most, a well placed scare can still get through. Silent Hill: Townfall and Amnesia: The Bunker are just some recent examples that come to mind. </p><h2 id="wasted-potential">Wasted potential </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="Js2diQnPaCpVLj8jHveB5J" name="Clive Barker's Hellraiser: Revival" alt="Clive Barker's Hellraiser: Revival screenshots" src="https://cdn.mos.cms.futurecdn.net/Js2diQnPaCpVLj8jHveB5J-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: Saber Interactive)</span></figcaption></figure><p>It's all a bit of a shame because the look of Hellraiser: Revival is great. I loved all the guts and gore, and every single one of the major monsters looked so awful I couldn't tear myself away. Charlotte may have been an annoying boss fight, but it's been a long time since I saw a monster that was designed so brilliantly that I felt the odd mix of impressed and horrified. </p><div><blockquote><p>It's not particularly innovative and the action isn't massively satisfying. </p></blockquote></div><p>The puzzles were another highlight. I found using the genesis configuration to solve them to be intuitive and rewarding. It actually had me wishing that this game was solely set in the Labyrinth. I think a stealth horror game where the protagonist has to sneak around the maze while solving puzzles would have been much more satisfying and scary. It could have also made the cenobites seem a bit more intimidating, because instead they came off as a bunch of kind of chill alien things who were just into some kinky stuff. They kept their word, helped guide you, and occasionally followed you around the maze.They seemed alright to me. </p><p>Ultimately, Clive Barker's Hellraiser: Revival was simply okay. It's not particularly innovative and the action isn't massively satisfying. But when you stack it up against the greats of the action horror genre like Resident Evil 4, The Last of Us, or even Alan Wake 2 its pitfalls become even more apparent. The gore is cool and all the BDSM is certainly eye-catching, but a fetch quest for  the biggest dildo available isn't enough to bump this game up into a must-play for a fan of the genre; you can get better elsewhere. </p><div class="product"><a data-dimension112="03e5a674-ce30-11f1-bdcd-b55cc4243f3a" 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="03e5a674-ce30-11f1-bdcd-b55cc4243f3a" 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>
            </channel>
</rss>