<?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 rel="alternate" hreflang="en-AU"
                       href="https://www.pcgamer.com/au/feeds/tag/hardware/"
                       type="application/rss+xml"/>
                            <title><![CDATA[ Latest from PC Gamer AU in Hardware ]]></title>
                <link>https://www.pcgamer.com/au/hardware</link>
        <description><![CDATA[ All the latest hardware content from the PC Gamer  AU team ]]></description>
                                    <lastBuildDate>Fri, 06 Nov 2026 17:31:29 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ All that stands between a hacker and admin privileges on some Linux distros is a 257-character long string of literally anything ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Some implementations of secure shell (SSH), one of Linux's most trusted and secure connection protocols, have been found vulnerable to the most peculiarly simple methods of bypass: spamming characters. </p><p>On some distros, simply type 257–1,024 characters and you get access to the root (admin) login. Thankfully, the list of vulnerable distros is quite small and niche, and OpenSSH has already issued a workaround/fix.</p><p>In some <a href="https://www.openssh.org/txt/release-10.6p2" target="_blank">new release notes</a>, OpenSSH explains that "this release contains a critical security workaround that affects Linux systems that use the musl libc and PAM disabled."</p><p>"Sshd(8): avoid password authentication bypass that is exploitable through sshd(8) that affects some Linux systems when built and run with PAM support disabled. We consider the root cause of this bug to be outside sshd, but it is exploitable via sshd and can be avoided there."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script><p>SSH itself is a longstanding and ubiquitous networking protocol that anyone who has dabbled even lightly in Linux networking projects will be familiar with. It's what manages comms between Linux machines. If you've ever used a Raspberry Pi remotely, for instance, you'll likely have logged into it using SSH. Same goes for a NAS. It's also used by devs to push/pull/manage GitHub files.</p><p>Thankfully, it's not SSH in general that has the problem but just a small number of distros that use SSH.</p><p>According to an explanation on <a href="https://sshhole.com/" target="_blank">sshhole.com</a>—a website written by Ozgun Kultekin who discovered the bug—this is an issue with "musl Linux." </p><p>This refers to any Linux OS that uses the musl C library rather than the standard Glib C library, which is a fancier way of saying: not many distros. </p><p>Most distros don't use musl, but a few do. Perhaps most prominently, Alpine Linux, a minimal, security-focused distro. As OpenSSH clarifies, it's also not just musl Linux distros in general, but only those running SSH servers that have Pluggable Authentication Module (PAM) support disabled.</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="T57wYtSENm7nCAGkSewHnA" name="Password theft security breach hero" alt="A stock illustration showing a human hand holding an asterisk from an encrypted password." src="https://cdn.mos.cms.futurecdn.net/T57wYtSENm7nCAGkSewHnA-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Boris Zhitkov via Getty Images)</span></figcaption></figure><p>The background as to why this bug occurs and why it was overlooked is pretty complicated, involving different login security functions developed for different purposes overlapping with this specific kind of edge case being overlooked. Sshhole.com explains it better than I can.</p><p>The long and short, though, is that one function used * (a star) as a value under the assumption that it would never be used as a password hash, because that usually cannot happen. But another completely separate function, after some further shenanigans, makes the password hash a star if it's 'invalid' because the password has too many characters. </p><p>Thus: Spam letters, get let into root.</p><p>Most Linux users are absolutely fine. As the bug researchers explains: "On debian, ubuntu, fedora or anything else with glibc? going through pam? dropbear? openbsd? you're fine."</p><p>Here are the set of conditions you need to fall under to <em>not </em>be fine:</p><ul><li>"Is your sshd running on musl? (alpine, openwrt, buildroot, yocto)</li><li>is it not using pam? alpine's openssh-server doesn't by default, or maybe you set UsePAM no</li><li>are password logins still on? they are by default</li><li>is there an account with just * as its password? key-only users, ldap users, root on alpine</li><li>and some other account with a real password?"</li></ul><p>Though for my part, and although this might not be warranted, I'll be considering this will a justification for sticking to the bigger distros. Ubuntu, Fedora, and so on. Or Windows, I suppose. Good things are <a href="https://www.pcgamer.com/software/windows/it-looks-like-windows-updates-might-actually-be-speeding-up-the-os-now/" target="_blank">still happening</a> over in closed-source land. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/linux/all-that-stands-between-a-hacker-and-admin-privileges-on-some-linux-distros-is-a-257-character-long-string-of-literally-anything/</link>
                                                                            <description>
                            <![CDATA[ Eeeeeeeeeeeeeep. Thankfully there's already a fix out. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">C9WBsccHmY4sEHNKez2dSJ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/FzqWo3fsvLDFRpTumixHaY-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 06 Nov 2026 17:31:29 +0000</pubDate>                                                                                                                                <updated>Fri, 06 Nov 2026 22:17:27 +0000</updated>
                                                                                                                                            <category><![CDATA[Linux]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></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/FzqWo3fsvLDFRpTumixHaY-1920-80.jpg">
                                                            <media:credit><![CDATA[Canonical, Ubuntu, distrosea.com]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[An Ubuntu Linux terminal showing attempt to ssh using FIX MOJANG BEDROCK spam.]]></media:description>                                                            <media:text><![CDATA[An Ubuntu Linux terminal showing attempt to ssh using FIX MOJANG BEDROCK spam.]]></media:text>
                                <media:title type="plain"><![CDATA[An Ubuntu Linux terminal showing attempt to ssh using FIX MOJANG BEDROCK spam.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/FzqWo3fsvLDFRpTumixHaY-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Some implementations of secure shell (SSH), one of Linux's most trusted and secure connection protocols, have been found vulnerable to the most peculiarly simple methods of bypass: spamming characters. </p><p>On some distros, simply type 257–1,024 characters and you get access to the root (admin) login. Thankfully, the list of vulnerable distros is quite small and niche, and OpenSSH has already issued a workaround/fix.</p><p>In some <a href="https://www.openssh.org/txt/release-10.6p2" target="_blank">new release notes</a>, OpenSSH explains that "this release contains a critical security workaround that affects Linux systems that use the musl libc and PAM disabled."</p><p>"Sshd(8): avoid password authentication bypass that is exploitable through sshd(8) that affects some Linux systems when built and run with PAM support disabled. We consider the root cause of this bug to be outside sshd, but it is exploitable via sshd and can be avoided there."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script><p>SSH itself is a longstanding and ubiquitous networking protocol that anyone who has dabbled even lightly in Linux networking projects will be familiar with. It's what manages comms between Linux machines. If you've ever used a Raspberry Pi remotely, for instance, you'll likely have logged into it using SSH. Same goes for a NAS. It's also used by devs to push/pull/manage GitHub files.</p><p>Thankfully, it's not SSH in general that has the problem but just a small number of distros that use SSH.</p><p>According to an explanation on <a href="https://sshhole.com/" target="_blank">sshhole.com</a>—a website written by Ozgun Kultekin who discovered the bug—this is an issue with "musl Linux." </p><p>This refers to any Linux OS that uses the musl C library rather than the standard Glib C library, which is a fancier way of saying: not many distros. </p><p>Most distros don't use musl, but a few do. Perhaps most prominently, Alpine Linux, a minimal, security-focused distro. As OpenSSH clarifies, it's also not just musl Linux distros in general, but only those running SSH servers that have Pluggable Authentication Module (PAM) support disabled.</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="T57wYtSENm7nCAGkSewHnA" name="Password theft security breach hero" alt="A stock illustration showing a human hand holding an asterisk from an encrypted password." src="https://cdn.mos.cms.futurecdn.net/T57wYtSENm7nCAGkSewHnA-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Boris Zhitkov via Getty Images)</span></figcaption></figure><p>The background as to why this bug occurs and why it was overlooked is pretty complicated, involving different login security functions developed for different purposes overlapping with this specific kind of edge case being overlooked. Sshhole.com explains it better than I can.</p><p>The long and short, though, is that one function used * (a star) as a value under the assumption that it would never be used as a password hash, because that usually cannot happen. But another completely separate function, after some further shenanigans, makes the password hash a star if it's 'invalid' because the password has too many characters. </p><p>Thus: Spam letters, get let into root.</p><p>Most Linux users are absolutely fine. As the bug researchers explains: "On debian, ubuntu, fedora or anything else with glibc? going through pam? dropbear? openbsd? you're fine."</p><p>Here are the set of conditions you need to fall under to <em>not </em>be fine:</p><ul><li>"Is your sshd running on musl? (alpine, openwrt, buildroot, yocto)</li><li>is it not using pam? alpine's openssh-server doesn't by default, or maybe you set UsePAM no</li><li>are password logins still on? they are by default</li><li>is there an account with just * as its password? key-only users, ldap users, root on alpine</li><li>and some other account with a real password?"</li></ul><p>Though for my part, and although this might not be warranted, I'll be considering this will a justification for sticking to the bigger distros. Ubuntu, Fedora, and so on. Or Windows, I suppose. Good things are <a href="https://www.pcgamer.com/software/windows/it-looks-like-windows-updates-might-actually-be-speeding-up-the-os-now/" target="_blank">still happening</a> over in closed-source land. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Epomaker HE75 V2 TMR review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Epomaker HE75 V2 TMR" data-widget-title=""></div><p>It feels like every new bit of tech in a gaming keyboard or gaming mouse is treated as the next frontier, from new switch types to higher polling rates, and even the materials used. But if you want 8,000 Hz polling, it actually does feel like TMR might be the next frontier, because not only is it snappy and responsive, but it's super efficient, which helps counteract some of the problems with high polling in the first place. </p><p>Right now, the pickings are fairly slim for TMR keyboards. We've got some from <a href="https://www.pcgamer.com/hardware/gaming-keyboards/logitech-g512-x-review/" target="_blank">Logitech</a>, some from <a href="https://www.pcgamer.com/hardware/gaming-keyboards/cherry-k5-pro-tmr-compact-review/" target="_blank">Cherry</a>, and a <a href="https://www.monsgeek.com/keyboard/m1-v5-tmr-fully-assembled/" target="_blank">few others</a>, but it's still a relatively niche sensor technology for switches right now, and not exactly cheap. But TMR is great, and it's particularly good if you want to go wireless thanks to its power efficiency. </p><p>Epomaker's HE75 V2 TMR is interesting partly because it crams that switch technology into an 8,000 Hz board with a ton of little quality-of-life features, and does it all at a price point amongst the cheapest TMR keyboards. But whether it's worth the asking fee will come down to feel and play. </p><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Buy if…</h3><div class="card__description-wrapper"><div class="card__description"><p>✅ <strong>You want a compact competitive keeb:</strong> It might not look it, but the HE75 V2 TMR is a beast in the specs department, and it fits that into an ickle frame. </p></div></div></div></div><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Don&#39;t Buy if…</h3><div class="card__description-wrapper"><div class="card__description"><p>❌ <strong>You don't care about TMR switches or high polling:</strong> If you can make do with Hall effect or plain 'ol mechanical switches, you can get a keyboard for cheaper, or one loaded with more features. </p></div></div></div></div><h2 class="article-body__section" id="section-features"><span>Features</span></h2><div ><table><caption>Epomaker HE75 V2 TMR specs</caption><tbody><tr><td class="firstcol " ><p><strong>Switches</strong></p></td><td  ><p>Epomaker Creamy Jade Magnetic Switch (pre-lubed)</p></td></tr><tr><td class="firstcol " ><p><strong>Hot swappable</strong></p></td><td  ><p>Yes, with magnetic and 3 / 5-pin mechanical switches. </p></td></tr><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>75%</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>Up to 8,000 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>Connection type</strong></p></td><td  ><p>Wired and wireless (2.4 GHz and Bluetooth)</p></td></tr><tr><td class="firstcol " ><p><strong>Cable</strong></p></td><td  ><p>Included USB Type-A to Type-C cable</p></td></tr><tr><td class="firstcol " ><p><strong>Backlight</strong></p></td><td  ><p>Dynamic RGB per-key backlight and adjustable front light</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>60 hours with RGB off and 33.5 with RGB on (8,000 Hz)</p></td></tr><tr><td class="firstcol " ><p><strong>Media controls</strong></p></td><td  ><p>One dial</p></td></tr><tr><td class="firstcol " ><p><strong>Wrist rest</strong></p></td><td  ><p>None</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>0.98 kg</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://epomaker.com/products/epomaker-he75-v2-tmr?srsltid=AU7gw4WcI1lt0AqOCIAOhUHF6rXozIICzK69h1z3MRbv_yDOc37LJMrq" target="_blank">$129</a></p></td></tr></tbody></table></div><p>8,000 Hz polling is far more than the average gamer needs (myself included), and it's even paired with the likes of rapid trigger, making this a super competitive keyboard in the specs department. You aren't getting a wrist rest or many extras here, but it does come with a five-layer sound-dampening gasket, one media dial, and my model came with pre-lubed Creamy Jade Magnetic switches. </p><p>TMR and Hall effect are both contactless magnetic sensor-based systems, though they are different terms, which does make the HE in the name confusing. The standard HE75 is Hall effect, hence the name, so this V2 model is the TMR version of a Hall effect keyboard. Understood? Great. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ieHyr4rceb3Us7AXrVkUQK-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/akBeJepTpgAgpkHSYqpoQK-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The broader benefit of TMR switches is that they are uber precise, detecting changes of 0.01 mm, and because they measure resistance (rather than a constant voltage), they use less power than the likes of Hall effect. That makes them especially good for wireless peripherals that rely on battery power, like this one (though you can also keep it plugged in).</p><p>They also have the same benefit as Hall effect switches in that no physical contact happens; therefore, there's no wear. This is perhaps more of a benefit in controllers that can get drift. They are more or less a straight upgrade from Hall effect, hence the recent adoption in the gaming market. </p><p>The HE 75 V2 TMR (unlike the standard HE 75 V2) is hot-swappable with magnetic or 3/5-pin mechanical switches. </p><h3 class="article-body__section" id="section-ergonomics"><span>Ergonomics</span></h3><p>I have come to love the size of this keyboard from my weeks with it. You get your standard keys, your F keys, an extra media dial, but not much else. It's a compact build that's sturdy, weighty, and not too heavy either.</p><p>There's only a little space between the number keys and F keys, and yet I rarely hit the wrong key. I can say the same for the arrow keys on the right. I could see one accidentally activating rapid trigger mode by hitting Fn and Shift together when trying to hit the right Shift, but I've never managed to do so in-game. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/942Ffaevx2nwogzpUhkpiJ-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/juQU5Tm23VDCxFfeWUfHcJ-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GfPTfvYWNYcVEcsbBpYDUJ-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>As for typing feel, the HE 75 V2 TMR is smooth and responsive. It's relatively clacky, which I find quite satisfying in use, and though keys are rather smushed together to fit on the board, the PBT keycaps are smooth to the touch and easy to press down. </p><p>Playing Terraria-like crafter Delverium, I notice almost no hand strain. This is less a competitive game and more one you'd play for hours in the evening, but it's important that a gaming keyboard can last for both a hardcore session and a cosy one. The only downside here is the lack of a wrist rest means you are reliant on the comfort of your tabletop to brace the weight of your arm. But the HE75 V2 TMR is accommodating to the palm, and despite being sturdy, it doesn't feel angular. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/X7VY6j6743Bu2S8aru2qsJ-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ieHyr4rceb3Us7AXrVkUQK-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>In Counter-Strike 2, it is super snappy. Given that you can set actuation anywhere between 0.1 mm and 3 mm, I found myself prioritising the WASD keys, and this feels natural in context. 8,000 Hz may be overkill, but I can say that, whether wired or wireless, the HE 75 V2 TMR is a competitive ol' beast. It's smooth, reactive, easy to press, and it's never hard to find my place on the board thanks to its accommodating size and angled shape. </p><p>The entire keyboard goes up ever so slightly at the top, which can then be pushed further up with its included feet. Rather handily, it hides away the 2.4 GHz connector under the right foot, which is a neat bit of storage. </p><h2 class="article-body__section" id="section-aesthetics"><span>Aesthetics</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/pJNwHtoQcYTcyjXkWgjVCK-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/nAFdaG38VFdktPs6eZ8rQK-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Simplicity is the aim of the HE 75 VR TMR. My model is the black variant, and it comes with all-black keycaps with a white font. The only flashy element of the entire build is a strip of light in the back of the keyboard that is accompanied by a crystallised lining. You can customise this in the software to any colour, but it's much more noticeable for the streaks of light it produces on my mousepad than the look of the strip itself. </p><p>The HE 75 V2 TMR does have per-key RGB, and with the keys being somewhat opaque, it shines through well. To me, the keyboard looks solid with or without RGB, but it doesn't really stand out. </p><p>One thing I do like is that almost every aesthetic choice is also practical (barring the light bar). It has a small light on the bottom right, and this indicates whether you have turned rapid trigger on or off. The media dial on the top right is very low-key in its presentation, but functions well, and has enough space on the board to be easy to find. </p><h2 class="article-body__section" id="section-software"><span>Software</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="KBGCsSgzbMzqWkCGRqRFeD" name="C - 2026-11-06T151724.079" alt="Epomaker's web software" src="https://cdn.mos.cms.futurecdn.net/KBGCsSgzbMzqWkCGRqRFeD-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: Epomaker)</span></figcaption></figure><p>Epomaker, unlike many peripheral manufacturers, pulls out a big win in the software department, as it's not only intuitive and easy to use, but can also be done entirely through a web page. You simply 'bind' your device to the tab (just find it via settings), then you can do custom button mapping, swap lighting, set actuation, and update software. </p><p>In my weeks using this keyboard every single day, I've not had a single software hiccup. And, other than getting updates or setting actuation, you can control a lot of the keyboard's software through a smart grouping of <a href="https://epomaker.com/cdn/shop/files/EPOMAKER_HE75_V2_TMR_User_Manual.pdf?v=13010787007448444216" target="_blank">function key combinations</a>. </p><h2 class="article-body__section" id="section-battery-life"><span>Battery Life</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Hj4dTryCxdM5rH4pdNCaQK-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Thanks perhaps to the 8,000 mAh battery, or the more efficient TMR switches, you can get up to 60 hours of battery life in 8,000 Hz mode with the RGB off and up to 33.5 with RGB on. Given 8,000 Hz polling seems to drain battery anywhere between five and seven times faster, I'd expect around 300 to 350 hours of battery on 1,000 Hz with RGB off, and just over half that figure with RGB on. </p><p>I'd consider that battery life solid, and more than enough to make the HE75 V2 TMR both good on the go and great in a wireless minimalist setup. The likes of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-k8-ultra-8k-review/" target="_blank">Keychron K8 Ultra 8K</a> deliver up to 760 hours with RGB off, so you will get better battery from comparably priced keyboards, but 350 hours is enough that I'd be surprised if you charge it more than once every few months. </p><p>If you need to check the battery life, you simply hit FN and Space, and it shows the battery in RGB. It's a neat touch. </p><h2 class="article-body__section" id="section-sound"><span>Sound</span></h2><div><blockquote><p>There's a deep thock to it, but one that doesn't reverberate. </p></blockquote></div><p>The HE V2 TMR has a five-layer gasket designed for softer keystrokes, and though I wouldn't call the keyboard quiet, I would say it offers a fairly satisfying sound. There's a deep thock to it, but one that doesn't reverberate. </p><p>It's a deep, satisfying sound, especially so when you consider the top is a thick plastic. I was expecting a more shrill or generally more hollow sound, but the five layers give it some depth. I'd say it's fairly comparable to the TMR Cherry keyboard I tried earlier this year, the XTRFY MX 8.2 Pro TMR TKL. </p><p>It does have a slightly more weighty sound in the space bar and in the Enter switch, which I assume is partly related to them being bigger keys, but also partly with the space bar not being surrounded by keycaps. Though they sound different, none sound bad. </p><h2 class="article-body__section" id="section-value"><span>Value</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ic7rskiVoQjEabvxHQbiQK-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/X7VY6j6743Bu2S8aru2qsJ-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>As far as TMR boards are concerned, this is a very good price. The <a href="https://www.pcgamer.com/hardware/gaming-keyboards/cherry-k5-pro-tmr-compact-review/" target="_blank">Cherry K5 Pro TMR Compact</a> is a smaller board and costs more. The<a href="https://www.pcgamer.com/hardware/gaming-keyboards/cherry-xtrfy-mx-8-2-pro-tmr-tkl-review/#viafoura-comments" target="_blank"> MX 8.2 Pro TMR TKL</a> is over $100 more. You are getting more keys here, and I think the Pro TMR TKL has a stronger base, but I'd easily pick the Epomaker if it were my money. </p><p>But if you don't need a TMR keyboard, there are plenty of cheaper options. <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">Gamakay's X NaughShark NS68</a> goes all the way down to just $40, and it comes with Hall effect switches.  It's missing a media dial and dedicated F keys, but it's a relatively similar size. The Epomaker, however, blows it out of the shark-infested waters where build quality is concerned. The HE75 V2 TMR really does feel like a $130 keyboard to my fingertips. </p><p>I think the questions you have to ask yourself if you're thinking about the Epomaker HE75 V2 TMR are: 'How important are TMR switches to you?', 'Do I need 8K?', 'Will I need a numpad or wrist rest?' and 'Do I want something flashier?'. If the answers to those questions are yes, yes, no and no, then I'd say the HE75 V2 TMR is a bit of a winner. </p><p>The HE75 V2 TMR is strongly built, with a solid feature set, and it balances a small size with a solid offering of keys. I found myself pleasantly surprised by the amount of desk space left after the V2 TMR took over full-time, and I've never found myself lacking in competitive matches either. Well, any more than I usually am. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/epomaker-he75-v2-tmr-review/</link>
                                                                            <description>
                            <![CDATA[ Mid-range, mighty, and mini. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">EBZPTNTrSnLhL4MhnpPtWe</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/DZmhCPFJWSinTGsEejYTQK-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 06 Nov 2026 15:58:29 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/DZmhCPFJWSinTGsEejYTQK-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Epomaker HE75 V2 TMR gaming keyboard]]></media:description>                                                            <media:text><![CDATA[Epomaker HE75 V2 TMR gaming keyboard]]></media:text>
                                <media:title type="plain"><![CDATA[Epomaker HE75 V2 TMR gaming keyboard]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/DZmhCPFJWSinTGsEejYTQK-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Epomaker HE75 V2 TMR" data-widget-title=""></div><p>It feels like every new bit of tech in a gaming keyboard or gaming mouse is treated as the next frontier, from new switch types to higher polling rates, and even the materials used. But if you want 8,000 Hz polling, it actually does feel like TMR might be the next frontier, because not only is it snappy and responsive, but it's super efficient, which helps counteract some of the problems with high polling in the first place. </p><p>Right now, the pickings are fairly slim for TMR keyboards. We've got some from <a href="https://www.pcgamer.com/hardware/gaming-keyboards/logitech-g512-x-review/" target="_blank">Logitech</a>, some from <a href="https://www.pcgamer.com/hardware/gaming-keyboards/cherry-k5-pro-tmr-compact-review/" target="_blank">Cherry</a>, and a <a href="https://www.monsgeek.com/keyboard/m1-v5-tmr-fully-assembled/" target="_blank">few others</a>, but it's still a relatively niche sensor technology for switches right now, and not exactly cheap. But TMR is great, and it's particularly good if you want to go wireless thanks to its power efficiency. </p><p>Epomaker's HE75 V2 TMR is interesting partly because it crams that switch technology into an 8,000 Hz board with a ton of little quality-of-life features, and does it all at a price point amongst the cheapest TMR keyboards. But whether it's worth the asking fee will come down to feel and play. </p><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Buy if…</h3><div class="card__description-wrapper"><div class="card__description"><p>✅ <strong>You want a compact competitive keeb:</strong> It might not look it, but the HE75 V2 TMR is a beast in the specs department, and it fits that into an ickle frame. </p></div></div></div></div><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Don&#39;t Buy if…</h3><div class="card__description-wrapper"><div class="card__description"><p>❌ <strong>You don't care about TMR switches or high polling:</strong> If you can make do with Hall effect or plain 'ol mechanical switches, you can get a keyboard for cheaper, or one loaded with more features. </p></div></div></div></div><h2 class="article-body__section" id="section-features"><span>Features</span></h2><div ><table><caption>Epomaker HE75 V2 TMR specs</caption><tbody><tr><td class="firstcol " ><p><strong>Switches</strong></p></td><td  ><p>Epomaker Creamy Jade Magnetic Switch (pre-lubed)</p></td></tr><tr><td class="firstcol " ><p><strong>Hot swappable</strong></p></td><td  ><p>Yes, with magnetic and 3 / 5-pin mechanical switches. </p></td></tr><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>75%</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>Up to 8,000 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>Connection type</strong></p></td><td  ><p>Wired and wireless (2.4 GHz and Bluetooth)</p></td></tr><tr><td class="firstcol " ><p><strong>Cable</strong></p></td><td  ><p>Included USB Type-A to Type-C cable</p></td></tr><tr><td class="firstcol " ><p><strong>Backlight</strong></p></td><td  ><p>Dynamic RGB per-key backlight and adjustable front light</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>60 hours with RGB off and 33.5 with RGB on (8,000 Hz)</p></td></tr><tr><td class="firstcol " ><p><strong>Media controls</strong></p></td><td  ><p>One dial</p></td></tr><tr><td class="firstcol " ><p><strong>Wrist rest</strong></p></td><td  ><p>None</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>0.98 kg</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://epomaker.com/products/epomaker-he75-v2-tmr?srsltid=AU7gw4WcI1lt0AqOCIAOhUHF6rXozIICzK69h1z3MRbv_yDOc37LJMrq" target="_blank">$129</a></p></td></tr></tbody></table></div><p>8,000 Hz polling is far more than the average gamer needs (myself included), and it's even paired with the likes of rapid trigger, making this a super competitive keyboard in the specs department. You aren't getting a wrist rest or many extras here, but it does come with a five-layer sound-dampening gasket, one media dial, and my model came with pre-lubed Creamy Jade Magnetic switches. </p><p>TMR and Hall effect are both contactless magnetic sensor-based systems, though they are different terms, which does make the HE in the name confusing. The standard HE75 is Hall effect, hence the name, so this V2 model is the TMR version of a Hall effect keyboard. Understood? Great. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ieHyr4rceb3Us7AXrVkUQK-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/akBeJepTpgAgpkHSYqpoQK-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The broader benefit of TMR switches is that they are uber precise, detecting changes of 0.01 mm, and because they measure resistance (rather than a constant voltage), they use less power than the likes of Hall effect. That makes them especially good for wireless peripherals that rely on battery power, like this one (though you can also keep it plugged in).</p><p>They also have the same benefit as Hall effect switches in that no physical contact happens; therefore, there's no wear. This is perhaps more of a benefit in controllers that can get drift. They are more or less a straight upgrade from Hall effect, hence the recent adoption in the gaming market. </p><p>The HE 75 V2 TMR (unlike the standard HE 75 V2) is hot-swappable with magnetic or 3/5-pin mechanical switches. </p><h3 class="article-body__section" id="section-ergonomics"><span>Ergonomics</span></h3><p>I have come to love the size of this keyboard from my weeks with it. You get your standard keys, your F keys, an extra media dial, but not much else. It's a compact build that's sturdy, weighty, and not too heavy either.</p><p>There's only a little space between the number keys and F keys, and yet I rarely hit the wrong key. I can say the same for the arrow keys on the right. I could see one accidentally activating rapid trigger mode by hitting Fn and Shift together when trying to hit the right Shift, but I've never managed to do so in-game. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/942Ffaevx2nwogzpUhkpiJ-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/juQU5Tm23VDCxFfeWUfHcJ-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GfPTfvYWNYcVEcsbBpYDUJ-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>As for typing feel, the HE 75 V2 TMR is smooth and responsive. It's relatively clacky, which I find quite satisfying in use, and though keys are rather smushed together to fit on the board, the PBT keycaps are smooth to the touch and easy to press down. </p><p>Playing Terraria-like crafter Delverium, I notice almost no hand strain. This is less a competitive game and more one you'd play for hours in the evening, but it's important that a gaming keyboard can last for both a hardcore session and a cosy one. The only downside here is the lack of a wrist rest means you are reliant on the comfort of your tabletop to brace the weight of your arm. But the HE75 V2 TMR is accommodating to the palm, and despite being sturdy, it doesn't feel angular. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/X7VY6j6743Bu2S8aru2qsJ-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ieHyr4rceb3Us7AXrVkUQK-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>In Counter-Strike 2, it is super snappy. Given that you can set actuation anywhere between 0.1 mm and 3 mm, I found myself prioritising the WASD keys, and this feels natural in context. 8,000 Hz may be overkill, but I can say that, whether wired or wireless, the HE 75 V2 TMR is a competitive ol' beast. It's smooth, reactive, easy to press, and it's never hard to find my place on the board thanks to its accommodating size and angled shape. </p><p>The entire keyboard goes up ever so slightly at the top, which can then be pushed further up with its included feet. Rather handily, it hides away the 2.4 GHz connector under the right foot, which is a neat bit of storage. </p><h2 class="article-body__section" id="section-aesthetics"><span>Aesthetics</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/pJNwHtoQcYTcyjXkWgjVCK-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/nAFdaG38VFdktPs6eZ8rQK-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Simplicity is the aim of the HE 75 VR TMR. My model is the black variant, and it comes with all-black keycaps with a white font. The only flashy element of the entire build is a strip of light in the back of the keyboard that is accompanied by a crystallised lining. You can customise this in the software to any colour, but it's much more noticeable for the streaks of light it produces on my mousepad than the look of the strip itself. </p><p>The HE 75 V2 TMR does have per-key RGB, and with the keys being somewhat opaque, it shines through well. To me, the keyboard looks solid with or without RGB, but it doesn't really stand out. </p><p>One thing I do like is that almost every aesthetic choice is also practical (barring the light bar). It has a small light on the bottom right, and this indicates whether you have turned rapid trigger on or off. The media dial on the top right is very low-key in its presentation, but functions well, and has enough space on the board to be easy to find. </p><h2 class="article-body__section" id="section-software"><span>Software</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="KBGCsSgzbMzqWkCGRqRFeD" name="C - 2026-11-06T151724.079" alt="Epomaker's web software" src="https://cdn.mos.cms.futurecdn.net/KBGCsSgzbMzqWkCGRqRFeD-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: Epomaker)</span></figcaption></figure><p>Epomaker, unlike many peripheral manufacturers, pulls out a big win in the software department, as it's not only intuitive and easy to use, but can also be done entirely through a web page. You simply 'bind' your device to the tab (just find it via settings), then you can do custom button mapping, swap lighting, set actuation, and update software. </p><p>In my weeks using this keyboard every single day, I've not had a single software hiccup. And, other than getting updates or setting actuation, you can control a lot of the keyboard's software through a smart grouping of <a href="https://epomaker.com/cdn/shop/files/EPOMAKER_HE75_V2_TMR_User_Manual.pdf?v=13010787007448444216" target="_blank">function key combinations</a>. </p><h2 class="article-body__section" id="section-battery-life"><span>Battery Life</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Hj4dTryCxdM5rH4pdNCaQK-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Thanks perhaps to the 8,000 mAh battery, or the more efficient TMR switches, you can get up to 60 hours of battery life in 8,000 Hz mode with the RGB off and up to 33.5 with RGB on. Given 8,000 Hz polling seems to drain battery anywhere between five and seven times faster, I'd expect around 300 to 350 hours of battery on 1,000 Hz with RGB off, and just over half that figure with RGB on. </p><p>I'd consider that battery life solid, and more than enough to make the HE75 V2 TMR both good on the go and great in a wireless minimalist setup. The likes of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-k8-ultra-8k-review/" target="_blank">Keychron K8 Ultra 8K</a> deliver up to 760 hours with RGB off, so you will get better battery from comparably priced keyboards, but 350 hours is enough that I'd be surprised if you charge it more than once every few months. </p><p>If you need to check the battery life, you simply hit FN and Space, and it shows the battery in RGB. It's a neat touch. </p><h2 class="article-body__section" id="section-sound"><span>Sound</span></h2><div><blockquote><p>There's a deep thock to it, but one that doesn't reverberate. </p></blockquote></div><p>The HE V2 TMR has a five-layer gasket designed for softer keystrokes, and though I wouldn't call the keyboard quiet, I would say it offers a fairly satisfying sound. There's a deep thock to it, but one that doesn't reverberate. </p><p>It's a deep, satisfying sound, especially so when you consider the top is a thick plastic. I was expecting a more shrill or generally more hollow sound, but the five layers give it some depth. I'd say it's fairly comparable to the TMR Cherry keyboard I tried earlier this year, the XTRFY MX 8.2 Pro TMR TKL. </p><p>It does have a slightly more weighty sound in the space bar and in the Enter switch, which I assume is partly related to them being bigger keys, but also partly with the space bar not being surrounded by keycaps. Though they sound different, none sound bad. </p><h2 class="article-body__section" id="section-value"><span>Value</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ic7rskiVoQjEabvxHQbiQK-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/X7VY6j6743Bu2S8aru2qsJ-1920-80.jpg" alt="Epomaker HE75 V2 TMR gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>As far as TMR boards are concerned, this is a very good price. The <a href="https://www.pcgamer.com/hardware/gaming-keyboards/cherry-k5-pro-tmr-compact-review/" target="_blank">Cherry K5 Pro TMR Compact</a> is a smaller board and costs more. The<a href="https://www.pcgamer.com/hardware/gaming-keyboards/cherry-xtrfy-mx-8-2-pro-tmr-tkl-review/#viafoura-comments" target="_blank"> MX 8.2 Pro TMR TKL</a> is over $100 more. You are getting more keys here, and I think the Pro TMR TKL has a stronger base, but I'd easily pick the Epomaker if it were my money. </p><p>But if you don't need a TMR keyboard, there are plenty of cheaper options. <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">Gamakay's X NaughShark NS68</a> goes all the way down to just $40, and it comes with Hall effect switches.  It's missing a media dial and dedicated F keys, but it's a relatively similar size. The Epomaker, however, blows it out of the shark-infested waters where build quality is concerned. The HE75 V2 TMR really does feel like a $130 keyboard to my fingertips. </p><p>I think the questions you have to ask yourself if you're thinking about the Epomaker HE75 V2 TMR are: 'How important are TMR switches to you?', 'Do I need 8K?', 'Will I need a numpad or wrist rest?' and 'Do I want something flashier?'. If the answers to those questions are yes, yes, no and no, then I'd say the HE75 V2 TMR is a bit of a winner. </p><p>The HE75 V2 TMR is strongly built, with a solid feature set, and it balances a small size with a solid offering of keys. I found myself pleasantly surprised by the amount of desk space left after the V2 TMR took over full-time, and I've never found myself lacking in competitive matches either. Well, any more than I usually am. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Discord is cutting memory usage and speeding up boot times - joins Xbox, Epic, Steam, and more for similar upgrades just this year ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2118081920194203799"><p lang="en" dir="ltr">We've been early adopters of Rust since 2018 and a lot of our infra, voice tech, and even some of the current client is already Rust, the holy grail was getting the whole client there. That means Electron goes away, and so does React Native, mobile keeps native UI but shares app… https://t.co/2CgWyOzaq0 pic.twitter.com/IdOGd4nUgl<a href="https://twitter.com/cantworkitout/status/2118081920194203799">November 4, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Open up Task Manager and check how much memory Discord is currently hogging on your PC. If it's anything like mine, it's probably north of 500 MB. Alas, things should change soon, as Discord is moving the client completely over to a new programming language. It might not sound like that big of a deal, but <a href="https://x.com/svishnevskiy/status/2118081920194203799" target="_blank">Discord's CTO, Stanislav Vishnevskiy, shows it running on as little as 290 MB of memory. </a></p><p>Discord is switching from Electron to Rust.  Electron is a software framework, a building block that allows JavaScript apps (among others) to run standalone on desktops. Built on Chromium, the underlying model behind Google Chrome, there is an overhead here that swapping to Rust aims to fix. </p><p>Vishnevskiy says, "We've been early adopters of Rust since 2018 and a lot of our infra, voice tech, and even some of the current client is already Rust, the holy grail was getting the whole client there. That means Electron goes away, and so does React Native, mobile keeps native UI but shares app code with desktop via Rust."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script><p>Though some suspected Discord would be swapping to Rust using Tauri (an open-source framework for desktop and mobile platforms), Vishnevskiy says it's actually using GPUI (a framework written in Rust), but "We have our own patches on top of it".</p><p>Vishnevskiy also says the goal is to get the program into testing with users soon, but no official date has been given. Either way, with Vishnevskiy showing off a resource demand of 290.2 MB whilst active, that's still a pretty big dip below what it runs at now. Mine is currently flitting between 500 and 600 MB, and my colleague Jacob saw it go up to 785 MB running on Windows. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2118398632236073156"><p lang="en" dir="ltr">The new Discord client using less RAM is just part of the story. Clicking around feels instant, I can't go back. Check out the boot time. https://t.co/YF9g9K30b9 pic.twitter.com/x7ayyWBVQJ<a href="https://twitter.com/cantworkitout/status/2118398632236073156">November 5, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Reportedly, the new Discord client is also faster to use, booting much quicker. <a href="https://x.com/svishnevskiy/status/2118398632236073156" target="_blank">Vishnevskiy showed two laptops</a>, one with the old client and one with the new, and the new client opens up significantly faster (six seconds versus one in my approximation). </p><p>Naturally, we are hearing this from the mouth of the company, so we'll have to get the new Discord client in our hands to see how much faster and how much more efficient it really is, but anyway, to get a little more out of your current memory will always be a boon right now. </p><p>The memory crisis is continuing to drive the prices of gaming gear up, but software tweaks like this (including both <a href="https://www.pcgamer.com/hardware/epic-said-its-game-launcher-was-faster-than-steam-on-the-same-day-steam-got-a-speed-boost-so-ive-put-both-to-the-test/" target="_blank">Epic and Steam getting faster</a>) are very much welcome in my eyes. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/discord-is-cutting-memory-usage-and-speeding-up-boot-times-joins-xbox-epic-steam-and-more-for-similar-upgrades-just-this-year/</link>
                                                                            <description>
                            <![CDATA[ If it's quicker and more efficient, I'm in. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">2Zu5fZjhDNweaUrP9PYBWQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/bK4uZhxvRgcb85EAubQrc-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 06 Nov 2026 12:06:34 +0000</pubDate>                                                                                                                                <updated>Fri, 06 Nov 2026 12:06:39 +0000</updated>
                                                                                                                                            <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/bK4uZhxvRgcb85EAubQrc-1920-80.jpg">
                                                            <media:credit><![CDATA[Jakub Porzycki/NurPhoto via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Discord logo displayed on a phone screen and Discord website displayed on a screen in the background are seen in this illustration photo taken in Krakow, Poland on November 5, 2022.]]></media:description>                                                            <media:text><![CDATA[Discord logo displayed on a phone screen and Discord website displayed on a screen in the background are seen in this illustration photo taken in Krakow, Poland on November 5, 2022.]]></media:text>
                                <media:title type="plain"><![CDATA[Discord logo displayed on a phone screen and Discord website displayed on a screen in the background are seen in this illustration photo taken in Krakow, Poland on November 5, 2022.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/bK4uZhxvRgcb85EAubQrc-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2118081920194203799"><p lang="en" dir="ltr">We've been early adopters of Rust since 2018 and a lot of our infra, voice tech, and even some of the current client is already Rust, the holy grail was getting the whole client there. That means Electron goes away, and so does React Native, mobile keeps native UI but shares app… https://t.co/2CgWyOzaq0 pic.twitter.com/IdOGd4nUgl<a href="https://twitter.com/cantworkitout/status/2118081920194203799">November 4, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Open up Task Manager and check how much memory Discord is currently hogging on your PC. If it's anything like mine, it's probably north of 500 MB. Alas, things should change soon, as Discord is moving the client completely over to a new programming language. It might not sound like that big of a deal, but <a href="https://x.com/svishnevskiy/status/2118081920194203799" target="_blank">Discord's CTO, Stanislav Vishnevskiy, shows it running on as little as 290 MB of memory. </a></p><p>Discord is switching from Electron to Rust.  Electron is a software framework, a building block that allows JavaScript apps (among others) to run standalone on desktops. Built on Chromium, the underlying model behind Google Chrome, there is an overhead here that swapping to Rust aims to fix. </p><p>Vishnevskiy says, "We've been early adopters of Rust since 2018 and a lot of our infra, voice tech, and even some of the current client is already Rust, the holy grail was getting the whole client there. That means Electron goes away, and so does React Native, mobile keeps native UI but shares app code with desktop via Rust."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script><p>Though some suspected Discord would be swapping to Rust using Tauri (an open-source framework for desktop and mobile platforms), Vishnevskiy says it's actually using GPUI (a framework written in Rust), but "We have our own patches on top of it".</p><p>Vishnevskiy also says the goal is to get the program into testing with users soon, but no official date has been given. Either way, with Vishnevskiy showing off a resource demand of 290.2 MB whilst active, that's still a pretty big dip below what it runs at now. Mine is currently flitting between 500 and 600 MB, and my colleague Jacob saw it go up to 785 MB running on Windows. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2118398632236073156"><p lang="en" dir="ltr">The new Discord client using less RAM is just part of the story. Clicking around feels instant, I can't go back. Check out the boot time. https://t.co/YF9g9K30b9 pic.twitter.com/x7ayyWBVQJ<a href="https://twitter.com/cantworkitout/status/2118398632236073156">November 5, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Reportedly, the new Discord client is also faster to use, booting much quicker. <a href="https://x.com/svishnevskiy/status/2118398632236073156" target="_blank">Vishnevskiy showed two laptops</a>, one with the old client and one with the new, and the new client opens up significantly faster (six seconds versus one in my approximation). </p><p>Naturally, we are hearing this from the mouth of the company, so we'll have to get the new Discord client in our hands to see how much faster and how much more efficient it really is, but anyway, to get a little more out of your current memory will always be a boon right now. </p><p>The memory crisis is continuing to drive the prices of gaming gear up, but software tweaks like this (including both <a href="https://www.pcgamer.com/hardware/epic-said-its-game-launcher-was-faster-than-steam-on-the-same-day-steam-got-a-speed-boost-so-ive-put-both-to-the-test/" target="_blank">Epic and Steam getting faster</a>) are very much welcome in my eyes. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Zelda: Ocarina of Time remake reportedly running at 60 fps on PC just hours after game's official Nintendo Switch 2 release ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I've spent all night playing The Legend of Zelda: Ocarina of Time remake on the Switch 2, and it's a fantastic experience, but some would prefer to tinker and toil over an emulator than enjoy Link's new look. The game is already running on PC, but performance issues are aplenty.</p><p>You can see progress is moving pretty fast from the emulator crowd, just from these two videos by Unreal Gaming PC on YouTube. </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/L_ZlCLIy-VM" allowfullscreen=""></iframe></div></div><p>Published on the game's official launch day, November 5, this video shows the game getting over the splash screen and running the cutscenes fairly well; however, it suffers from bad flickering, stuttering, and frame rates around the 20-30 fps mark during gameplay.</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/WNNoHYX4EIg" allowfullscreen=""></iframe></div></div><p>12 hours later, another video. This time showing the game running between 30–60 fps during gameplay, albeit with some persistent flickering and stutters throughout. There's undoubtedly still a long way to go to a playable experience to match the native Switch 2, but that's marked progress for half a day's work. Especially considering the game is designed for an Arm-powered handheld with very different hardware to what's running the emulator (Ryzen 7 9800X3D, 64 GB of RAM, and RTX 4080).</p><p>User akakevinvro on X also <a href="https://x.com/akakevinvro/status/2118483665030361216/video/1" target="_blank">posted a video</a> claiming a pretty steady 60 fps.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script><p>Both are running on the Lichii emulator for the Nintendo Switch and Nintendo Switch 2. It's called the "VERY experimental Nintendo Switch 2 emulator" on its GitHub page. It's an open-source project that has similarities to projects of the same ilk, such as Yuzu. Yuzu's developers settled a legal dispute with Nintendo of America and <a href="https://www.polygon.com/24090351/nintendo-2-4-million-yuzu-switch-emulator-settlement-lawsuit/" target="_blank">shut down development of the emulator in 2024</a>. </p><p>Nintendo has a long history of taking down projects it deems to infringe on its rights, while emulators such as the <a href="https://github.com/suyu-emu/suyu-v0.0.4" target="_blank">now defunct suyu</a> often argue that they do not circumvent Nintendo's privacy measures.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2118063873102127124"><p lang="en" dir="ltr">É confirmado! Já fizeram o dump de Zelda Ocarina of Time Remake!No momento segundo relatos não funciona em nenhum dos emuladores, precisa de algumas correções.Cuidado com supostos links, até o momento não vi nada confiável, mas o dump existe!<a href="https://twitter.com/cantworkitout/status/2118063873102127124">November 4, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>In this case, the files for Ocarina of Time's remake were reportedly dumped online ahead of its release, according to SrLinguicaVIVE on X.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/zelda-ocarina-of-time-remake-reportedly-running-at-60-fps-on-pc-just-hours-after-games-official-nintendo-switch-2-release/</link>
                                                                            <description>
                            <![CDATA[ Visual and performance issues not quite ironed out yet, which will be music to Nintendo's ears. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">TjiTqSTCUjUvNYtSvTzFwm</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/GJBjS9vsYe7y6P8yspKN8f-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Fri, 06 Nov 2026 11:43:06 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&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/GJBjS9vsYe7y6P8yspKN8f-1920-80.png">
                                                            <media:credit><![CDATA[Nintendo]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Link in the remake of The Legend of Zelda: Ocarina of Time for Nintendo Switch 2.]]></media:description>                                                            <media:text><![CDATA[Link in the remake of The Legend of Zelda: Ocarina of Time for Nintendo Switch 2.]]></media:text>
                                <media:title type="plain"><![CDATA[Link in the remake of The Legend of Zelda: Ocarina of Time for Nintendo Switch 2.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/GJBjS9vsYe7y6P8yspKN8f-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I've spent all night playing The Legend of Zelda: Ocarina of Time remake on the Switch 2, and it's a fantastic experience, but some would prefer to tinker and toil over an emulator than enjoy Link's new look. The game is already running on PC, but performance issues are aplenty.</p><p>You can see progress is moving pretty fast from the emulator crowd, just from these two videos by Unreal Gaming PC on YouTube. </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/L_ZlCLIy-VM" allowfullscreen=""></iframe></div></div><p>Published on the game's official launch day, November 5, this video shows the game getting over the splash screen and running the cutscenes fairly well; however, it suffers from bad flickering, stuttering, and frame rates around the 20-30 fps mark during gameplay.</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/WNNoHYX4EIg" allowfullscreen=""></iframe></div></div><p>12 hours later, another video. This time showing the game running between 30–60 fps during gameplay, albeit with some persistent flickering and stutters throughout. There's undoubtedly still a long way to go to a playable experience to match the native Switch 2, but that's marked progress for half a day's work. Especially considering the game is designed for an Arm-powered handheld with very different hardware to what's running the emulator (Ryzen 7 9800X3D, 64 GB of RAM, and RTX 4080).</p><p>User akakevinvro on X also <a href="https://x.com/akakevinvro/status/2118483665030361216/video/1" target="_blank">posted a video</a> claiming a pretty steady 60 fps.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script><p>Both are running on the Lichii emulator for the Nintendo Switch and Nintendo Switch 2. It's called the "VERY experimental Nintendo Switch 2 emulator" on its GitHub page. It's an open-source project that has similarities to projects of the same ilk, such as Yuzu. Yuzu's developers settled a legal dispute with Nintendo of America and <a href="https://www.polygon.com/24090351/nintendo-2-4-million-yuzu-switch-emulator-settlement-lawsuit/" target="_blank">shut down development of the emulator in 2024</a>. </p><p>Nintendo has a long history of taking down projects it deems to infringe on its rights, while emulators such as the <a href="https://github.com/suyu-emu/suyu-v0.0.4" target="_blank">now defunct suyu</a> often argue that they do not circumvent Nintendo's privacy measures.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2118063873102127124"><p lang="en" dir="ltr">É confirmado! Já fizeram o dump de Zelda Ocarina of Time Remake!No momento segundo relatos não funciona em nenhum dos emuladores, precisa de algumas correções.Cuidado com supostos links, até o momento não vi nada confiável, mas o dump existe!<a href="https://twitter.com/cantworkitout/status/2118063873102127124">November 4, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>In this case, the files for Ocarina of Time's remake were reportedly dumped online ahead of its release, according to SrLinguicaVIVE on X.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Sam Altman is annoyed his DRAM comment was 'taken out of context' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>OpenAI CEO Sam Altman <a href="https://www.pcgamer.com/software/ai/sam-altman-argues-that-its-bad-you-want-dram-in-your-computer-and-not-a-data-center-actually/">said on a recent podcast</a> that "from a global allocation perspective, actually it's quite terrible to have everyone have a bunch of the world's limited supply of DRAM sitting in their own computer, and be used 5% of the time."</p><p>Altman was talking about people running AI models locally rather than relying on data centers, which allow RAM usage to be maxed out in this "very supply-constrained environment." What many heard and responded to—PC gamers in particular—was resentment directed at those of us who don't run AI companies, but would still like to have and use our own personal computers, as a treat.</p><a href="https://x.com/sama/status/2117846298472886419?a=WE51DPb_eMIgcOSOvY0&amp;s=20"><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:765px;"><p class="vanilla-image-block" style="padding-top:51.76%;"><img id="UaujCRuojXkE2oHPcFciET" name="Screenshot 2026-11-05 123532" alt="Sam Altman on X: "but only because...i actually do want the world to have tons of memory and people to put as much as they want in their computers, and it is fucking annoying that this was taken out of context.i have been arguing for the world to ramp up memory production for a long time."" src="https://cdn.mos.cms.futurecdn.net/UaujCRuojXkE2oHPcFciET-1920-80.png" mos="" align="middle" fullscreen="" width="765" height="396" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Sam Altman)</span></figcaption></figure></a><p>In an <a href="https://x.com/sama/status/2117846298472886419?a=CKpWaEjYwe9xTgit4Wg&amp;s=20">exchange on X</a> this week, Altman said that his remark was "taken out of context" and that he actually wants "the world to have tons of memory and people to put as much as they want in their computers."</p><p>"I have been arguing for the world to ramp up memory production for a long time," Altman said.</p><p>Altman's argument for increased memory production is no consolation to the tech enthusiasts and gamers who've been priced out of new hardware by his company and the rest of the AI industry. What we've been calling<a href="https://www.pcgamer.com/hardware/the-rampocalypse-support-group/"> the RAMpocalypse</a> hasn't just affected high-end PCs, either: In the lead-up to GTA 6's console launch, a PlayStation Pro is $900, if you can even find one. </p><p>The bitter reaction to Altman's comment also comes from concerns that big tech companies want to push gamers off of local hardware so that they can rent us cloud computing. For an audience that's already<a href="https://www.pcgamer.com/gaming-industry/us-lawmaker-calls-videogame-purchases-rentals-disguised-as-sales-when-you-pay-for-a-game-you-should-own-it/"> disgruntled about the erosion of game ownership</a>, the thought of losing control over our own hardware is not palatable, however much cloud streaming services like Nvidia's GeForce Now have improved.</p><p>That concern is now coupled with the generative AI-heavy future that tech leaders are pushing. If generative AI is best delivered as a cloud service, and the games industry is going to increasingly incorporate generative AI into games, it follows that we will be pushed toward cloud computing.</p><p>Nvidia DLSS pioneer Bryan Catanzaro made a comment to that effect at a GDC panel I attended earlier this year. Speaking about hypothetical games built with AI "world models," Catanzaro noted that we probably won't run those models locally, because "AI is fundamentally much more efficient in the cloud."</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/ai/sam-altman-is-annoyed-his-dram-comment-was-taken-out-of-context/</link>
                                                                            <description>
                            <![CDATA[ Him being annoyed has not made DRAM cheaper, however. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">c3KmQWrRHnisHmP5nGMgfC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/NZnFNXaxKppYC46BxGjkDG-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 05 Nov 2026 20:34:00 +0000</pubDate>                                                                                                                                <updated>Thu, 05 Nov 2026 20:47:38 +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/NZnFNXaxKppYC46BxGjkDG-1920-80.jpg">
                                                            <media:credit><![CDATA[Kyle Grillot/Bloomberg via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Sam Altman, chief executive officer of OpenAI Inc., during a media tour of the Stargate AI data center in Abilene, Texas, US, on Tuesday, Sept. 23, 2025. ]]></media:description>                                                            <media:text><![CDATA[Sam Altman, chief executive officer of OpenAI Inc., during a media tour of the Stargate AI data center in Abilene, Texas, US, on Tuesday, Sept. 23, 2025. ]]></media:text>
                                <media:title type="plain"><![CDATA[Sam Altman, chief executive officer of OpenAI Inc., during a media tour of the Stargate AI data center in Abilene, Texas, US, on Tuesday, Sept. 23, 2025. ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/NZnFNXaxKppYC46BxGjkDG-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>OpenAI CEO Sam Altman <a href="https://www.pcgamer.com/software/ai/sam-altman-argues-that-its-bad-you-want-dram-in-your-computer-and-not-a-data-center-actually/">said on a recent podcast</a> that "from a global allocation perspective, actually it's quite terrible to have everyone have a bunch of the world's limited supply of DRAM sitting in their own computer, and be used 5% of the time."</p><p>Altman was talking about people running AI models locally rather than relying on data centers, which allow RAM usage to be maxed out in this "very supply-constrained environment." What many heard and responded to—PC gamers in particular—was resentment directed at those of us who don't run AI companies, but would still like to have and use our own personal computers, as a treat.</p><a href="https://x.com/sama/status/2117846298472886419?a=WE51DPb_eMIgcOSOvY0&amp;s=20"><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:765px;"><p class="vanilla-image-block" style="padding-top:51.76%;"><img id="UaujCRuojXkE2oHPcFciET" name="Screenshot 2026-11-05 123532" alt="Sam Altman on X: "but only because...i actually do want the world to have tons of memory and people to put as much as they want in their computers, and it is fucking annoying that this was taken out of context.i have been arguing for the world to ramp up memory production for a long time."" src="https://cdn.mos.cms.futurecdn.net/UaujCRuojXkE2oHPcFciET-1920-80.png" mos="" align="middle" fullscreen="" width="765" height="396" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Sam Altman)</span></figcaption></figure></a><p>In an <a href="https://x.com/sama/status/2117846298472886419?a=CKpWaEjYwe9xTgit4Wg&amp;s=20">exchange on X</a> this week, Altman said that his remark was "taken out of context" and that he actually wants "the world to have tons of memory and people to put as much as they want in their computers."</p><p>"I have been arguing for the world to ramp up memory production for a long time," Altman said.</p><p>Altman's argument for increased memory production is no consolation to the tech enthusiasts and gamers who've been priced out of new hardware by his company and the rest of the AI industry. What we've been calling<a href="https://www.pcgamer.com/hardware/the-rampocalypse-support-group/"> the RAMpocalypse</a> hasn't just affected high-end PCs, either: In the lead-up to GTA 6's console launch, a PlayStation Pro is $900, if you can even find one. </p><p>The bitter reaction to Altman's comment also comes from concerns that big tech companies want to push gamers off of local hardware so that they can rent us cloud computing. For an audience that's already<a href="https://www.pcgamer.com/gaming-industry/us-lawmaker-calls-videogame-purchases-rentals-disguised-as-sales-when-you-pay-for-a-game-you-should-own-it/"> disgruntled about the erosion of game ownership</a>, the thought of losing control over our own hardware is not palatable, however much cloud streaming services like Nvidia's GeForce Now have improved.</p><p>That concern is now coupled with the generative AI-heavy future that tech leaders are pushing. If generative AI is best delivered as a cloud service, and the games industry is going to increasingly incorporate generative AI into games, it follows that we will be pushed toward cloud computing.</p><p>Nvidia DLSS pioneer Bryan Catanzaro made a comment to that effect at a GDC panel I attended earlier this year. Speaking about hypothetical games built with AI "world models," Catanzaro noted that we probably won't run those models locally, because "AI is fundamentally much more efficient in the cloud."</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Nvidia, Micron, and other AI stocks take a dive after elections ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Some air was let out of the AI bubble this morning as tech stocks took a dive. After seeing gains on Wednesday, the S&amp;P 500—the index which tracks big companies including Nvidia, Oracle, and other bettors on the AI buildout—has dropped by around 3.9% as of 2:30 pm EST.</p><p>Nvidia shares are now trading lower than they were at the start of the year. Memory and storage company Micron is down about 15%.</p><p>Democratic victories in the US midterms, and country-wide <a href="https://www.pcgamer.com/gaming-industry/data-centers-were-some-of-the-biggest-losers-in-last-nights-us-midterm-elections/">votes to curb data center expansion</a>, have contributed to the reduced confidence in AI stocks.</p><p>Speaking <a href="https://www.cnbc.com/2026/11/05/cnbcs-experts-on-whether-the-ai-trade-is-ending-and-what-investors-should-do-next.html" target="_blank">to CNBC</a>, One Point BFG Wealth Partners chief investment officer Peter Boockvar said that investors are now "questioning" the $1.2 trillion in AI-related capital expenditure Wall Street has forecast for next year. "Well, maybe that's not going to happen," he said.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/ai/nvidia-micron-and-other-ai-stocks-take-a-dive-after-elections/</link>
                                                                            <description>
                            <![CDATA[ No loud popping sounds yet, but an AI market correction appears to be underway. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Sp5TH5osZo8kkevi7rt5tY</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/8N9tGF8SW8x4iuVV9hNLRR-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 05 Nov 2026 19:32:47 +0000</pubDate>                                                                                                                                                                                                                                <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/8N9tGF8SW8x4iuVV9hNLRR-1920-80.jpg">
                                                            <media:credit><![CDATA[Nvidia]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A photo of the Nvidia logo.]]></media:description>                                                            <media:text><![CDATA[A photo of the Nvidia logo.]]></media:text>
                                <media:title type="plain"><![CDATA[A photo of the Nvidia logo.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/8N9tGF8SW8x4iuVV9hNLRR-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Some air was let out of the AI bubble this morning as tech stocks took a dive. After seeing gains on Wednesday, the S&amp;P 500—the index which tracks big companies including Nvidia, Oracle, and other bettors on the AI buildout—has dropped by around 3.9% as of 2:30 pm EST.</p><p>Nvidia shares are now trading lower than they were at the start of the year. Memory and storage company Micron is down about 15%.</p><p>Democratic victories in the US midterms, and country-wide <a href="https://www.pcgamer.com/gaming-industry/data-centers-were-some-of-the-biggest-losers-in-last-nights-us-midterm-elections/">votes to curb data center expansion</a>, have contributed to the reduced confidence in AI stocks.</p><p>Speaking <a href="https://www.cnbc.com/2026/11/05/cnbcs-experts-on-whether-the-ai-trade-is-ending-and-what-investors-should-do-next.html" target="_blank">to CNBC</a>, One Point BFG Wealth Partners chief investment officer Peter Boockvar said that investors are now "questioning" the $1.2 trillion in AI-related capital expenditure Wall Street has forecast for next year. "Well, maybe that's not going to happen," he said.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 45% of PC Gamer readers cleaned out their rig in the last six months and now I feel like a right grubchild for not remembering the last time I dusted mine ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I don't remember the last time I actually took a duster to my own rig. But in my defence, I only recently upgraded my motherboard and that required I remove pretty much everything out of my PC in the process of ripping out an old ASRock mobo I could no longer trust in favour of an Asus. So, that basic action meant that I had cleaned my PC by proxy in the past couple of months, though without <em>actively</em> cleaning it.</p><p>Which has me straddling both camps of PC Gamer reader, it seems. Because, while the biggest single majority of readers we polled can't remember when they last cleaned their PC, either, a healthy 45% of readers have actually given their rig a thorough once-over in just the past six months.</p><p>Now, I get that you have to change your bedding/towels/pants more often than that, but six months is but a mayfly's daydream in the life of your gaming PC. So, I applaud all of you taking rig maintenance so seriously.</p><p>This all came off the back of a recent weekly poll where we asked the question: <strong>When did you last dust/clean your gaming PC? </strong>Sure, over a quarter of you are living in filth, but I'm still proud of the rest of you.</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-1793889773992-jgl2ars37 *, #fv-chart-1793889773992-jgl2ars37 *:before, #fv-chart-1793889773992-jgl2ars37 *:after, #fv-chart-1793889773992-jgl2ars37-slideshow *, #fv-chart-1793889773992-jgl2ars37-slideshow *:before, #fv-chart-1793889773992-jgl2ars37-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793889773992-jgl2ars37, #fv-chart-1793889773992-jgl2ars37-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793889773992-jgl2ars37 { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793889773992-jgl2ars37.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793889773992-jgl2ars37.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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1793889773992-jgl2ars37-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793889773992-jgl2ars37-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-1793889773992-jgl2ars37-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-1793889773992-jgl2ars37-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793889773992-jgl2ars37-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793889773992-jgl2ars37-slideshow .fv-nav-btn.disabled, #fv-chart-1793889773992-jgl2ars37-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-1793889773992-jgl2ars37-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-1793889773992-jgl2ars37-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-1793889773992-jgl2ars37-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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793889773992-jgl2ars37 .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793889773992-jgl2ars37 .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793889773992-jgl2ars37 .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793889773992-jgl2ars37 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-bar-row, #fv-chart-1793889773992-jgl2ars37 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793889773992-jgl2ars37.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793889773992-jgl2ars37.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793889773992-jgl2ars37 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793889773992-jgl2ars37 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37 .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793889773992-jgl2ars37 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793889773992-jgl2ars37 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793889773992-jgl2ars37 .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793889773992-jgl2ars37 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793889773992-jgl2ars37 .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793889773992-jgl2ars37 .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37.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-1793889773992-jgl2ars37.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793889773992-jgl2ars37.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793889773992-jgl2ars37 .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793889773992-jgl2ars37 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37.mobile-view .fv-pie-container, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-row, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-stacked-product, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-grouped-bar-product, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-bar-row, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-stacked-product, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793889773992-jgl2ars37.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-1793889773992-jgl2ars37.mobile-view .fv-bar-label, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-grouped-product-title, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-bar-label, #fv-chart-1793889773992-jgl2ars37.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-1793889773992-jgl2ars37.mobile-view .fv-bar-container, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-cluster, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-bar-container, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793889773992-jgl2ars37.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-1793889773992-jgl2ars37.mobile-view .fv-x-axis-wrapper, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-x-axis-label-space, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-x-axis-chart-space, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-benchmark-title, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-dropdown-title, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-carousel-nav-btn, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-chart-title, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-chart-subhead, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-versus-header, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-versus-select-wrapper, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-versus-vs, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-versus-select-container, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-versus-select, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793889773992-jgl2ars37.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-1793889773992-jgl2ars37.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-commentary-inline, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-dials-grid, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-dial-title, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793889773992-jgl2ars37 .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793889773992-jgl2ars37 .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-bar-row, #fv-chart-1793889773992-jgl2ars37 .fv-stacked-product, #fv-chart-1793889773992-jgl2ars37 .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-bar-label, #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-bar-container, #fv-chart-1793889773992-jgl2ars37 .fv-bar-cluster { width: 100% !important; } #fv-chart-1793889773992-jgl2ars37 .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793889773992-jgl2ars37 .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793889773992-jgl2ars37 .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-x-axis-label-space { display: none !important; } #fv-chart-1793889773992-jgl2ars37 .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-stl-shop-all-logo, #fv-chart-1793889773992-jgl2ars37 .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793889773992-jgl2ars37 .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37 .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793889773992-jgl2ars37 .fv-dial-title { font-size: 16px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793889773992-jgl2ars37.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": "Wholesome",  "description": "When did you last dust/clean your gaming PC?",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-05T14:42:53.992Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Time immemorial (I don't remember and I'm annoyed you even asked)",    "Fairly recently, at least in the last 6 months",    "Pretty recently, in the last 4 weeks",    "Sometime in the last 12 months",    "Over 12 months ago",    "Just now (in the last 24 hours)",    "Votes (%)",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Fairly recently, at least in the last 6 months – Votes (%)",      "value": 23,      "unitText": "Percentage"    },    {      "@type": "PropertyValue",      "name": "Just now (in the last 24 hours) – Votes (%)",      "value": 5,      "unitText": "Percentage"    },    {      "@type": "PropertyValue",      "name": "Over 12 months ago – Votes (%)",      "value": 14,      "unitText": "Percentage"    },    {      "@type": "PropertyValue",      "name": "Pretty recently, in the last 4 weeks – Votes (%)",      "value": 17,      "unitText": "Percentage"    },    {      "@type": "PropertyValue",      "name": "Sometime in the last 12 months – Votes (%)",      "value": 15,      "unitText": "Percentage"    },    {      "@type": "PropertyValue",      "name": "Time immemorial (I don't remember and I'm annoyed you even asked) – Votes (%)",      "value": 26,      "unitText": "Percentage"    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-05T14:42:53.992Z","state":{"data":[{"productName":"Fairly recently, at least in the last 6 months","attribute":"Votes (%)","value":23,"unit":"Percentage","color":"","site":"PC Gamer"},{"productName":"Just now (in the last 24 hours)","attribute":"Votes (%)","value":5,"unit":"Percentage","color":"","site":"PC Gamer"},{"productName":"Over 12 months ago","attribute":"Votes (%)","value":14,"unit":"Percentage","color":"","site":"PC Gamer"},{"productName":"Pretty recently, in the last 4 weeks","attribute":"Votes (%)","value":17,"unit":"Percentage","color":"","site":"PC Gamer"},{"productName":"Sometime in the last 12 months","attribute":"Votes (%)","value":15,"unit":"Percentage","color":"","site":"PC Gamer"},{"productName":"Time immemorial (I don't remember and I'm annoyed you even asked)","attribute":"Votes (%)","value":26,"unit":"Percentage","color":"","site":"PC Gamer"}],"products":["Fairly recently, at least in the last 6 months","Just now (in the last 24 hours)","Over 12 months ago","Pretty recently, in the last 4 weeks","Sometime in the last 12 months","Time immemorial (I don't remember and I'm annoyed you even asked)"],"attributes":["Votes (%)"],"selectedProducts":["Time immemorial (I don't remember and I'm annoyed you even asked)","Fairly recently, at least in the last 6 months","Pretty recently, in the last 4 weeks","Sometime in the last 12 months","Over 12 months ago","Just now (in the last 24 hours)"],"selectedPrimaryProduct":null,"selectedAttributes":["Votes (%)"],"productColors":[{"productName":"Fairly recently, at least in the last 6 months","color":"#E33235"},{"productName":"Just now (in the last 24 hours)","color":"#FE9F58"},{"productName":"Over 12 months ago","color":"#1CA9C4"},{"productName":"Pretty recently, in the last 4 weeks","color":"#EB6F71"},{"productName":"Sometime in the last 12 months","color":"#FFC08B"},{"productName":"Time immemorial (I don't remember and I'm annoyed you even asked)","color":"#66C5D7"}],"initialProductColors":[{"productName":"Fairly recently, at least in the last 6 months","color":"#E33235"},{"productName":"Just now (in the last 24 hours)","color":"#FE9F58"},{"productName":"Over 12 months ago","color":"#1CA9C4"},{"productName":"Pretty recently, in the last 4 weeks","color":"#EB6F71"},{"productName":"Sometime in the last 12 months","color":"#FFC08B"},{"productName":"Time immemorial (I don't remember and I'm annoyed you even asked)","color":"#66C5D7"}],"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":"Wholesome","subhead":"When did you last dust/clean your gaming PC?","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":false,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":true,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1793889773992-jgl2ars37" 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">Wholesome</h3><p class="fv-chart-subhead">When did you last dust/clean your gaming PC?</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793889773992-jgl2ars37-bar-Votes (%)" data-chart-type="Bar" data-title="Votes (%)" data-subhead="When did you last dust/clean your gaming PC?" data-caption="" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Votes (%)</h4><div class="fv-bar-row"><div class="fv-bar-label ">Time immemorial (I don't remember and I'm annoyed you even asked)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 86.66666666666667%; background-color: #66C5D7;" data-target-width="86.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">26</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Fairly recently, at least in the last 6 months</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 76.66666666666667%; background-color: #E33235;" data-target-width="76.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">23</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Pretty recently, in the last 4 weeks</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 56.666666666666664%; background-color: #EB6F71;" 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">17</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Sometime in the last 12 months</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 50%; background-color: #FFC08B;" 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">15</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Over 12 months ago</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 46.666666666666664%; background-color: #1CA9C4;" data-target-width="46.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">14</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Just now (in the last 24 hours)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 16.666666666666664%; background-color: #FE9F58;" data-target-width="16.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">5</span></div></div></div></div><table class="sr-only"><caption>Votes (%) Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Time immemorial (I don't remember and I'm annoyed you even asked)</td><td>26</td></tr><tr><td>Fairly recently, at least in the last 6 months</td><td>23</td></tr><tr><td>Pretty recently, in the last 4 weeks</td><td>17</td></tr><tr><td>Sometime in the last 12 months</td><td>15</td></tr><tr><td>Over 12 months ago</td><td>14</td></tr><tr><td>Just now (in the last 24 hours)</td><td>5</td></tr></tbody></table></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-1793889773992-jgl2ars37', false); });      } else {        initialize('fv-chart-1793889773992-jgl2ars37', false);      }    })();      </script></div><p>Along with the 26% who can't remember, there are another 14% of readers who haven't lifted a finger to dust their PC in over a year. Then there are the paragons of virtue, the children of the light, the 5% who cleaned their PC only that very day they saw the poll. Blessed ones.</p><p>But if you look at the numbers in total, we are a culture in balance. There's a healthy 45% of readers who have cleaned their machines in the past six months, and on the other side another 40% of readers who haven't touched their PC with a duster in over a year, with a 15% fulcrum in the middle who have spent time cleansing their rig in the past 12 months.</p><p>Equilibrium is everything, but where do you sit on the cleanliness teeter-totter? And how important is it to you?</p><p>This week we want to know something else about good PC hygiene, but not of the physical variety, more of the firmware side of the equation. So we're asking: <strong>When was the last time you updated your main PC's BIOS?</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/45-percent-of-pc-gamer-readers-cleaned-out-their-rig-in-the-last-six-months-and-now-i-feel-like-a-right-grubchild-for-not-remembering-the-last-time-i-dusted-mine/</link>
                                                                            <description>
                            <![CDATA[ My, what a wholesome bunch you are. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">xPD5yxdFjTi7rddRqfjpmF</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/dYjhk7Px7Vfg5DJ9WppP2T-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 05 Nov 2026 15:33:41 +0000</pubDate>                                                                                                                                <updated>Thu, 05 Nov 2026 15:33:45 +0000</updated>
                                                                                                                                            <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/dYjhk7Px7Vfg5DJ9WppP2T-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The interior of a computer case with tons of dust on the fans and case.]]></media:description>                                                            <media:text><![CDATA[The interior of a computer case with tons of dust on the fans and case.]]></media:text>
                                <media:title type="plain"><![CDATA[The interior of a computer case with tons of dust on the fans and case.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/dYjhk7Px7Vfg5DJ9WppP2T-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I don't remember the last time I actually took a duster to my own rig. But in my defence, I only recently upgraded my motherboard and that required I remove pretty much everything out of my PC in the process of ripping out an old ASRock mobo I could no longer trust in favour of an Asus. So, that basic action meant that I had cleaned my PC by proxy in the past couple of months, though without <em>actively</em> cleaning it.</p><p>Which has me straddling both camps of PC Gamer reader, it seems. Because, while the biggest single majority of readers we polled can't remember when they last cleaned their PC, either, a healthy 45% of readers have actually given their rig a thorough once-over in just the past six months.</p><p>Now, I get that you have to change your bedding/towels/pants more often than that, but six months is but a mayfly's daydream in the life of your gaming PC. So, I applaud all of you taking rig maintenance so seriously.</p><p>This all came off the back of a recent weekly poll where we asked the question: <strong>When did you last dust/clean your gaming PC? </strong>Sure, over a quarter of you are living in filth, but I'm still proud of the rest of you.</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-1793889773992-jgl2ars37 *, #fv-chart-1793889773992-jgl2ars37 *:before, #fv-chart-1793889773992-jgl2ars37 *:after, #fv-chart-1793889773992-jgl2ars37-slideshow *, #fv-chart-1793889773992-jgl2ars37-slideshow *:before, #fv-chart-1793889773992-jgl2ars37-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793889773992-jgl2ars37, #fv-chart-1793889773992-jgl2ars37-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793889773992-jgl2ars37 { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793889773992-jgl2ars37.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793889773992-jgl2ars37.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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1793889773992-jgl2ars37-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793889773992-jgl2ars37-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-1793889773992-jgl2ars37-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-1793889773992-jgl2ars37-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793889773992-jgl2ars37-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793889773992-jgl2ars37-slideshow .fv-nav-btn.disabled, #fv-chart-1793889773992-jgl2ars37-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-1793889773992-jgl2ars37-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-1793889773992-jgl2ars37-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-1793889773992-jgl2ars37-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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793889773992-jgl2ars37 .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793889773992-jgl2ars37 .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793889773992-jgl2ars37 .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793889773992-jgl2ars37 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-bar-row, #fv-chart-1793889773992-jgl2ars37 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793889773992-jgl2ars37.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793889773992-jgl2ars37.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793889773992-jgl2ars37 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793889773992-jgl2ars37 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37 .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793889773992-jgl2ars37 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793889773992-jgl2ars37 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793889773992-jgl2ars37 .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793889773992-jgl2ars37 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793889773992-jgl2ars37 .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793889773992-jgl2ars37 .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37.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-1793889773992-jgl2ars37.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793889773992-jgl2ars37.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793889773992-jgl2ars37 .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793889773992-jgl2ars37 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37.mobile-view .fv-pie-container, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-row, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-stacked-product, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-grouped-bar-product, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-bar-row, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-stacked-product, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793889773992-jgl2ars37.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-1793889773992-jgl2ars37.mobile-view .fv-bar-label, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-grouped-product-title, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-bar-label, #fv-chart-1793889773992-jgl2ars37.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-1793889773992-jgl2ars37.mobile-view .fv-bar-container, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-cluster, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-bar-container, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793889773992-jgl2ars37.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-1793889773992-jgl2ars37.mobile-view .fv-x-axis-wrapper, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-x-axis-label-space, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-x-axis-chart-space, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-benchmark-title, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-dropdown-title, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-carousel-nav-btn, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-chart-title, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-chart-subhead, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-versus-header, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-versus-select-wrapper, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-versus-vs, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-versus-select-container, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-versus-select, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793889773992-jgl2ars37.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-1793889773992-jgl2ars37.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-bar-commentary-inline, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-dials-grid, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-dial-title, #fv-chart-1793889773992-jgl2ars37.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793889773992-jgl2ars37.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793889773992-jgl2ars37 .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793889773992-jgl2ars37 .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-bar-row, #fv-chart-1793889773992-jgl2ars37 .fv-stacked-product, #fv-chart-1793889773992-jgl2ars37 .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-bar-label, #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-bar-container, #fv-chart-1793889773992-jgl2ars37 .fv-bar-cluster { width: 100% !important; } #fv-chart-1793889773992-jgl2ars37 .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793889773992-jgl2ars37 .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793889773992-jgl2ars37 .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-x-axis-label-space { display: none !important; } #fv-chart-1793889773992-jgl2ars37 .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37 .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37 .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-1793889773992-jgl2ars37 .fv-stl-shop-all-logo, #fv-chart-1793889773992-jgl2ars37 .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793889773992-jgl2ars37 .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793889773992-jgl2ars37 .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793889773992-jgl2ars37 .fv-dial-title { font-size: 16px !important; } #fv-chart-1793889773992-jgl2ars37 .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793889773992-jgl2ars37.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": "Wholesome",  "description": "When did you last dust/clean your gaming PC?",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-05T14:42:53.992Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Time immemorial (I don't remember and I'm annoyed you even asked)",    "Fairly recently, at least in the last 6 months",    "Pretty recently, in the last 4 weeks",    "Sometime in the last 12 months",    "Over 12 months ago",    "Just now (in the last 24 hours)",    "Votes (%)",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Fairly recently, at least in the last 6 months – Votes (%)",      "value": 23,      "unitText": "Percentage"    },    {      "@type": "PropertyValue",      "name": "Just now (in the last 24 hours) – Votes (%)",      "value": 5,      "unitText": "Percentage"    },    {      "@type": "PropertyValue",      "name": "Over 12 months ago – Votes (%)",      "value": 14,      "unitText": "Percentage"    },    {      "@type": "PropertyValue",      "name": "Pretty recently, in the last 4 weeks – Votes (%)",      "value": 17,      "unitText": "Percentage"    },    {      "@type": "PropertyValue",      "name": "Sometime in the last 12 months – Votes (%)",      "value": 15,      "unitText": "Percentage"    },    {      "@type": "PropertyValue",      "name": "Time immemorial (I don't remember and I'm annoyed you even asked) – Votes (%)",      "value": 26,      "unitText": "Percentage"    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-05T14:42:53.992Z","state":{"data":[{"productName":"Fairly recently, at least in the last 6 months","attribute":"Votes (%)","value":23,"unit":"Percentage","color":"","site":"PC Gamer"},{"productName":"Just now (in the last 24 hours)","attribute":"Votes (%)","value":5,"unit":"Percentage","color":"","site":"PC Gamer"},{"productName":"Over 12 months ago","attribute":"Votes (%)","value":14,"unit":"Percentage","color":"","site":"PC Gamer"},{"productName":"Pretty recently, in the last 4 weeks","attribute":"Votes (%)","value":17,"unit":"Percentage","color":"","site":"PC Gamer"},{"productName":"Sometime in the last 12 months","attribute":"Votes (%)","value":15,"unit":"Percentage","color":"","site":"PC Gamer"},{"productName":"Time immemorial (I don't remember and I'm annoyed you even asked)","attribute":"Votes (%)","value":26,"unit":"Percentage","color":"","site":"PC Gamer"}],"products":["Fairly recently, at least in the last 6 months","Just now (in the last 24 hours)","Over 12 months ago","Pretty recently, in the last 4 weeks","Sometime in the last 12 months","Time immemorial (I don't remember and I'm annoyed you even asked)"],"attributes":["Votes (%)"],"selectedProducts":["Time immemorial (I don't remember and I'm annoyed you even asked)","Fairly recently, at least in the last 6 months","Pretty recently, in the last 4 weeks","Sometime in the last 12 months","Over 12 months ago","Just now (in the last 24 hours)"],"selectedPrimaryProduct":null,"selectedAttributes":["Votes (%)"],"productColors":[{"productName":"Fairly recently, at least in the last 6 months","color":"#E33235"},{"productName":"Just now (in the last 24 hours)","color":"#FE9F58"},{"productName":"Over 12 months ago","color":"#1CA9C4"},{"productName":"Pretty recently, in the last 4 weeks","color":"#EB6F71"},{"productName":"Sometime in the last 12 months","color":"#FFC08B"},{"productName":"Time immemorial (I don't remember and I'm annoyed you even asked)","color":"#66C5D7"}],"initialProductColors":[{"productName":"Fairly recently, at least in the last 6 months","color":"#E33235"},{"productName":"Just now (in the last 24 hours)","color":"#FE9F58"},{"productName":"Over 12 months ago","color":"#1CA9C4"},{"productName":"Pretty recently, in the last 4 weeks","color":"#EB6F71"},{"productName":"Sometime in the last 12 months","color":"#FFC08B"},{"productName":"Time immemorial (I don't remember and I'm annoyed you even asked)","color":"#66C5D7"}],"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":"Wholesome","subhead":"When did you last dust/clean your gaming PC?","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":false,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":true,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1793889773992-jgl2ars37" 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">Wholesome</h3><p class="fv-chart-subhead">When did you last dust/clean your gaming PC?</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793889773992-jgl2ars37-bar-Votes (%)" data-chart-type="Bar" data-title="Votes (%)" data-subhead="When did you last dust/clean your gaming PC?" data-caption="" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Votes (%)</h4><div class="fv-bar-row"><div class="fv-bar-label ">Time immemorial (I don't remember and I'm annoyed you even asked)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 86.66666666666667%; background-color: #66C5D7;" data-target-width="86.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">26</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Fairly recently, at least in the last 6 months</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 76.66666666666667%; background-color: #E33235;" data-target-width="76.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">23</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Pretty recently, in the last 4 weeks</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 56.666666666666664%; background-color: #EB6F71;" 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">17</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Sometime in the last 12 months</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 50%; background-color: #FFC08B;" 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">15</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Over 12 months ago</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 46.666666666666664%; background-color: #1CA9C4;" data-target-width="46.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">14</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Just now (in the last 24 hours)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 16.666666666666664%; background-color: #FE9F58;" data-target-width="16.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">5</span></div></div></div></div><table class="sr-only"><caption>Votes (%) Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Time immemorial (I don't remember and I'm annoyed you even asked)</td><td>26</td></tr><tr><td>Fairly recently, at least in the last 6 months</td><td>23</td></tr><tr><td>Pretty recently, in the last 4 weeks</td><td>17</td></tr><tr><td>Sometime in the last 12 months</td><td>15</td></tr><tr><td>Over 12 months ago</td><td>14</td></tr><tr><td>Just now (in the last 24 hours)</td><td>5</td></tr></tbody></table></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-1793889773992-jgl2ars37', false); });      } else {        initialize('fv-chart-1793889773992-jgl2ars37', false);      }    })();      </script></div><p>Along with the 26% who can't remember, there are another 14% of readers who haven't lifted a finger to dust their PC in over a year. Then there are the paragons of virtue, the children of the light, the 5% who cleaned their PC only that very day they saw the poll. Blessed ones.</p><p>But if you look at the numbers in total, we are a culture in balance. There's a healthy 45% of readers who have cleaned their machines in the past six months, and on the other side another 40% of readers who haven't touched their PC with a duster in over a year, with a 15% fulcrum in the middle who have spent time cleansing their rig in the past 12 months.</p><p>Equilibrium is everything, but where do you sit on the cleanliness teeter-totter? And how important is it to you?</p><p>This week we want to know something else about good PC hygiene, but not of the physical variety, more of the firmware side of the equation. So we're asking: <strong>When was the last time you updated your main PC's BIOS?</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Experimental project beats Intel in bringing 'real Intel XeSS super resolution' to SteamOS and Proton games on Linux ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Intel has already committed to <a href="https://www.pcgamer.com/hardware/handheld-gaming-pcs/intel-bringing-faster-upscaler-to-valves-proton-xmx-accelerated-xess-could-come-to-steamos-in-boost-to-future-intel-powered-handheld-gaming-pcs/" target="_blank">bringing its XMX-powered upscaling and frame generation tech to Linux</a> via Valve's Proton compatibility layer, but one enterprising developer is clearly not willing to wait for the chip behemoth to get it working and has released an experimental version on Github (via <a href="https://www.phoronix.com/news/Intel-XeSS-On-XMX-Proton" target="_blank">Phoronix</a>).</p><p>This <a href="https://github.com/HHHHanasak1/xess-xmx-linux" target="_blank">new release</a> promises "real Intel XeSS super resolution and XeSS Frame Generation inside Proton games, running on the GPU's XMX (matrix) units instead of the DP4a fallback that stock Wine/Proton gets." It was built on a OneXPlayer 3 handheld running the same Intel G3 Extreme chip that ships in the latest <a href="https://www.pcgamer.com/hardware/handheld-gaming-pcs/msi-claw-8-ex-ai-cg3em-review/" target="_blank">MSI Claw</a> and the new <a href="https://www.pcgamer.com/hardware/handheld-gaming-pcs/acers-predator-atlas-8-handheld-gaming-pc-with-new-intel-g-series-chips-looks-a-lot-like-a-beefier-lenovo-legion-go-s/" target="_blank">Acer Predator Atlas 8</a>, but has also been tested on a discrete <a href="https://www.pcgamer.com/hardware/graphics-cards/intel-arc-b580-review/" target="_blank">Arc B580 GPU</a>, too.</p><p>And it's already delivering a 29% performance boost in Cyberpunk just from the switch to XMX processing of upscaling, and when you throw in XeSS Frame Generation you're looking at a 145% performance boost. That is just one game, however, and the only other benchmark they note is for Forza Horizon 6 where the performance boosts are not quite so great, with a 16% bump from the XMX implementation. Though again you are looking at a healthy frame rate increase from 3x frame generation.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script><p>The installation seems surprisingly straightforward; you just unpack the release archive somewhere safe and run the install command. Then every game will run with the patched drivers without the need for any special launch options.</p><p>The one note is that you must be running the native Steam client to support the XMX switch in Proton, with the Flatpak Steam client not being currently supported.</p><p>It's great to see this being picked up and running with Intel's Arc GPUs right now. The ideal would be to have Intel get the official release out and available for anyone running SteamOS, or any other Linux distro, with their Arc-based graphics silicon, but given how straightforward this implementation seems to be, it's a great stop gap measure.</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:3392px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xGyYPnGX2u6BMLVR6c75nV" name="intel-arc-b580-16" alt="Intel Arc B580 graphics card" src="https://cdn.mos.cms.futurecdn.net/xGyYPnGX2u6BMLVR6c75nV-1920-80.jpg" mos="" align="middle" fullscreen="" width="3392" height="1908" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And it's worth noting that while graphics card prices have become an apocalyptic nightmare, where you might have to barter a kidney or two just for the privilege of potentially buying an RTX 5060, the two Intel Battlemage cards are still <em>relatively</em> affordable. The <a href="https://www.newegg.com/asrock-challenger-b580-cl-12go-arc-b580-12gb-graphics-card-double-fans/p/N82E16814930131" target="_blank">Arc B580 is around $330</a> and the <a href="https://www.bestbuy.com/product/asrock-intel-arc-b570-challenger-10gb-gddr6-oc-pcie-4-0-graphic-card-black/C34FQFQYJF/sku/11013252" target="_blank">Arc B570 is a shade over $300</a> today. That makes them solid 'budget' cards, and now they're becoming great options for that little Linux gaming tower you always wanted to build, too.</p><p>Now, if only those excellent G3 Extreme handhelds weren't so damned expensive…</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/handheld-gaming-pcs/experimental-project-beats-intel-in-bringing-real-intel-xess-super-resolution-to-steamos-and-proton-games-on-linux/</link>
                                                                            <description>
                            <![CDATA[ Intel has promised to do it itself, but Linux devs are an impatient bunch. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">FvEJBEQupPDpYcvTvE5PkK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/xqNYPKPfuhqvZCqbXacdTR-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 05 Nov 2026 12:26:37 +0000</pubDate>                                                                                                                                <updated>Thu, 05 Nov 2026 14:51:29 +0000</updated>
                                                                                                                                            <category><![CDATA[Handheld Gaming PCs]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Gaming PCs]]></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/xqNYPKPfuhqvZCqbXacdTR-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[MSI Claw 8 EX AI+]]></media:description>                                                            <media:text><![CDATA[MSI Claw 8 EX AI+]]></media:text>
                                <media:title type="plain"><![CDATA[MSI Claw 8 EX AI+]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/xqNYPKPfuhqvZCqbXacdTR-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Intel has already committed to <a href="https://www.pcgamer.com/hardware/handheld-gaming-pcs/intel-bringing-faster-upscaler-to-valves-proton-xmx-accelerated-xess-could-come-to-steamos-in-boost-to-future-intel-powered-handheld-gaming-pcs/" target="_blank">bringing its XMX-powered upscaling and frame generation tech to Linux</a> via Valve's Proton compatibility layer, but one enterprising developer is clearly not willing to wait for the chip behemoth to get it working and has released an experimental version on Github (via <a href="https://www.phoronix.com/news/Intel-XeSS-On-XMX-Proton" target="_blank">Phoronix</a>).</p><p>This <a href="https://github.com/HHHHanasak1/xess-xmx-linux" target="_blank">new release</a> promises "real Intel XeSS super resolution and XeSS Frame Generation inside Proton games, running on the GPU's XMX (matrix) units instead of the DP4a fallback that stock Wine/Proton gets." It was built on a OneXPlayer 3 handheld running the same Intel G3 Extreme chip that ships in the latest <a href="https://www.pcgamer.com/hardware/handheld-gaming-pcs/msi-claw-8-ex-ai-cg3em-review/" target="_blank">MSI Claw</a> and the new <a href="https://www.pcgamer.com/hardware/handheld-gaming-pcs/acers-predator-atlas-8-handheld-gaming-pc-with-new-intel-g-series-chips-looks-a-lot-like-a-beefier-lenovo-legion-go-s/" target="_blank">Acer Predator Atlas 8</a>, but has also been tested on a discrete <a href="https://www.pcgamer.com/hardware/graphics-cards/intel-arc-b580-review/" target="_blank">Arc B580 GPU</a>, too.</p><p>And it's already delivering a 29% performance boost in Cyberpunk just from the switch to XMX processing of upscaling, and when you throw in XeSS Frame Generation you're looking at a 145% performance boost. That is just one game, however, and the only other benchmark they note is for Forza Horizon 6 where the performance boosts are not quite so great, with a 16% bump from the XMX implementation. Though again you are looking at a healthy frame rate increase from 3x frame generation.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script><p>The installation seems surprisingly straightforward; you just unpack the release archive somewhere safe and run the install command. Then every game will run with the patched drivers without the need for any special launch options.</p><p>The one note is that you must be running the native Steam client to support the XMX switch in Proton, with the Flatpak Steam client not being currently supported.</p><p>It's great to see this being picked up and running with Intel's Arc GPUs right now. The ideal would be to have Intel get the official release out and available for anyone running SteamOS, or any other Linux distro, with their Arc-based graphics silicon, but given how straightforward this implementation seems to be, it's a great stop gap measure.</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:3392px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xGyYPnGX2u6BMLVR6c75nV" name="intel-arc-b580-16" alt="Intel Arc B580 graphics card" src="https://cdn.mos.cms.futurecdn.net/xGyYPnGX2u6BMLVR6c75nV-1920-80.jpg" mos="" align="middle" fullscreen="" width="3392" height="1908" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And it's worth noting that while graphics card prices have become an apocalyptic nightmare, where you might have to barter a kidney or two just for the privilege of potentially buying an RTX 5060, the two Intel Battlemage cards are still <em>relatively</em> affordable. The <a href="https://www.newegg.com/asrock-challenger-b580-cl-12go-arc-b580-12gb-graphics-card-double-fans/p/N82E16814930131" target="_blank">Arc B580 is around $330</a> and the <a href="https://www.bestbuy.com/product/asrock-intel-arc-b570-challenger-10gb-gddr6-oc-pcie-4-0-graphic-card-black/C34FQFQYJF/sku/11013252" target="_blank">Arc B570 is a shade over $300</a> today. That makes them solid 'budget' cards, and now they're becoming great options for that little Linux gaming tower you always wanted to build, too.</p><p>Now, if only those excellent G3 Extreme handhelds weren't so damned expensive…</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ FSR 4.1.2 now on Xbox and Xbox handhelds, just in time for a certain big GTA 6-shaped game ]]></title>
                                                                                                <dc:content><![CDATA[ <p>With the Xbox Series X and S rapidly ageing, it looks unlikely that the next console generation will be affordable at all. As such, I've been looking at AMD to bring its modern GPU feature set to older hardware to stop me from having to upgrade. It seems it felt my gaze, and Xbox Series X, S, and Xbox handhelds now have FSR 4.1.2 support, which developers can turn on in their games.</p><p><a href="https://gpuopen.com/learn/amd-fsr-upscaling-412-xbox/" target="_blank">AMD has just updated its Game Development Kit</a> with FSR 4.1.2 and two new upscaling models for Xbox Series X and S: the Full INT8 model and the more efficient Lite INT8 model. The Lite one is half the size of the Full one and has a lower upscaling cost. Either console can use either model, but game developers are able to choose which type they implement. </p><p>AMD has put out a GDK sample for developers to test, which "switches between the Full and Lite models at runtime, so developers can compare image quality and upscaling cost in the same scene. Upscaler memory is the same for both models because it depends on render and display resolution, not on the model. That makes the choice a performance trade-off, not a memory one."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script><p>Interestingly, <a href="https://www.youtube.com/watch?v=PKIzzXuq5Vg&amp;t=533s" target="_blank">Ancient Gameplays tested the Lite and Full models</a> two weeks ago and noticed that Lite works better with lower input resolution and even removes some visual noise that is kept in the Full model. They say the "Lite model needs to be more stable because it will be aimed at handheld devices, iGPUs from laptops, and the render resolution on those cases will be way, way lower."</p><p>FSR 4.1.2 is also now supported on Xbox handhelds (the top-end ROG Xbox Ally range to start with), though this is seemingly only the one "highly efficient INT8 model", and developers can only get access via <a href="https://rog.asus.com/articles/rog-ally/amd-fsr-upscaling-41-is-coming-to-the-rog-xbox-ally-x-and-x20-in-preview/" target="_blank">Asus' preview driver</a> for the Xbox Ally X and X20. AMD says "it upgrades DirectX 12 games with FSR 3.1 or newer, and ROG Xbox Ally support follows in a later update."</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:2344px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="Nb5AHKX39dwvkWbjNGSvWf" name="GTA-6-Jason-Elevator" alt="Grand Theft Auto 6" src="https://cdn.mos.cms.futurecdn.net/Nb5AHKX39dwvkWbjNGSvWf-1920-80.jpg" mos="" align="middle" fullscreen="" width="2344" height="1319" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Rockstar)</span></figcaption></figure><p>How developers choose to integrate FSR 4.1.2 on Xbox Series X and S will be on a case-by-case basis, but the Lite model being solid certainly suggests good things for future optimisations. And <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">RX 6000 graphics cards got FSR 4.1 early</a>, just a few weeks ago, giving older hardware a little bit more performance. </p><p>This is all just in time for a huge launch on Xbox: <a href="https://www.pcgamer.com/games/november-games-2026/" target="_blank">Grand Theft Auto 6</a>. The game officially launches on November 19, and being a Rockstar game, it's looking like it will be a real graphical showcase. But playing on six-year-old hardware could pose a challenge, so getting an upscaling hand just before the game reaches the starting line surely can't hurt its reception. You won't be able to play the game on Xbox handhelds until the PC port (they aren't really Xbox consoles after all), but I won't be complaining when I'm squeezing a bit more performance out of my Z2 Extreme chip in everything else. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/fsr-4-1-2-now-on-xbox-and-xbox-handhelds-just-in-time-for-a-certain-big-gta-6-shaped-game/</link>
                                                                            <description>
                            <![CDATA[ Help me upscalers, you're my only hope. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">hoAU7Gdbr3HofEfShgf4FZ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/cGvg75BzHjKXRa6iF2zieP-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 05 Nov 2026 12:12:38 +0000</pubDate>                                                                                                                                                                                                                                <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/cGvg75BzHjKXRa6iF2zieP-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Microsoft Xbox Series X]]></media:description>                                                            <media:text><![CDATA[Microsoft Xbox Series X]]></media:text>
                                <media:title type="plain"><![CDATA[Microsoft Xbox Series X]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/cGvg75BzHjKXRa6iF2zieP-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>With the Xbox Series X and S rapidly ageing, it looks unlikely that the next console generation will be affordable at all. As such, I've been looking at AMD to bring its modern GPU feature set to older hardware to stop me from having to upgrade. It seems it felt my gaze, and Xbox Series X, S, and Xbox handhelds now have FSR 4.1.2 support, which developers can turn on in their games.</p><p><a href="https://gpuopen.com/learn/amd-fsr-upscaling-412-xbox/" target="_blank">AMD has just updated its Game Development Kit</a> with FSR 4.1.2 and two new upscaling models for Xbox Series X and S: the Full INT8 model and the more efficient Lite INT8 model. The Lite one is half the size of the Full one and has a lower upscaling cost. Either console can use either model, but game developers are able to choose which type they implement. </p><p>AMD has put out a GDK sample for developers to test, which "switches between the Full and Lite models at runtime, so developers can compare image quality and upscaling cost in the same scene. Upscaler memory is the same for both models because it depends on render and display resolution, not on the model. That makes the choice a performance trade-off, not a memory one."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script><p>Interestingly, <a href="https://www.youtube.com/watch?v=PKIzzXuq5Vg&amp;t=533s" target="_blank">Ancient Gameplays tested the Lite and Full models</a> two weeks ago and noticed that Lite works better with lower input resolution and even removes some visual noise that is kept in the Full model. They say the "Lite model needs to be more stable because it will be aimed at handheld devices, iGPUs from laptops, and the render resolution on those cases will be way, way lower."</p><p>FSR 4.1.2 is also now supported on Xbox handhelds (the top-end ROG Xbox Ally range to start with), though this is seemingly only the one "highly efficient INT8 model", and developers can only get access via <a href="https://rog.asus.com/articles/rog-ally/amd-fsr-upscaling-41-is-coming-to-the-rog-xbox-ally-x-and-x20-in-preview/" target="_blank">Asus' preview driver</a> for the Xbox Ally X and X20. AMD says "it upgrades DirectX 12 games with FSR 3.1 or newer, and ROG Xbox Ally support follows in a later update."</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:2344px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="Nb5AHKX39dwvkWbjNGSvWf" name="GTA-6-Jason-Elevator" alt="Grand Theft Auto 6" src="https://cdn.mos.cms.futurecdn.net/Nb5AHKX39dwvkWbjNGSvWf-1920-80.jpg" mos="" align="middle" fullscreen="" width="2344" height="1319" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Rockstar)</span></figcaption></figure><p>How developers choose to integrate FSR 4.1.2 on Xbox Series X and S will be on a case-by-case basis, but the Lite model being solid certainly suggests good things for future optimisations. And <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">RX 6000 graphics cards got FSR 4.1 early</a>, just a few weeks ago, giving older hardware a little bit more performance. </p><p>This is all just in time for a huge launch on Xbox: <a href="https://www.pcgamer.com/games/november-games-2026/" target="_blank">Grand Theft Auto 6</a>. The game officially launches on November 19, and being a Rockstar game, it's looking like it will be a real graphical showcase. But playing on six-year-old hardware could pose a challenge, so getting an upscaling hand just before the game reaches the starting line surely can't hurt its reception. You won't be able to play the game on Xbox handhelds until the PC port (they aren't really Xbox consoles after all), but I won't be complaining when I'm squeezing a bit more performance out of my Z2 Extreme chip in everything else. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Switch 2 sales dropped 37% this summer, mostly before the price hike hit; Nintendo now expects sales to slump 16.9% in console's second year ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Switch 2 sales have plummeted over the summer months compared to this time last year; accounting for a drop of nearly four million units. That's sure to be a warning sign for Nintendo, especially as the company increased the price for the handheld across the globe at the start of September—near the end of the period it's currently reporting—which could have an impact on future sales over the busy holiday period.</p><p>Nintendo has reported its sales figures from April 1, 2026 until September 30, 2026. It calls this period 'FY27 Q1-Q2' because companies are weird. Nevertheless, it's the previous six months of the year, and it's been a tough one for hardware.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script><p>The <a href="https://www.pcgamer.com/hardware/nintendo-switch-2-review/" target="_blank">Switch 2</a> sold 6.49 million units: a 3.87 million unit reduction compared to the 10.36 million in the same period last year. That makes a change from the original Switch, which sold in increasingly larger amounts for the first five years of its life. </p><p>The Switch sold just 1.27 million units during the same period, down 32.7%, but that's not a huge surprise for the outgoing handheld.</p><p>So, what to make of the dip? It is a marked reduction in Switch 2 sales compared to its bumper launch year. But that's the thing. The Switch 2 sold incredibly well in its first year; 19.8 million units sold. That's a bigger success story than the Switch. It launched just before the end of Nintendo's weird financial years but reached around 17.7 million units sold by the end of its first full year. Though it did go on to double that figure the following year, which the Switch 2 is likely to fail to achieve.</p><p><a href="https://www.pcgamer.com/hardware/nintendo-is-raising-the-price-of-the-switch-2-later-this-year/" target="_blank">Nintendo raised the price of the Switch 2</a> over the course of this summer period. It first announced the price increase in May, 2026; however, it didn't implement it until September 1, 2026 in most of the affected regions (US, Canada, Europe). Only Japan saw a sudden price increase effective in May, 2026. </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:1104px;"><p class="vanilla-image-block" style="padding-top:55.25%;"><img id="eQQ48atdiKWwQiR9sQEJX" name="1793878962.jpg" alt="Table showing Nintento Switch 2 sales for six months of its second year" src="https://cdn.mos.cms.futurecdn.net/eQQ48atdiKWwQiR9sQEJX-1920-80.jpg" mos="" align="middle" fullscreen="" width="1104" height="610" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nintendo)</span></figcaption></figure><p>The company asks $500 for the console, an increase of $50 over its original launch price. It blamed "changes in market conditions" at the time, which is common parlance for 'memory prices are ruining everything.'</p><p>The most recent reporting period ended on September 30. So we don't quite know what impact that $50 price hike will have on the success of the handheld from these figures alone; however, Nintendo has reevaluated its forecast up until March 31, 2027 at just 16.5 million Switch 2 units sold; down from 19.86 million in the previous 12-month period. That's a 16.9% reduction.</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:1104px;"><p class="vanilla-image-block" style="padding-top:55.25%;"><img id="U7nxz6viDPdwHm5gX9rMEh" name="1793878897.jpg" alt="Table showing forecasted Nintento Switch 2 sales in its second year" src="https://cdn.mos.cms.futurecdn.net/U7nxz6viDPdwHm5gX9rMEh-1920-80.jpg" mos="" align="middle" fullscreen="" width="1104" height="610" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nintendo)</span></figcaption></figure><p>"Although unit sales of Nintendo Switch 2 hardware declined compared to the same period of last fiscal year, many consumers continued to adopt the system, spurred on by factors like the release of new titles," Nintendo says. </p><p>And it's true, games are flying off the shelves for the Switch 2 relative to last year. Up 18.8%, from 20.62 million to 24.49 million. A certain remake of The Legend of Zelda: Ocarina of Time might help bump those figures, with the game coming out today. Even Switch titles are selling like hot cakes; the majority of game sales remain with the bulk of players on the last-gen console. Up 6.8%, from 61.56 million to 65.73 million. </p><p>So it's not all bad for Nintendo—it still has one of the best-selling consoles on its hands. It's just been curtailed by the pesky memory and cost of living crises. Haven't we all?</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/handheld-gaming-pcs/switch-2-sales-dropped-37-percent-this-summer-mostly-before-the-price-hike-hit-nintendo-now-expects-sales-to-slump-16-9-percent-in-consoles-second-year/</link>
                                                                            <description>
                            <![CDATA[ The Switch 2 is still comfortably ahead of the Switch in its first year, but it might not be ahead by its second. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3EvgiEEiBwicHmjtdbCPA3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/FaDrpfsLEeJM5HDQzSuqLG-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 05 Nov 2026 11:53:38 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Handheld Gaming PCs]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Gaming PCs]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&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/FaDrpfsLEeJM5HDQzSuqLG-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A picture of Nintendo Switch 2 dock with the console inside, and the Switch 2 box behind it]]></media:description>                                                            <media:text><![CDATA[A picture of Nintendo Switch 2 dock with the console inside, and the Switch 2 box behind it]]></media:text>
                                <media:title type="plain"><![CDATA[A picture of Nintendo Switch 2 dock with the console inside, and the Switch 2 box behind it]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/FaDrpfsLEeJM5HDQzSuqLG-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Switch 2 sales have plummeted over the summer months compared to this time last year; accounting for a drop of nearly four million units. That's sure to be a warning sign for Nintendo, especially as the company increased the price for the handheld across the globe at the start of September—near the end of the period it's currently reporting—which could have an impact on future sales over the busy holiday period.</p><p>Nintendo has reported its sales figures from April 1, 2026 until September 30, 2026. It calls this period 'FY27 Q1-Q2' because companies are weird. Nevertheless, it's the previous six months of the year, and it's been a tough one for hardware.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script><p>The <a href="https://www.pcgamer.com/hardware/nintendo-switch-2-review/" target="_blank">Switch 2</a> sold 6.49 million units: a 3.87 million unit reduction compared to the 10.36 million in the same period last year. That makes a change from the original Switch, which sold in increasingly larger amounts for the first five years of its life. </p><p>The Switch sold just 1.27 million units during the same period, down 32.7%, but that's not a huge surprise for the outgoing handheld.</p><p>So, what to make of the dip? It is a marked reduction in Switch 2 sales compared to its bumper launch year. But that's the thing. The Switch 2 sold incredibly well in its first year; 19.8 million units sold. That's a bigger success story than the Switch. It launched just before the end of Nintendo's weird financial years but reached around 17.7 million units sold by the end of its first full year. Though it did go on to double that figure the following year, which the Switch 2 is likely to fail to achieve.</p><p><a href="https://www.pcgamer.com/hardware/nintendo-is-raising-the-price-of-the-switch-2-later-this-year/" target="_blank">Nintendo raised the price of the Switch 2</a> over the course of this summer period. It first announced the price increase in May, 2026; however, it didn't implement it until September 1, 2026 in most of the affected regions (US, Canada, Europe). Only Japan saw a sudden price increase effective in May, 2026. </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:1104px;"><p class="vanilla-image-block" style="padding-top:55.25%;"><img id="eQQ48atdiKWwQiR9sQEJX" name="1793878962.jpg" alt="Table showing Nintento Switch 2 sales for six months of its second year" src="https://cdn.mos.cms.futurecdn.net/eQQ48atdiKWwQiR9sQEJX-1920-80.jpg" mos="" align="middle" fullscreen="" width="1104" height="610" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nintendo)</span></figcaption></figure><p>The company asks $500 for the console, an increase of $50 over its original launch price. It blamed "changes in market conditions" at the time, which is common parlance for 'memory prices are ruining everything.'</p><p>The most recent reporting period ended on September 30. So we don't quite know what impact that $50 price hike will have on the success of the handheld from these figures alone; however, Nintendo has reevaluated its forecast up until March 31, 2027 at just 16.5 million Switch 2 units sold; down from 19.86 million in the previous 12-month period. That's a 16.9% reduction.</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:1104px;"><p class="vanilla-image-block" style="padding-top:55.25%;"><img id="U7nxz6viDPdwHm5gX9rMEh" name="1793878897.jpg" alt="Table showing forecasted Nintento Switch 2 sales in its second year" src="https://cdn.mos.cms.futurecdn.net/U7nxz6viDPdwHm5gX9rMEh-1920-80.jpg" mos="" align="middle" fullscreen="" width="1104" height="610" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nintendo)</span></figcaption></figure><p>"Although unit sales of Nintendo Switch 2 hardware declined compared to the same period of last fiscal year, many consumers continued to adopt the system, spurred on by factors like the release of new titles," Nintendo says. </p><p>And it's true, games are flying off the shelves for the Switch 2 relative to last year. Up 18.8%, from 20.62 million to 24.49 million. A certain remake of The Legend of Zelda: Ocarina of Time might help bump those figures, with the game coming out today. Even Switch titles are selling like hot cakes; the majority of game sales remain with the bulk of players on the last-gen console. Up 6.8%, from 61.56 million to 65.73 million. </p><p>So it's not all bad for Nintendo—it still has one of the best-selling consoles on its hands. It's just been curtailed by the pesky memory and cost of living crises. Haven't we all?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'How can prices fall when there's nothing left?' TeamGroup CEO reckons supply-demand memory equilibrium may not happen until late 2028 at the earliest ]]></title>
                                                                                                <dc:content><![CDATA[ <p>You may well be sick of reading about it—I am certainly sick to my stomach writing about it—but here's another doom-filled prophecy about the continuing memory crisis. Doesn't seem quite so funny calling it a <a href="https://www.pcgamer.com/hardware/the-rampocalypse-support-group/" target="_blank">RAMpocalypse</a> now. The CEO of memory module maker TeamGroup, Chen Ching, is claiming we still haven't seen the worst of the supply crisis, and that even in 2027 "there will be no downward price trend whatsoever."</p><p>According to a report from <a href="https://finance.biggo.com/news/TW_4967.TW_2026-11-02" target="_blank">BigGo Finance</a>, which cropped up while I was searching for a credible source after <a href="https://news.mydrivers.com/1/1162/1162635.htm" target="_blank">mydrivers</a> wrote about it, Chen thinks the worst of the shortage will be from now until the middle of next year, and that we're likely to get to a point with DRAM that "even money can't buy goods".</p><p>"Right now you can still buy goods, they're just expensive," he says. "In a little while, you may not be able to buy goods at all."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script><p>This is all on the back of an earnings call for the company, where it announced record quarterly revenue of NT$10.139 billion (around $308 million), which is an increase of 34% compared with last quarter.</p><p>TeamGroup, like most memory manufacturers looking to capitalise on the current crisis, is prioritising where it can get the most cash from, and that comes from selling direct to data centre and enterprise folk, rather than us normies. Just as chatty <a href="https://www.pcgamer.com/software/ai/sam-altman-argues-that-its-bad-you-want-dram-in-your-computer-and-not-a-data-center-actually/" target="_blank">Sam Altman</a> would like it to be. Fully two thirds of TeamGroup's business is now selling into other businesses, where previously that percentage was just a quarter, with the majority going into the consumer market.</p><p>Chen claims its relationships with vendors will help it continue to get inventory, even if it has to pay premium spot prices for it. But he notes that supply will continue to be the big problem, suggesting that supply and demand equilibrium is unlikely to be achieved any time before the second half of 2028, or potentially even later. </p><p>And, obviously, that means prices will remain high, or more likely keep rising. "How can prices fall when there's nothing left?" he questions like a good little doom-monger. Good 'ere, innit?</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/memory/how-can-prices-fall-when-theres-nothing-left-teamgroup-ceo-reckons-supply-demand-memory-equilibrium-may-not-happen-until-late-2028-at-the-earliest/</link>
                                                                            <description>
                            <![CDATA[ "Right now you can still buy goods, they're just expensive. In a little while, you may not be able to buy goods at all." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">GcaaSuLZpsU8MyNaqVRJg8</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/uBfmjnPA5yrszBDS5EtWKZ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 04 Nov 2026 16:39:11 +0000</pubDate>                                                                                                                                <updated>Wed, 04 Nov 2026 16:40:46 +0000</updated>
                                                                                                                                            <category><![CDATA[Memory]]></category>
                                                    <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/uBfmjnPA5yrszBDS5EtWKZ-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Teamgroup T-Force Xtreem DDR5 memory sticks]]></media:description>                                                            <media:text><![CDATA[Teamgroup T-Force Xtreem DDR5 memory sticks]]></media:text>
                                <media:title type="plain"><![CDATA[Teamgroup T-Force Xtreem DDR5 memory sticks]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/uBfmjnPA5yrszBDS5EtWKZ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>You may well be sick of reading about it—I am certainly sick to my stomach writing about it—but here's another doom-filled prophecy about the continuing memory crisis. Doesn't seem quite so funny calling it a <a href="https://www.pcgamer.com/hardware/the-rampocalypse-support-group/" target="_blank">RAMpocalypse</a> now. The CEO of memory module maker TeamGroup, Chen Ching, is claiming we still haven't seen the worst of the supply crisis, and that even in 2027 "there will be no downward price trend whatsoever."</p><p>According to a report from <a href="https://finance.biggo.com/news/TW_4967.TW_2026-11-02" target="_blank">BigGo Finance</a>, which cropped up while I was searching for a credible source after <a href="https://news.mydrivers.com/1/1162/1162635.htm" target="_blank">mydrivers</a> wrote about it, Chen thinks the worst of the shortage will be from now until the middle of next year, and that we're likely to get to a point with DRAM that "even money can't buy goods".</p><p>"Right now you can still buy goods, they're just expensive," he says. "In a little while, you may not be able to buy goods at all."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script><p>This is all on the back of an earnings call for the company, where it announced record quarterly revenue of NT$10.139 billion (around $308 million), which is an increase of 34% compared with last quarter.</p><p>TeamGroup, like most memory manufacturers looking to capitalise on the current crisis, is prioritising where it can get the most cash from, and that comes from selling direct to data centre and enterprise folk, rather than us normies. Just as chatty <a href="https://www.pcgamer.com/software/ai/sam-altman-argues-that-its-bad-you-want-dram-in-your-computer-and-not-a-data-center-actually/" target="_blank">Sam Altman</a> would like it to be. Fully two thirds of TeamGroup's business is now selling into other businesses, where previously that percentage was just a quarter, with the majority going into the consumer market.</p><p>Chen claims its relationships with vendors will help it continue to get inventory, even if it has to pay premium spot prices for it. But he notes that supply will continue to be the big problem, suggesting that supply and demand equilibrium is unlikely to be achieved any time before the second half of 2028, or potentially even later. </p><p>And, obviously, that means prices will remain high, or more likely keep rising. "How can prices fall when there's nothing left?" he questions like a good little doom-monger. Good 'ere, innit?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I'm watching YouTube videos in glorious stereoscopic 3D on my Steam Frame with just a free plugin and a long-forgotten dream of a new Nintendo 3DS ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Remember the 3D craze? The Nintendo 3DS, 3D TV, 3D cinema; it was a new, exciting technology that some expected would go mainstream one day. Then the dream just sorta died. People don't talk about it much these days; except for this wonderful project that takes normal videos and turns them, alchemy-like, into slightly more 3D-looking videos using the <a href="https://www.pcgamer.com/hardware/vr-hardware/valve-steam-frame-review/" target="_blank">Steam Frame</a>. </p><p>And let me tell you, it's actually pretty good.</p><p>It's called <a href="https://github.com/guix8/framedepth" target="_blank">framedepth</a>, and it's made by a user going by guix8 on GitHub. It's a plugin for Chrome that adds a stereoscopic 3D effect to any video when viewed via the browser on the Steam Frame.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script><p>It's surprisingly fun. I've been watching live gigs and eating challenges on YouTube and the stereoscopic effect is automatically applied once enabled via the extension. It definitely adds some extra level of immersion to it. Not much, but some. I wouldn't go as far to say I felt like I was there in the crowd for either spectacle, and maybe I wouldn't want to be in the firing line of a food challenge, but it's better than I thought it would be. An ever-so-slightly more engaging way to watch YouTube in VR.</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:1308px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="tkKHSCh9PgYnVcJuY5mnk" name="framedepth3" alt="A screenshot of the framedepth extension running on a Steam Frame in Chrome, with Enter Shikari playing on YouTube to test." src="https://cdn.mos.cms.futurecdn.net/tkKHSCh9PgYnVcJuY5mnk-1920-80.jpg" mos="" align="middle" fullscreen="" width="1308" height="736" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Valve, Google, Enter Shikari)</span></figcaption></figure><p>The installation process is a bit more involved than your average Chrome plugin, requiring the Steam Frame to be in developer mode. You need to install Chrome on the Steam Frame, which requires a quick trip to the SteamOS desktop to run the Konsole and install via Flathub (flatpak install com.google.Chrome). Then you have to download framedepth from the GitHub and whack more code in the terminal:</p><p><em><strong>cd ~/Downloads &amp;&amp; f=$(ls -v framedepth-*-steamos-arm64.tar.gz | tail -1) &amp;&amp; echo "$f"   # the newest download</strong></em></p><p><em><strong>sha256sum -c "$f.sha256" &amp;&amp; tar -xzf "$f" &amp;&amp; cd "${f%.tar.gz}"</strong></em></p><p><em><strong>bash install.sh                # ~/.local/share/framedepth, user service, extension files</strong></em></p><p>Finally, it needs to be loaded as an extension into Chrome, which also requires developer mode to be enabled for extensions in the browser. Once installed, you can enable the 3D effect and change the settings from a dropdown menu right there in Chrome. </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:851px;"><p class="vanilla-image-block" style="padding-top:56.17%;"><img id="MZYj7cXwYVmpDezX3zDBc" name="framedepth2" alt="A screenshot of the framedepth extension running on a Steam Frame in Chrome, with Enter Shikari playing on YouTube to test." src="https://cdn.mos.cms.futurecdn.net/MZYj7cXwYVmpDezX3zDBc-1920-80.jpg" mos="" align="middle" fullscreen="" width="851" height="478" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Valve, Google, Enter Shikari)</span></figcaption></figure><p>The pop-out slider to the max seems to have the most impact on the 3D effect; the equivalent of cranking the 3DS slider all the way up.</p><p>There's a bunch to play around with here, but it's worth a go if you have a Steam Frame. If anything, just to rekindle lost excitement for 3D technologies that never managed to win us all over.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/vr-hardware/im-watching-youtube-videos-in-glorious-stereoscopic-3d-on-my-steam-frame-with-just-a-free-plugin-and-a-long-forgotten-dream-of-a-new-nintendo-3ds/</link>
                                                                            <description>
                            <![CDATA[ It sorta looks like it's in three dimensions! ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">QumTBcfEor67CExCXYqwvV</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/za7GxwHvERxgWXvW7nrgk-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 04 Nov 2026 16:29:04 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[VR Hardware]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&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/za7GxwHvERxgWXvW7nrgk-1920-80.jpg">
                                                            <media:credit><![CDATA[Valve, Google, Enter Shikari]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A screenshot of the framedepth extension running on a Steam Frame in Chrome, with Enter Shikari playing on YouTube to test.]]></media:description>                                                            <media:text><![CDATA[A screenshot of the framedepth extension running on a Steam Frame in Chrome, with Enter Shikari playing on YouTube to test.]]></media:text>
                                <media:title type="plain"><![CDATA[A screenshot of the framedepth extension running on a Steam Frame in Chrome, with Enter Shikari playing on YouTube to test.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/za7GxwHvERxgWXvW7nrgk-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Remember the 3D craze? The Nintendo 3DS, 3D TV, 3D cinema; it was a new, exciting technology that some expected would go mainstream one day. Then the dream just sorta died. People don't talk about it much these days; except for this wonderful project that takes normal videos and turns them, alchemy-like, into slightly more 3D-looking videos using the <a href="https://www.pcgamer.com/hardware/vr-hardware/valve-steam-frame-review/" target="_blank">Steam Frame</a>. </p><p>And let me tell you, it's actually pretty good.</p><p>It's called <a href="https://github.com/guix8/framedepth" target="_blank">framedepth</a>, and it's made by a user going by guix8 on GitHub. It's a plugin for Chrome that adds a stereoscopic 3D effect to any video when viewed via the browser on the Steam Frame.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script><p>It's surprisingly fun. I've been watching live gigs and eating challenges on YouTube and the stereoscopic effect is automatically applied once enabled via the extension. It definitely adds some extra level of immersion to it. Not much, but some. I wouldn't go as far to say I felt like I was there in the crowd for either spectacle, and maybe I wouldn't want to be in the firing line of a food challenge, but it's better than I thought it would be. An ever-so-slightly more engaging way to watch YouTube in VR.</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:1308px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="tkKHSCh9PgYnVcJuY5mnk" name="framedepth3" alt="A screenshot of the framedepth extension running on a Steam Frame in Chrome, with Enter Shikari playing on YouTube to test." src="https://cdn.mos.cms.futurecdn.net/tkKHSCh9PgYnVcJuY5mnk-1920-80.jpg" mos="" align="middle" fullscreen="" width="1308" height="736" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Valve, Google, Enter Shikari)</span></figcaption></figure><p>The installation process is a bit more involved than your average Chrome plugin, requiring the Steam Frame to be in developer mode. You need to install Chrome on the Steam Frame, which requires a quick trip to the SteamOS desktop to run the Konsole and install via Flathub (flatpak install com.google.Chrome). Then you have to download framedepth from the GitHub and whack more code in the terminal:</p><p><em><strong>cd ~/Downloads &amp;&amp; f=$(ls -v framedepth-*-steamos-arm64.tar.gz | tail -1) &amp;&amp; echo "$f"   # the newest download</strong></em></p><p><em><strong>sha256sum -c "$f.sha256" &amp;&amp; tar -xzf "$f" &amp;&amp; cd "${f%.tar.gz}"</strong></em></p><p><em><strong>bash install.sh                # ~/.local/share/framedepth, user service, extension files</strong></em></p><p>Finally, it needs to be loaded as an extension into Chrome, which also requires developer mode to be enabled for extensions in the browser. Once installed, you can enable the 3D effect and change the settings from a dropdown menu right there in Chrome. </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:851px;"><p class="vanilla-image-block" style="padding-top:56.17%;"><img id="MZYj7cXwYVmpDezX3zDBc" name="framedepth2" alt="A screenshot of the framedepth extension running on a Steam Frame in Chrome, with Enter Shikari playing on YouTube to test." src="https://cdn.mos.cms.futurecdn.net/MZYj7cXwYVmpDezX3zDBc-1920-80.jpg" mos="" align="middle" fullscreen="" width="851" height="478" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Valve, Google, Enter Shikari)</span></figcaption></figure><p>The pop-out slider to the max seems to have the most impact on the 3D effect; the equivalent of cranking the 3DS slider all the way up.</p><p>There's a bunch to play around with here, but it's worth a go if you have a Steam Frame. If anything, just to rekindle lost excitement for 3D technologies that never managed to win us all over.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Formula V Line Air Power G10 review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Formula V Line Air Power G10" data-widget-title=""></div><p>If you need to build yourself a PC, you will want as much freedom to be creative as possible, and Formula V's Air Power G10 not only promises some neat ways of messing with its layout, but comes with a whole heap of fans and a sweet aesthetic at the same time. </p><p>But alas, there's a big elephant in the room here in the form of its PSU space, and its 'almost budget but not quite as budget as other budget cases' price point makes it awkward when you consider the white variant is $10 more than the Black, Black Rose, and Wooden models. There's a lot here to love, but just enough to loathe that it's not a go-to "cheapish" case pick. </p><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Buy if…</h3><div class="card__description-wrapper"><div class="card__description"><p>✅ <strong>You don't want to buy more case fans: </strong>The Power G10 has five 120 mm case fans, which is good enough that you won't <em>need</em> any more. </p></div></div></div></div><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Don&#39;t buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p>❌ <strong>You just want a white build: </strong>The likes of Corsair offer cheaper white cases.<br /><br />❌ <strong>You have a chunky PSU: </strong>With a max size of 160 mm, this case can't fit the chunkiest of PSUs in it. </p></div></div></div></div><h2 class="article-body__section" id="section-features"><span>Features</span></h2><div ><table><caption>Formula V Air Power G10 specs</caption><tbody><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>Mid-tower</p></td></tr><tr><td class="firstcol " ><p><strong>Motherboard support</strong></p></td><td  ><p>ATX / Micro-ATX / ITX</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions</strong></p></td><td  ><p>235 × 500 × 489 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Maximum GPU length</strong></p></td><td  ><p>420 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Radiator support</strong></p></td><td  ><p>Up to 360 mm (top)</p></td></tr><tr><td class="firstcol " ><p><strong>PSU support</strong></p></td><td  ><p>ATX 160 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Fan support</strong></p></td><td  ><p>3 x 120mm (front), 3 x 120 or 2 x 140 mm (top), 2 x 120 mm (bottom), 1 x 120 or 1 x 140 mm (rear), 2 x 140 mm (side)</p></td></tr><tr><td class="firstcol " ><p><strong>Fans included</strong></p></td><td  ><p>5 x 120 mm (three front, one bottom, one rear)</p></td></tr><tr><td class="firstcol " ><p><strong>Storage bays</strong></p></td><td  ><p>1 x 3.5-inch and 2 x 2.5-inch</p></td></tr><tr><td class="firstcol " ><p><strong>Front panel</strong></p></td><td  ><p>1 x USB Type-C, 2 x USB 3.0 Type-A, 1 x audio jack</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.newegg.com/formula-v-line-atx-mid-tower-steel-plastic-case-white-air-power-g10-wh/p/N82E16811961009?Item=N82E16811961009&amp;cm_sp=product-_-from-price-options" target="_blank">$100 for White, Black Titanium, and Dark Blue</a> / <a href="https://www.newegg.com/formula-v-line-atx-mid-tower-steel-plastic-case-black-wood-air-power-g10-bw/p/N82E16811961012?Item=N82E16811961012&amp;cm_sp=product-_-from-price-options" target="_blank">$90 for Black, Black Rose Gold, and Wood</a></p></td></tr></tbody></table></div><p>The Air Power G10 is interesting in a few ways. First, it has three 120 mm fans pre-installed at the front that are able to swivel up and down.  They come with dust filters too, which is a nice touch. These are daisy-chained around the back of the case, which means you can simply connect these to the rear fan and bottom fan (all of which are included in the box), then into your motherboard.</p><p>You can take the front, top, and sides off the G10 without any tools; with tools, you can take off the PSU shroud and swap it with the bracer on the bottom for the rear fans. This is a relatively niche bit of customisation, but should you need to swap around the PSU position or want your fans pointing directly under the graphics cards, it's pretty simple to do so.</p><p>Formula V provides the <a href="https://www.formulav-line.com/production/air-power-g10/?color=black-titanium-silver-2#:~:text=your%20personal%20style.-,Download,-Luxury%20Metallic%20Craftsmanship" target="_blank">3D design files</a> for the front panel. With these, you can design and attach your own panels and fan braces. I like a lot of the decisions made with the Air Power G10, and building a PC in it is not only easy but even rather fun thanks to a decent amount of open space and convenient access. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/WToZtibjJLTAMtuYt4ZtfQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hKNMzuvy8HetgADhSCabhQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4WoqRMfLZnA3HtbbvbVdhQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><h2 class="article-body__section" id="section-installation"><span>Installation</span></h2><p>If you have the right PSU, installation in the Air Power G10 is super easy. That’s a pretty big if, though. In the box, you get three front fans preinstalled and daisy-chained. You also get a back fan pre-installed, then one bottom fan, which is not installed. Simply connect the three back fans to the front fan and the bottom fan, then plug them into your motherboard, and you are good to go. </p><p>The case only supports PSUs up to 160 mm in length, which means many power supplies we had on hand simply would not fit in it. I tried with the Be Quiet! Dark Power 12, and Dark Power Pro, as well as the Cooler Master V1000. These three are bigger than the 160 mm Formula V advertises the Air Power G10 can fit, but it means you can't just grab any old PSU and throw it in. I had to shrink down to the Corsair SF600, a small-form-factor power supply, to get it hooked up with what we had in the office. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/s9ZauVbfEaR8TbxPUoTEjQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/XkPbmCYAkKcNEVtVcpKfiQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2UPyoMN5tmLx3pAbytCWjQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mJH2LsT2hSm66cbF8dFejQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>You can take off the shroud above it, but that only gives the PSU some unnecessary headroom; it doesn't give much more length. And an exact 160 mm or less is a pretty tight squeeze, especially when you consider some PSU cables can be rather chunky and might have to be pressed against the side of the case for prolonged periods of time. </p><p>The case comes with a neat power cable that hooks from the back of the case underneath the rear fans, and then near the front to get to the PSU. This means your power cable will be colour-coded with your rig, but it also means you have to swap the PSU section and bottom fan shroud if your PSU power port is on the wrong side. You can take out this cable, but it leaves a big gap at the back of the case, which cheapens the clean aesthetic of the build. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/5rxrAu7jgEE5JtZxVDexdQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/aigYJgKg6dP3XMNYSZE3eQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8heKm7UyRxFZ3sRm966CeQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JoChSH3VYeSb8UJ4bJmpjQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Given you can open up the case from almost every angle but the back without any tools, I found myself only using the screwdriver in very select cases, like fastening the motherboard and kitting the AMD stock CPU cooler. You do need a screwdriver, but only sparingly, which also means having to keep track of fewer screws as you build. </p><p>PSU problems out of the way, the G10 has plenty of empty space in the back for cable management, and there are a couple of ties in the box once you're happy with it all. I'm no cable management pro, but I managed to get it looking tidy enough in a short amount of time. A big benefit of the three front fans being preinstalled is that they're relatively plug-and-play. </p><h2 class="article-body__section" id="section-aesthetics"><span>Aesthetics</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/hdVKCdnLTmybCdv4zNKXbQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FCx7AeYaxiLUp3yGkxkjYQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/v2pMBHKMu83kGSEaDbyePQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SZkULyURoRoJbm6p8KVbTQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Aesthetics are the name of the game with the white model I got my hands on, especially when you consider it fetches $10 more than some of its non-white counterparts. And for that, it does look pretty sweet. The white steel is only ever disrupted by the silver of the screws, and they look tidy in application too. The top even has a small leather-like handle.</p><p>It is a lovely-looking case that looks even better when all the fans are spinning (assuming you daisy-chained it correctly). </p><p>I didn't even commit to an all-white build, and still found myself casually staring into its pretty spinning fans on more than one occasion. I even quite like the three-fan front panel, and its RGB lighting. It's sunken into the front panel, but sleek enough to look quite clean. The Air Power G10 manages to look like its own unique case without getting ugly in the process, which is an impressive feat. </p><h2 class="article-body__section" id="section-thermals"><span>Thermals</span></h2><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-1793805728524-8feoj7mjy *, #fv-chart-1793805728524-8feoj7mjy *:before, #fv-chart-1793805728524-8feoj7mjy *:after, #fv-chart-1793805728524-8feoj7mjy-slideshow *, #fv-chart-1793805728524-8feoj7mjy-slideshow *:before, #fv-chart-1793805728524-8feoj7mjy-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793805728524-8feoj7mjy, #fv-chart-1793805728524-8feoj7mjy-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793805728524-8feoj7mjy { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793805728524-8feoj7mjy.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793805728524-8feoj7mjy.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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1793805728524-8feoj7mjy-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793805728524-8feoj7mjy-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-1793805728524-8feoj7mjy-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-1793805728524-8feoj7mjy-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793805728524-8feoj7mjy-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793805728524-8feoj7mjy-slideshow .fv-nav-btn.disabled, #fv-chart-1793805728524-8feoj7mjy-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-1793805728524-8feoj7mjy-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-1793805728524-8feoj7mjy-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-1793805728524-8feoj7mjy-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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793805728524-8feoj7mjy .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793805728524-8feoj7mjy .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793805728524-8feoj7mjy .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793805728524-8feoj7mjy .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-bar-row, #fv-chart-1793805728524-8feoj7mjy .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793805728524-8feoj7mjy.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793805728524-8feoj7mjy.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793805728524-8feoj7mjy .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793805728524-8feoj7mjy .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793805728524-8feoj7mjy .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793805728524-8feoj7mjy .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793805728524-8feoj7mjy .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793805728524-8feoj7mjy .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793805728524-8feoj7mjy .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793805728524-8feoj7mjy .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy.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-1793805728524-8feoj7mjy.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793805728524-8feoj7mjy.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793805728524-8feoj7mjy .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793805728524-8feoj7mjy .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy.mobile-view .fv-pie-container, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-row, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-stacked-product, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-grouped-bar-product, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-bar-row, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-stacked-product, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793805728524-8feoj7mjy.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-1793805728524-8feoj7mjy.mobile-view .fv-bar-label, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-grouped-product-title, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-bar-label, #fv-chart-1793805728524-8feoj7mjy.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-1793805728524-8feoj7mjy.mobile-view .fv-bar-container, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-cluster, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-bar-container, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793805728524-8feoj7mjy.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-1793805728524-8feoj7mjy.mobile-view .fv-x-axis-wrapper, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-x-axis-label-space, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-x-axis-chart-space, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-benchmark-title, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-dropdown-title, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-carousel-nav-btn, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-chart-title, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-chart-subhead, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-versus-header, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-versus-select-wrapper, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-versus-vs, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-versus-select-container, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-versus-select, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793805728524-8feoj7mjy.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-1793805728524-8feoj7mjy.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-commentary-inline, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-dials-grid, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-dial-title, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793805728524-8feoj7mjy .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793805728524-8feoj7mjy .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-bar-row, #fv-chart-1793805728524-8feoj7mjy .fv-stacked-product, #fv-chart-1793805728524-8feoj7mjy .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-bar-label, #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-bar-container, #fv-chart-1793805728524-8feoj7mjy .fv-bar-cluster { width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793805728524-8feoj7mjy .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793805728524-8feoj7mjy .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-x-axis-label-space { display: none !important; } #fv-chart-1793805728524-8feoj7mjy .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-stl-shop-all-logo, #fv-chart-1793805728524-8feoj7mjy .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793805728524-8feoj7mjy .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793805728524-8feoj7mjy .fv-dial-title { font-size: 16px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793805728524-8feoj7mjy.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": "Formula V Line Air Power G10 Temperatures",  "description": "Recorded with only the case fans that come with the G10 and a stock AMD CPU cooler",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-04T15:22:08.524Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Formula V Line Air Power G10",    "GPU Temperatures",    "CPU Temperatures",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Formula V Line Air Power G10 – GPU Temperatures",      "value": 64.8,      "unitText": "Max"    },    {      "@type": "PropertyValue",      "name": "Formula V Line Air Power G10 – CPU Temperatures",      "value": 91,      "unitText": "Max"    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-04T15:22:08.524Z","state":{"data":[{"productName":"Formula V Line Air Power G10","attribute":"GPU Temperatures","value":64.8,"unit":"Max","multiValues":[{"value":64.8,"unit":"Max"},{"value":56.4,"unit":"Minimum"},{"value":59,"unit":"Average"}],"color":"","site":"PC Gamer"},{"productName":"Formula V Line Air Power G10","attribute":"CPU Temperatures","value":91,"unit":"Max","multiValues":[{"value":91,"unit":"Max"},{"value":81,"unit":"Minimum"},{"value":75,"unit":"Average"}],"color":"","site":"PC Gamer"}],"products":["Formula V Line Air Power G10"],"attributes":["GPU Temperatures","CPU Temperatures"],"selectedProducts":["Formula V Line Air Power G10"],"selectedPrimaryProduct":"Formula V Line Air Power G10","selectedAttributes":["GPU Temperatures","CPU Temperatures"],"productColors":[{"productName":"Formula V Line Air Power G10","color":"#E33235"}],"initialProductColors":[{"productName":"Formula V Line Air Power G10","color":"#E33235"}],"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":"Formula V Line Air Power G10 Temperatures","subhead":"Recorded with only the case fans that come with the G10 and a stock AMD CPU cooler","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},"slides":[]}</script><div id="fv-chart-1793805728524-8feoj7mjy" 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">Formula V Line Air Power G10 Temperatures</h3><p class="fv-chart-subhead">Recorded with only the case fans that come with the G10 and a stock AMD CPU cooler</p><div class="fv-dropdown-wrapper"><div class="fv-dropdown-title-container"><select class="fv-dropdown-title"><option value="0">GPU Temperatures</option><option value="1">CPU Temperatures</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-1793805728524-8feoj7mjy-bar-GPU Temperatures" data-chart-type="Bar" data-title="GPU Temperatures" data-subhead="Recorded with only the case fans that come with the G10 and a stock AMD CPU cooler" data-caption="" 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>Max</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #FE9F58;"></div><span>Minimum</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #1CA9C4;"></div><span>Average</span></div></div><div class="fv-bar-row"><div class="fv-bar-label fv-primary-product">Formula V Line Air Power G10</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: 81%; background-color: #E33235;" data-target-width="81" 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.8</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 70.5%; background-color: #FE9F58;" data-target-width="70.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">56.4</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 73.75%; background-color: #1CA9C4;" 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-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>GPU Temperatures Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Formula V Line Air Power G10</td><td>64.8 Max, 56.4 Minimum, 59 Average</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1793805728524-8feoj7mjy-bar-CPU Temperatures" data-chart-type="Bar" data-title="CPU Temperatures" data-subhead="Recorded with only the case fans that come with the G10 and a stock AMD CPU cooler" data-caption="" 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>Max</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #FE9F58;"></div><span>Minimum</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #1CA9C4;"></div><span>Average</span></div></div><div class="fv-bar-row"><div class="fv-bar-label fv-primary-product">Formula V Line Air Power G10</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%; background-color: #E33235;" data-target-width="91" 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">91</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 81%; background-color: #FE9F58;" data-target-width="81" 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 class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 75%; background-color: #1CA9C4;" data-target-width="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">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>25</span><span>50</span><span>75</span><span>100</span></div></div></div><table class="sr-only"><caption>CPU Temperatures Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Formula V Line Air Power G10</td><td>91 Max, 81 Minimum, 75 Average</td></tr></tbody></table></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-1793805728524-8feoj7mjy', false); });      } else {        initialize('fv-chart-1793805728524-8feoj7mjy', false);      }    })();      </script></div><p>The rig I built was kitted with an <a href="https://www.pcgamer.com/uk/amd-ryzen-5-7600x/">AMD Ryzen 5 7600X</a>, an <a href="https://www.pcgamer.com/hardware/graphics-cards/amd-radeon-rx-9060-xt-16-gb-review-xfx-swift/">XFX Swift AMD Radeon RX 9060 XT</a>, 32 GB of memory, and two SSDs. Thanks to it being a large case and coming fitted with five 120 mm fans, the Air Power G10 has some rather solid temps. In a whole suite of gaming tests, the 9060 XT only ever got to a maximum of 64.8 °C and an average of 57 °C. </p><p>The CPU, on the other hand, got up to a max temperature of 91 °C, with an average of 81 °C. That's pretty high, but not the fault of the case. I stuck a simple stock AMD cooler on the CPU, and a 360 mm cooler up top would keep those CPU temps down. Still, airflow is solid in the case with the fans set to the positions Formula V intends (three on the front, one in the rear and one on the bottom).</p><p>Though I noticed a shift of about a degree on average when pushing the front fans up or down, that's well within the standard deviation, so I'd say it makes little to no difference which way you point them. You could perhaps get slightly better cooling out of a specific angle when you place the PC near a breeze or on the other side of a fan, but I'd recommend making your rig as uncomplicated as possible. </p><p>I also noticed the GPU temperature going up ever so slightly when pointing the bottom fan back towards the PSU, which is, again, within a standard deviation. </p><h2 class="article-body__section" id="section-value"><span>Value</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/DHTV8z5xpij4V2e6wukgiQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mRy8NkutXoYQ62yS4HF8jQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hKNMzuvy8HetgADhSCabhQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>$100 for the white variant pushes the Power G10 just out of budget and instead into 'slightly above budget' in my book. The <a href="https://www.pcgamer.com/hardware/pc-cases/corsair-3200d-review/" target="_blank">Corsair 3200D</a> is $30 less, supports PSUs up to 180 mm (though it has a slightly smaller GPU space), and it even comes in white too. It only comes with three Corsair RS120 fans, but for that $30 difference, you could pick up a <a href="https://www.pcgamer.com/best-pc-fans/#section-the-best-budget-pc-fan" target="_blank">five-pack of Arctic P12 Pro</a> to add to the party. They're not hard to pick up for cheap on <a href="https://www.newegg.com/p/pl?d=white+case+fan" target="_blank">Newegg</a> or <a href="https://www.amazon.com/s?k=white+case+fan&amp;i=electronics&amp;crid=236I7M6RH332B&amp;sprefix=white+case+fan%2Celectronics%2C176&amp;ref=nb_sb_noss_2" target="_blank">Amazon </a>either. </p><p>For $20 more, you can pick up the excellent <a href="https://www.pcgamer.com/hardware/pc-cases/phanteks-xt-view-matrix-case-review/" target="_blank">Phanteks XT View Matrix </a>(which also comes in white), and this one also comes with three pre-installed 120 mm fans. This is all to say there isn't a shortage of sweet white cases. </p><p>The Air Power G10 is certainly unique enough in the looks and modularity department to intrigue me, but it's not cheap enough that it's automatically worth a punt with its flaws, and It's no longer super difficult to get a pretty white case for cheap. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/pc-cases/formula-v-line-air-power-g10-review/</link>
                                                                            <description>
                            <![CDATA[ A sleek case with some less-than-sleek issues. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Pc5BFchMY6bwJofbv9cZzg</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/rgoWGqK6XJeZxTXJYK8bfQ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 04 Nov 2026 15:53:08 +0000</pubDate>                                                                                                                                <updated>Wed, 04 Nov 2026 15:54:16 +0000</updated>
                                                                                                                                            <category><![CDATA[PC Cases]]></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/rgoWGqK6XJeZxTXJYK8bfQ-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Formula V Line Air Power G10 on a desk]]></media:description>                                                            <media:text><![CDATA[The Formula V Line Air Power G10 on a desk]]></media:text>
                                <media:title type="plain"><![CDATA[The Formula V Line Air Power G10 on a desk]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/rgoWGqK6XJeZxTXJYK8bfQ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Formula V Line Air Power G10" data-widget-title=""></div><p>If you need to build yourself a PC, you will want as much freedom to be creative as possible, and Formula V's Air Power G10 not only promises some neat ways of messing with its layout, but comes with a whole heap of fans and a sweet aesthetic at the same time. </p><p>But alas, there's a big elephant in the room here in the form of its PSU space, and its 'almost budget but not quite as budget as other budget cases' price point makes it awkward when you consider the white variant is $10 more than the Black, Black Rose, and Wooden models. There's a lot here to love, but just enough to loathe that it's not a go-to "cheapish" case pick. </p><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Buy if…</h3><div class="card__description-wrapper"><div class="card__description"><p>✅ <strong>You don't want to buy more case fans: </strong>The Power G10 has five 120 mm case fans, which is good enough that you won't <em>need</em> any more. </p></div></div></div></div><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Don&#39;t buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p>❌ <strong>You just want a white build: </strong>The likes of Corsair offer cheaper white cases.<br /><br />❌ <strong>You have a chunky PSU: </strong>With a max size of 160 mm, this case can't fit the chunkiest of PSUs in it. </p></div></div></div></div><h2 class="article-body__section" id="section-features"><span>Features</span></h2><div ><table><caption>Formula V Air Power G10 specs</caption><tbody><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>Mid-tower</p></td></tr><tr><td class="firstcol " ><p><strong>Motherboard support</strong></p></td><td  ><p>ATX / Micro-ATX / ITX</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions</strong></p></td><td  ><p>235 × 500 × 489 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Maximum GPU length</strong></p></td><td  ><p>420 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Radiator support</strong></p></td><td  ><p>Up to 360 mm (top)</p></td></tr><tr><td class="firstcol " ><p><strong>PSU support</strong></p></td><td  ><p>ATX 160 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Fan support</strong></p></td><td  ><p>3 x 120mm (front), 3 x 120 or 2 x 140 mm (top), 2 x 120 mm (bottom), 1 x 120 or 1 x 140 mm (rear), 2 x 140 mm (side)</p></td></tr><tr><td class="firstcol " ><p><strong>Fans included</strong></p></td><td  ><p>5 x 120 mm (three front, one bottom, one rear)</p></td></tr><tr><td class="firstcol " ><p><strong>Storage bays</strong></p></td><td  ><p>1 x 3.5-inch and 2 x 2.5-inch</p></td></tr><tr><td class="firstcol " ><p><strong>Front panel</strong></p></td><td  ><p>1 x USB Type-C, 2 x USB 3.0 Type-A, 1 x audio jack</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.newegg.com/formula-v-line-atx-mid-tower-steel-plastic-case-white-air-power-g10-wh/p/N82E16811961009?Item=N82E16811961009&amp;cm_sp=product-_-from-price-options" target="_blank">$100 for White, Black Titanium, and Dark Blue</a> / <a href="https://www.newegg.com/formula-v-line-atx-mid-tower-steel-plastic-case-black-wood-air-power-g10-bw/p/N82E16811961012?Item=N82E16811961012&amp;cm_sp=product-_-from-price-options" target="_blank">$90 for Black, Black Rose Gold, and Wood</a></p></td></tr></tbody></table></div><p>The Air Power G10 is interesting in a few ways. First, it has three 120 mm fans pre-installed at the front that are able to swivel up and down.  They come with dust filters too, which is a nice touch. These are daisy-chained around the back of the case, which means you can simply connect these to the rear fan and bottom fan (all of which are included in the box), then into your motherboard.</p><p>You can take the front, top, and sides off the G10 without any tools; with tools, you can take off the PSU shroud and swap it with the bracer on the bottom for the rear fans. This is a relatively niche bit of customisation, but should you need to swap around the PSU position or want your fans pointing directly under the graphics cards, it's pretty simple to do so.</p><p>Formula V provides the <a href="https://www.formulav-line.com/production/air-power-g10/?color=black-titanium-silver-2#:~:text=your%20personal%20style.-,Download,-Luxury%20Metallic%20Craftsmanship" target="_blank">3D design files</a> for the front panel. With these, you can design and attach your own panels and fan braces. I like a lot of the decisions made with the Air Power G10, and building a PC in it is not only easy but even rather fun thanks to a decent amount of open space and convenient access. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/WToZtibjJLTAMtuYt4ZtfQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hKNMzuvy8HetgADhSCabhQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4WoqRMfLZnA3HtbbvbVdhQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><h2 class="article-body__section" id="section-installation"><span>Installation</span></h2><p>If you have the right PSU, installation in the Air Power G10 is super easy. That’s a pretty big if, though. In the box, you get three front fans preinstalled and daisy-chained. You also get a back fan pre-installed, then one bottom fan, which is not installed. Simply connect the three back fans to the front fan and the bottom fan, then plug them into your motherboard, and you are good to go. </p><p>The case only supports PSUs up to 160 mm in length, which means many power supplies we had on hand simply would not fit in it. I tried with the Be Quiet! Dark Power 12, and Dark Power Pro, as well as the Cooler Master V1000. These three are bigger than the 160 mm Formula V advertises the Air Power G10 can fit, but it means you can't just grab any old PSU and throw it in. I had to shrink down to the Corsair SF600, a small-form-factor power supply, to get it hooked up with what we had in the office. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/s9ZauVbfEaR8TbxPUoTEjQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/XkPbmCYAkKcNEVtVcpKfiQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2UPyoMN5tmLx3pAbytCWjQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mJH2LsT2hSm66cbF8dFejQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>You can take off the shroud above it, but that only gives the PSU some unnecessary headroom; it doesn't give much more length. And an exact 160 mm or less is a pretty tight squeeze, especially when you consider some PSU cables can be rather chunky and might have to be pressed against the side of the case for prolonged periods of time. </p><p>The case comes with a neat power cable that hooks from the back of the case underneath the rear fans, and then near the front to get to the PSU. This means your power cable will be colour-coded with your rig, but it also means you have to swap the PSU section and bottom fan shroud if your PSU power port is on the wrong side. You can take out this cable, but it leaves a big gap at the back of the case, which cheapens the clean aesthetic of the build. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/5rxrAu7jgEE5JtZxVDexdQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/aigYJgKg6dP3XMNYSZE3eQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8heKm7UyRxFZ3sRm966CeQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JoChSH3VYeSb8UJ4bJmpjQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Given you can open up the case from almost every angle but the back without any tools, I found myself only using the screwdriver in very select cases, like fastening the motherboard and kitting the AMD stock CPU cooler. You do need a screwdriver, but only sparingly, which also means having to keep track of fewer screws as you build. </p><p>PSU problems out of the way, the G10 has plenty of empty space in the back for cable management, and there are a couple of ties in the box once you're happy with it all. I'm no cable management pro, but I managed to get it looking tidy enough in a short amount of time. A big benefit of the three front fans being preinstalled is that they're relatively plug-and-play. </p><h2 class="article-body__section" id="section-aesthetics"><span>Aesthetics</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/hdVKCdnLTmybCdv4zNKXbQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FCx7AeYaxiLUp3yGkxkjYQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/v2pMBHKMu83kGSEaDbyePQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SZkULyURoRoJbm6p8KVbTQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Aesthetics are the name of the game with the white model I got my hands on, especially when you consider it fetches $10 more than some of its non-white counterparts. And for that, it does look pretty sweet. The white steel is only ever disrupted by the silver of the screws, and they look tidy in application too. The top even has a small leather-like handle.</p><p>It is a lovely-looking case that looks even better when all the fans are spinning (assuming you daisy-chained it correctly). </p><p>I didn't even commit to an all-white build, and still found myself casually staring into its pretty spinning fans on more than one occasion. I even quite like the three-fan front panel, and its RGB lighting. It's sunken into the front panel, but sleek enough to look quite clean. The Air Power G10 manages to look like its own unique case without getting ugly in the process, which is an impressive feat. </p><h2 class="article-body__section" id="section-thermals"><span>Thermals</span></h2><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-1793805728524-8feoj7mjy *, #fv-chart-1793805728524-8feoj7mjy *:before, #fv-chart-1793805728524-8feoj7mjy *:after, #fv-chart-1793805728524-8feoj7mjy-slideshow *, #fv-chart-1793805728524-8feoj7mjy-slideshow *:before, #fv-chart-1793805728524-8feoj7mjy-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793805728524-8feoj7mjy, #fv-chart-1793805728524-8feoj7mjy-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793805728524-8feoj7mjy { position: relative !important; overflow: visible !important; --riv-primary: #E33235; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793805728524-8feoj7mjy.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793805728524-8feoj7mjy.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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #E33235; } #fv-chart-1793805728524-8feoj7mjy-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793805728524-8feoj7mjy-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-1793805728524-8feoj7mjy-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-1793805728524-8feoj7mjy-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793805728524-8feoj7mjy-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793805728524-8feoj7mjy-slideshow .fv-nav-btn.disabled, #fv-chart-1793805728524-8feoj7mjy-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-1793805728524-8feoj7mjy-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-1793805728524-8feoj7mjy-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-1793805728524-8feoj7mjy-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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793805728524-8feoj7mjy .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793805728524-8feoj7mjy .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793805728524-8feoj7mjy .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793805728524-8feoj7mjy .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-bar-row, #fv-chart-1793805728524-8feoj7mjy .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793805728524-8feoj7mjy.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793805728524-8feoj7mjy.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793805728524-8feoj7mjy .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793805728524-8feoj7mjy .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793805728524-8feoj7mjy .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793805728524-8feoj7mjy .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793805728524-8feoj7mjy .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793805728524-8feoj7mjy .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793805728524-8feoj7mjy .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793805728524-8feoj7mjy .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy.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-1793805728524-8feoj7mjy.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793805728524-8feoj7mjy.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793805728524-8feoj7mjy .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793805728524-8feoj7mjy .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy.mobile-view .fv-pie-container, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-row, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-stacked-product, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-grouped-bar-product, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-bar-row, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-stacked-product, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793805728524-8feoj7mjy.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-1793805728524-8feoj7mjy.mobile-view .fv-bar-label, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-grouped-product-title, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-bar-label, #fv-chart-1793805728524-8feoj7mjy.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-1793805728524-8feoj7mjy.mobile-view .fv-bar-container, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-cluster, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-bar-container, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793805728524-8feoj7mjy.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-1793805728524-8feoj7mjy.mobile-view .fv-x-axis-wrapper, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-x-axis-label-space, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-x-axis-chart-space, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-benchmark-title, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-dropdown-title, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-carousel-nav-btn, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-chart-title, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-chart-subhead, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-versus-header, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-versus-select-wrapper, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-versus-vs, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-versus-select-container, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-versus-select, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793805728524-8feoj7mjy.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-1793805728524-8feoj7mjy.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-bar-commentary-inline, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-dials-grid, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-dial-title, #fv-chart-1793805728524-8feoj7mjy.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793805728524-8feoj7mjy.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793805728524-8feoj7mjy .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793805728524-8feoj7mjy .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-bar-row, #fv-chart-1793805728524-8feoj7mjy .fv-stacked-product, #fv-chart-1793805728524-8feoj7mjy .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-bar-label, #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-bar-container, #fv-chart-1793805728524-8feoj7mjy .fv-bar-cluster { width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793805728524-8feoj7mjy .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793805728524-8feoj7mjy .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-x-axis-label-space { display: none !important; } #fv-chart-1793805728524-8feoj7mjy .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy .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-1793805728524-8feoj7mjy .fv-stl-shop-all-logo, #fv-chart-1793805728524-8feoj7mjy .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793805728524-8feoj7mjy .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793805728524-8feoj7mjy .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793805728524-8feoj7mjy .fv-dial-title { font-size: 16px !important; } #fv-chart-1793805728524-8feoj7mjy .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793805728524-8feoj7mjy.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": "Formula V Line Air Power G10 Temperatures",  "description": "Recorded with only the case fans that come with the G10 and a stock AMD CPU cooler",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-04T15:22:08.524Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Formula V Line Air Power G10",    "GPU Temperatures",    "CPU Temperatures",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Formula V Line Air Power G10 – GPU Temperatures",      "value": 64.8,      "unitText": "Max"    },    {      "@type": "PropertyValue",      "name": "Formula V Line Air Power G10 – CPU Temperatures",      "value": 91,      "unitText": "Max"    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-04T15:22:08.524Z","state":{"data":[{"productName":"Formula V Line Air Power G10","attribute":"GPU Temperatures","value":64.8,"unit":"Max","multiValues":[{"value":64.8,"unit":"Max"},{"value":56.4,"unit":"Minimum"},{"value":59,"unit":"Average"}],"color":"","site":"PC Gamer"},{"productName":"Formula V Line Air Power G10","attribute":"CPU Temperatures","value":91,"unit":"Max","multiValues":[{"value":91,"unit":"Max"},{"value":81,"unit":"Minimum"},{"value":75,"unit":"Average"}],"color":"","site":"PC Gamer"}],"products":["Formula V Line Air Power G10"],"attributes":["GPU Temperatures","CPU Temperatures"],"selectedProducts":["Formula V Line Air Power G10"],"selectedPrimaryProduct":"Formula V Line Air Power G10","selectedAttributes":["GPU Temperatures","CPU Temperatures"],"productColors":[{"productName":"Formula V Line Air Power G10","color":"#E33235"}],"initialProductColors":[{"productName":"Formula V Line Air Power G10","color":"#E33235"}],"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":"Formula V Line Air Power G10 Temperatures","subhead":"Recorded with only the case fans that come with the G10 and a stock AMD CPU cooler","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},"slides":[]}</script><div id="fv-chart-1793805728524-8feoj7mjy" 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">Formula V Line Air Power G10 Temperatures</h3><p class="fv-chart-subhead">Recorded with only the case fans that come with the G10 and a stock AMD CPU cooler</p><div class="fv-dropdown-wrapper"><div class="fv-dropdown-title-container"><select class="fv-dropdown-title"><option value="0">GPU Temperatures</option><option value="1">CPU Temperatures</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-1793805728524-8feoj7mjy-bar-GPU Temperatures" data-chart-type="Bar" data-title="GPU Temperatures" data-subhead="Recorded with only the case fans that come with the G10 and a stock AMD CPU cooler" data-caption="" 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>Max</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #FE9F58;"></div><span>Minimum</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #1CA9C4;"></div><span>Average</span></div></div><div class="fv-bar-row"><div class="fv-bar-label fv-primary-product">Formula V Line Air Power G10</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: 81%; background-color: #E33235;" data-target-width="81" 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.8</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 70.5%; background-color: #FE9F58;" data-target-width="70.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">56.4</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 73.75%; background-color: #1CA9C4;" 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-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>GPU Temperatures Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Formula V Line Air Power G10</td><td>64.8 Max, 56.4 Minimum, 59 Average</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1793805728524-8feoj7mjy-bar-CPU Temperatures" data-chart-type="Bar" data-title="CPU Temperatures" data-subhead="Recorded with only the case fans that come with the G10 and a stock AMD CPU cooler" data-caption="" 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>Max</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #FE9F58;"></div><span>Minimum</span></div><div class="fv-multi-legend-item"><div class="fv-multi-legend-swatch" style="background-color: #1CA9C4;"></div><span>Average</span></div></div><div class="fv-bar-row"><div class="fv-bar-label fv-primary-product">Formula V Line Air Power G10</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%; background-color: #E33235;" data-target-width="91" 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">91</span></div></div></div><div class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 81%; background-color: #FE9F58;" data-target-width="81" 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 class="fv-multi-bar-item"><div class="fv-bar" style="margin-left: 0%; width: 75%; background-color: #1CA9C4;" data-target-width="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">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>25</span><span>50</span><span>75</span><span>100</span></div></div></div><table class="sr-only"><caption>CPU Temperatures Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Formula V Line Air Power G10</td><td>91 Max, 81 Minimum, 75 Average</td></tr></tbody></table></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-1793805728524-8feoj7mjy', false); });      } else {        initialize('fv-chart-1793805728524-8feoj7mjy', false);      }    })();      </script></div><p>The rig I built was kitted with an <a href="https://www.pcgamer.com/uk/amd-ryzen-5-7600x/">AMD Ryzen 5 7600X</a>, an <a href="https://www.pcgamer.com/hardware/graphics-cards/amd-radeon-rx-9060-xt-16-gb-review-xfx-swift/">XFX Swift AMD Radeon RX 9060 XT</a>, 32 GB of memory, and two SSDs. Thanks to it being a large case and coming fitted with five 120 mm fans, the Air Power G10 has some rather solid temps. In a whole suite of gaming tests, the 9060 XT only ever got to a maximum of 64.8 °C and an average of 57 °C. </p><p>The CPU, on the other hand, got up to a max temperature of 91 °C, with an average of 81 °C. That's pretty high, but not the fault of the case. I stuck a simple stock AMD cooler on the CPU, and a 360 mm cooler up top would keep those CPU temps down. Still, airflow is solid in the case with the fans set to the positions Formula V intends (three on the front, one in the rear and one on the bottom).</p><p>Though I noticed a shift of about a degree on average when pushing the front fans up or down, that's well within the standard deviation, so I'd say it makes little to no difference which way you point them. You could perhaps get slightly better cooling out of a specific angle when you place the PC near a breeze or on the other side of a fan, but I'd recommend making your rig as uncomplicated as possible. </p><p>I also noticed the GPU temperature going up ever so slightly when pointing the bottom fan back towards the PSU, which is, again, within a standard deviation. </p><h2 class="article-body__section" id="section-value"><span>Value</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/DHTV8z5xpij4V2e6wukgiQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mRy8NkutXoYQ62yS4HF8jQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hKNMzuvy8HetgADhSCabhQ-1920-80.jpg" alt="The Formula V Line Air Power G10 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>$100 for the white variant pushes the Power G10 just out of budget and instead into 'slightly above budget' in my book. The <a href="https://www.pcgamer.com/hardware/pc-cases/corsair-3200d-review/" target="_blank">Corsair 3200D</a> is $30 less, supports PSUs up to 180 mm (though it has a slightly smaller GPU space), and it even comes in white too. It only comes with three Corsair RS120 fans, but for that $30 difference, you could pick up a <a href="https://www.pcgamer.com/best-pc-fans/#section-the-best-budget-pc-fan" target="_blank">five-pack of Arctic P12 Pro</a> to add to the party. They're not hard to pick up for cheap on <a href="https://www.newegg.com/p/pl?d=white+case+fan" target="_blank">Newegg</a> or <a href="https://www.amazon.com/s?k=white+case+fan&amp;i=electronics&amp;crid=236I7M6RH332B&amp;sprefix=white+case+fan%2Celectronics%2C176&amp;ref=nb_sb_noss_2" target="_blank">Amazon </a>either. </p><p>For $20 more, you can pick up the excellent <a href="https://www.pcgamer.com/hardware/pc-cases/phanteks-xt-view-matrix-case-review/" target="_blank">Phanteks XT View Matrix </a>(which also comes in white), and this one also comes with three pre-installed 120 mm fans. This is all to say there isn't a shortage of sweet white cases. </p><p>The Air Power G10 is certainly unique enough in the looks and modularity department to intrigue me, but it's not cheap enough that it's automatically worth a punt with its flaws, and It's no longer super difficult to get a pretty white case for cheap. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ AMD says it's going to beat Intel in total revenue for the very first time by the end of 2026 ]]></title>
                                                                                                <dc:content><![CDATA[ <p>AMD has just posted another record quarter, with revenue topping $13 billion and its net income sitting at $2.4 billion. That is a lot of billions, and my brain is slightly struggling to comprehend it. But AMD's CFO and treasurer, Jean Hu, is projecting that this success will continue into the next quarter, <a href="https://finance.yahoo.com/quote/AMD/earnings/AMD-Q3-2026-earnings_call-724028.html#:~:text=We%20expect%20revenue%20to%20be%20approximately%20%2417%20billion" target="_blank">predicting revenue figures of around $17 billion for Q4.</a> Let's just compare that to Intel, which is expecting to continue posting flat, or slightly down, revenue figures of $15 - $16 billion itself.</p><p>Such a result would represent the first time that AMD has actually generated higher revenue figures than Intel for its lifetime. Or as far back as I can find the actual revenue figures for anyways.</p><p>Whether that will necessarily translate into a higher net income figure for AMD, I'm not entirely sure. Maths is not my strong point, and whether AMD's total revenue going up by another $3 billion will push its net income over the $3 billion mark where Intel currently sits I'm not sure. But it's going to be mighty close for sure.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script><p>But net income is not really the significant thing in terms of making history; AMD has been consistently turning a profit since 2018, and in the years up to now there have definitely been times when it has beaten Intel on that score, most notably in 2024 where Intel reported a staggering $18.7 billion loss for the year. AMD made $1.6 billion in that same timeframe. And last year AMD beat Intel again in the profit stakes.</p><p>Despite it being a <a href="https://www.pcgamer.com/hardware/processors/intel-shifts-panther-lake-capacity-to-data-center-chips-while-the-memory-crisis-wreaks-havoc-on-pc-market-still-sold-out-of-budget-wildcat-lake-chips/" target="_blank">punishing last quarter for Intel</a> in terms of its stock price collapsing, the company did at least return to profitability.</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:1660px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="uSa98LS7GoXmf99eBXASye" name="1793794263.jpg" alt="Intel vs AMD quarterly revenue" src="https://cdn.mos.cms.futurecdn.net/uSa98LS7GoXmf99eBXASye-1920-80.jpg" mos="" align="middle" fullscreen="" width="1660" height="934" 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><div class="collapsible-block-start"></div><div class="collapsible-block-title"check-out-the-data"><p>Check out the data 👇</p></div><div ><table><caption>Intel vs. AMD quarterly revenue and profit</caption><thead><tr><th class="firstcol " ><p>Quarter</p></th><th  ><p>Intel Revenue ($M)</p></th><th  ><p>Intel Net Income ($M)</p></th><th  ><p>AMD Revenue ($M)</p></th><th  ><p>AMD Net Income ($M)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Q1 2021</strong></p></td><td  ><p><strong>19,673</strong></p></td><td  ><p><strong>3,360</strong></p></td><td  ><p><strong>3,445</strong></p></td><td  ><p><strong>555</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Q2 2021</strong></p></td><td  ><p><strong>19,631</strong></p></td><td  ><p><strong>5,060</strong></p></td><td  ><p><strong>3,850</strong></p></td><td  ><p><strong>710</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Q3 2021</strong></p></td><td  ><p><strong>19,192</strong></p></td><td  ><p><strong>6,823</strong></p></td><td  ><p><strong>4,313</strong></p></td><td  ><p><strong>923</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Q4 2021</strong></p></td><td  ><p><strong>20,528</strong></p></td><td  ><p><strong>4,623</strong></p></td><td  ><p><strong>4,826</strong></p></td><td  ><p><strong>974</strong></p></td></tr><tr><td class="firstcol " ><p>Q1 2022</p></td><td  ><p>18,353</p></td><td  ><p>8,113</p></td><td  ><p>5,887</p></td><td  ><p>786</p></td></tr><tr><td class="firstcol " ><p>Q2 2022</p></td><td  ><p>15,321</p></td><td  ><p>−454</p></td><td  ><p>6,550</p></td><td  ><p>447</p></td></tr><tr><td class="firstcol " ><p>Q3 2022</p></td><td  ><p>15,338</p></td><td  ><p>1,019</p></td><td  ><p>5,565</p></td><td  ><p>66</p></td></tr><tr><td class="firstcol " ><p>Q4 2022</p></td><td  ><p>14,042</p></td><td  ><p>−664</p></td><td  ><p>5,599</p></td><td  ><p>21</p></td></tr><tr><td class="firstcol " ><p><strong>Q1 2023</strong></p></td><td  ><p><strong>11,715</strong></p></td><td  ><p><strong>−2,758</strong></p></td><td  ><p><strong>5,353</strong></p></td><td  ><p><strong>−139</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Q2 2023</strong></p></td><td  ><p><strong>12,949</strong></p></td><td  ><p><strong>1,481</strong></p></td><td  ><p><strong>5,359</strong></p></td><td  ><p><strong>27</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Q3 2023</strong></p></td><td  ><p><strong>14,158</strong></p></td><td  ><p><strong>297</strong></p></td><td  ><p><strong>5,800</strong></p></td><td  ><p><strong>299</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Q4 2023</strong></p></td><td  ><p><strong>15,406</strong></p></td><td  ><p><strong>2,669</strong></p></td><td  ><p><strong>6,168</strong></p></td><td  ><p><strong>667</strong></p></td></tr><tr><td class="firstcol " ><p>Q1 2024</p></td><td  ><p>12,724</p></td><td  ><p>−381</p></td><td  ><p>5,473</p></td><td  ><p>123</p></td></tr><tr><td class="firstcol " ><p>Q2 2024</p></td><td  ><p>12,833</p></td><td  ><p>−1,610</p></td><td  ><p>5,835</p></td><td  ><p>265</p></td></tr><tr><td class="firstcol " ><p>Q3 2024</p></td><td  ><p>13,284</p></td><td  ><p>−16,639</p></td><td  ><p>6,819</p></td><td  ><p>771</p></td></tr><tr><td class="firstcol " ><p>Q4 2024</p></td><td  ><p>14,260</p></td><td  ><p>−126</p></td><td  ><p>7,658</p></td><td  ><p>482</p></td></tr><tr><td class="firstcol " ><p><strong>Q1 2025</strong></p></td><td  ><p><strong>12,667</strong></p></td><td  ><p><strong>−821</strong></p></td><td  ><p><strong>7,438</strong></p></td><td  ><p><strong>709</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Q2 2025</strong></p></td><td  ><p><strong>12,859</strong></p></td><td  ><p><strong>−2,918</strong></p></td><td  ><p><strong>7,685</strong></p></td><td  ><p><strong>872</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Q3 2025</strong></p></td><td  ><p><strong>13,653</strong></p></td><td  ><p><strong>4,063</strong></p></td><td  ><p><strong>9,246</strong></p></td><td  ><p><strong>1,243</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Q4 2025</strong></p></td><td  ><p><strong>13,674</strong></p></td><td  ><p><strong>−591</strong></p></td><td  ><p><strong>10,270</strong></p></td><td  ><p><strong>1,511</strong></p></td></tr><tr><td class="firstcol " ><p>Q1 2026</p></td><td  ><p>13,577</p></td><td  ><p>−3,728</p></td><td  ><p>10,253</p></td><td  ><p>1,383</p></td></tr><tr><td class="firstcol " ><p>Q2 2026</p></td><td  ><p>16,128</p></td><td  ><p>−11,033</p></td><td  ><p>11,536</p></td><td  ><p>2,297</p></td></tr><tr><td class="firstcol " ><p>Q3 2026</p></td><td  ><p>16,513</p></td><td  ><p>3,320</p></td><td  ><p>13,377</p></td><td  ><p>2,428</p></td></tr></tbody></table></div><div class="collapsible-block-end"></div><p>But total revenue is still something else entirely. Intel has remained relatively flat in terms of its own revenue figures, while AMD has surged on the inside. Its recent earnings call puts AMD at roughly twice what it was reporting just two years ago. </p><p>For the fabless company to be where it is, and where it's expected to be by the end of the year, is quite staggering. Especially for any of us who watched AMD flailing around in the mid-2010s. You've got to hand it to Dr. Su, the turnaround for AMD has been little short of miraculous.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/processors/amd-says-its-going-to-beat-intel-in-total-revenue-for-the-very-first-time-by-the-end-of-2026/</link>
                                                                            <description>
                            <![CDATA[ Intel's expecting to hit $15 - $16 billion for Q4 2026, while AMD is looking at an impressive $17 billion. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">CfindVsX2c9eWBGzkuwFvU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/V9LdBo4DrpBFbnbAfjfyWA-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 04 Nov 2026 12:40:51 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Processors]]></category>
                                                    <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/V9LdBo4DrpBFbnbAfjfyWA-1920-80.jpg">
                                                            <media:credit><![CDATA[AMD]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Dr. Lisa Su holding an AMD Ryzen 9 7950X CPU]]></media:description>                                                            <media:text><![CDATA[Dr. Lisa Su holding an AMD Ryzen 9 7950X CPU]]></media:text>
                                <media:title type="plain"><![CDATA[Dr. Lisa Su holding an AMD Ryzen 9 7950X CPU]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/V9LdBo4DrpBFbnbAfjfyWA-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>AMD has just posted another record quarter, with revenue topping $13 billion and its net income sitting at $2.4 billion. That is a lot of billions, and my brain is slightly struggling to comprehend it. But AMD's CFO and treasurer, Jean Hu, is projecting that this success will continue into the next quarter, <a href="https://finance.yahoo.com/quote/AMD/earnings/AMD-Q3-2026-earnings_call-724028.html#:~:text=We%20expect%20revenue%20to%20be%20approximately%20%2417%20billion" target="_blank">predicting revenue figures of around $17 billion for Q4.</a> Let's just compare that to Intel, which is expecting to continue posting flat, or slightly down, revenue figures of $15 - $16 billion itself.</p><p>Such a result would represent the first time that AMD has actually generated higher revenue figures than Intel for its lifetime. Or as far back as I can find the actual revenue figures for anyways.</p><p>Whether that will necessarily translate into a higher net income figure for AMD, I'm not entirely sure. Maths is not my strong point, and whether AMD's total revenue going up by another $3 billion will push its net income over the $3 billion mark where Intel currently sits I'm not sure. But it's going to be mighty close for sure.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script><p>But net income is not really the significant thing in terms of making history; AMD has been consistently turning a profit since 2018, and in the years up to now there have definitely been times when it has beaten Intel on that score, most notably in 2024 where Intel reported a staggering $18.7 billion loss for the year. AMD made $1.6 billion in that same timeframe. And last year AMD beat Intel again in the profit stakes.</p><p>Despite it being a <a href="https://www.pcgamer.com/hardware/processors/intel-shifts-panther-lake-capacity-to-data-center-chips-while-the-memory-crisis-wreaks-havoc-on-pc-market-still-sold-out-of-budget-wildcat-lake-chips/" target="_blank">punishing last quarter for Intel</a> in terms of its stock price collapsing, the company did at least return to profitability.</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:1660px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="uSa98LS7GoXmf99eBXASye" name="1793794263.jpg" alt="Intel vs AMD quarterly revenue" src="https://cdn.mos.cms.futurecdn.net/uSa98LS7GoXmf99eBXASye-1920-80.jpg" mos="" align="middle" fullscreen="" width="1660" height="934" 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><div class="collapsible-block-start"></div><div class="collapsible-block-title"check-out-the-data"><p>Check out the data 👇</p></div><div ><table><caption>Intel vs. AMD quarterly revenue and profit</caption><thead><tr><th class="firstcol " ><p>Quarter</p></th><th  ><p>Intel Revenue ($M)</p></th><th  ><p>Intel Net Income ($M)</p></th><th  ><p>AMD Revenue ($M)</p></th><th  ><p>AMD Net Income ($M)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Q1 2021</strong></p></td><td  ><p><strong>19,673</strong></p></td><td  ><p><strong>3,360</strong></p></td><td  ><p><strong>3,445</strong></p></td><td  ><p><strong>555</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Q2 2021</strong></p></td><td  ><p><strong>19,631</strong></p></td><td  ><p><strong>5,060</strong></p></td><td  ><p><strong>3,850</strong></p></td><td  ><p><strong>710</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Q3 2021</strong></p></td><td  ><p><strong>19,192</strong></p></td><td  ><p><strong>6,823</strong></p></td><td  ><p><strong>4,313</strong></p></td><td  ><p><strong>923</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Q4 2021</strong></p></td><td  ><p><strong>20,528</strong></p></td><td  ><p><strong>4,623</strong></p></td><td  ><p><strong>4,826</strong></p></td><td  ><p><strong>974</strong></p></td></tr><tr><td class="firstcol " ><p>Q1 2022</p></td><td  ><p>18,353</p></td><td  ><p>8,113</p></td><td  ><p>5,887</p></td><td  ><p>786</p></td></tr><tr><td class="firstcol " ><p>Q2 2022</p></td><td  ><p>15,321</p></td><td  ><p>−454</p></td><td  ><p>6,550</p></td><td  ><p>447</p></td></tr><tr><td class="firstcol " ><p>Q3 2022</p></td><td  ><p>15,338</p></td><td  ><p>1,019</p></td><td  ><p>5,565</p></td><td  ><p>66</p></td></tr><tr><td class="firstcol " ><p>Q4 2022</p></td><td  ><p>14,042</p></td><td  ><p>−664</p></td><td  ><p>5,599</p></td><td  ><p>21</p></td></tr><tr><td class="firstcol " ><p><strong>Q1 2023</strong></p></td><td  ><p><strong>11,715</strong></p></td><td  ><p><strong>−2,758</strong></p></td><td  ><p><strong>5,353</strong></p></td><td  ><p><strong>−139</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Q2 2023</strong></p></td><td  ><p><strong>12,949</strong></p></td><td  ><p><strong>1,481</strong></p></td><td  ><p><strong>5,359</strong></p></td><td  ><p><strong>27</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Q3 2023</strong></p></td><td  ><p><strong>14,158</strong></p></td><td  ><p><strong>297</strong></p></td><td  ><p><strong>5,800</strong></p></td><td  ><p><strong>299</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Q4 2023</strong></p></td><td  ><p><strong>15,406</strong></p></td><td  ><p><strong>2,669</strong></p></td><td  ><p><strong>6,168</strong></p></td><td  ><p><strong>667</strong></p></td></tr><tr><td class="firstcol " ><p>Q1 2024</p></td><td  ><p>12,724</p></td><td  ><p>−381</p></td><td  ><p>5,473</p></td><td  ><p>123</p></td></tr><tr><td class="firstcol " ><p>Q2 2024</p></td><td  ><p>12,833</p></td><td  ><p>−1,610</p></td><td  ><p>5,835</p></td><td  ><p>265</p></td></tr><tr><td class="firstcol " ><p>Q3 2024</p></td><td  ><p>13,284</p></td><td  ><p>−16,639</p></td><td  ><p>6,819</p></td><td  ><p>771</p></td></tr><tr><td class="firstcol " ><p>Q4 2024</p></td><td  ><p>14,260</p></td><td  ><p>−126</p></td><td  ><p>7,658</p></td><td  ><p>482</p></td></tr><tr><td class="firstcol " ><p><strong>Q1 2025</strong></p></td><td  ><p><strong>12,667</strong></p></td><td  ><p><strong>−821</strong></p></td><td  ><p><strong>7,438</strong></p></td><td  ><p><strong>709</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Q2 2025</strong></p></td><td  ><p><strong>12,859</strong></p></td><td  ><p><strong>−2,918</strong></p></td><td  ><p><strong>7,685</strong></p></td><td  ><p><strong>872</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Q3 2025</strong></p></td><td  ><p><strong>13,653</strong></p></td><td  ><p><strong>4,063</strong></p></td><td  ><p><strong>9,246</strong></p></td><td  ><p><strong>1,243</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Q4 2025</strong></p></td><td  ><p><strong>13,674</strong></p></td><td  ><p><strong>−591</strong></p></td><td  ><p><strong>10,270</strong></p></td><td  ><p><strong>1,511</strong></p></td></tr><tr><td class="firstcol " ><p>Q1 2026</p></td><td  ><p>13,577</p></td><td  ><p>−3,728</p></td><td  ><p>10,253</p></td><td  ><p>1,383</p></td></tr><tr><td class="firstcol " ><p>Q2 2026</p></td><td  ><p>16,128</p></td><td  ><p>−11,033</p></td><td  ><p>11,536</p></td><td  ><p>2,297</p></td></tr><tr><td class="firstcol " ><p>Q3 2026</p></td><td  ><p>16,513</p></td><td  ><p>3,320</p></td><td  ><p>13,377</p></td><td  ><p>2,428</p></td></tr></tbody></table></div><div class="collapsible-block-end"></div><p>But total revenue is still something else entirely. Intel has remained relatively flat in terms of its own revenue figures, while AMD has surged on the inside. Its recent earnings call puts AMD at roughly twice what it was reporting just two years ago. </p><p>For the fabless company to be where it is, and where it's expected to be by the end of the year, is quite staggering. Especially for any of us who watched AMD flailing around in the mid-2010s. You've got to hand it to Dr. Su, the turnaround for AMD has been little short of miraculous.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Dodgy download and spoofed job ad led to $6.3 billion Binance hack: attacker offered fake software and fake job to infiltrate company wallets and steal billions ]]></title>
                                                                                                <dc:content><![CDATA[ <p>A chain of events that led to a <a href="https://www.pcgamer.com/software/security/compromised-laptop-could-be-to-blame-for-record-usd6-3-billion-cryptocurrency-heist-binance-rushes-to-freeze-stolen-assets-as-experts-blame-north-korean-group/" target="_blank">record-breaking $6.3 billion mega-hack</a> began with a dodgy download, so <a href="https://x.com/binance/status/2117626126214504729" target="_blank">says the company that was hacked</a>, Binance. </p><p>The world's largest cryptocurrency exchange says that the hack was not a "single isolated breach or simple phishing incident"; multiple steps were required to break through its security measures. It all began when a Wallet DevOps engineer (named Engineer A) downloaded a tampered Homebrew installation that was suggested to them by an unnamed search engine. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script><p>Homebrew is a third-party package manager for macOS. A <a href="https://isc.sans.edu/diary/32942" target="_blank">report from the SANS Technology Institute</a>, linked to in Binance's investigation, suggests that malicious adverts for Homebrew have been spotted in search engine results, hoping to ensnare users into installing malware on a user's PC.</p><p>"Our security team detected the anomaly, replaced the device, and rotated all related credentials as a proactive security action," Binance says. "However, Engineer A’s role and his related colleagues on our wallet infrastructure team was exposed to the hacker."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2117626126214504729"><p lang="en" dir="ltr">https://t.co/sU9dUqLQDH<a href="https://twitter.com/cantworkitout/status/2117626126214504729">November 3, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Then came a separate incident with a software engineer (named Engineer B). They were contacted through a job hunting platform (Binance says it was a legitimate platform) and was asked to attend a first-round interview with a HR representative. This was followed by up a second-round interview with the CEO. Not the HR representative, nor the CEO, however, were real; the company was made up.</p><p>The aim of the interviews? To offer Engineer B an 'assignment' that was really a repository of malicious code that executed during setup. The malware ran a series of commands and evasion techniques to avoid detection, thus avoiding Binance's security checks.</p><p>The attacker used Engineer B's now-compromised computer and an internal AI tool to gain control over two further machines: that of Engineer A and another Wallet Software engineer (Engineer C). They discovered a container deployment permission token on Engineer A's machine. With this, they could log into Engineer C's computer using the stolen credentials to create a container and trigger a malicious script to start the mega-hack that would drain $6.3 billion worth of funds from wallets used to store transitory funds by the exchange.</p><p>So, basically, the internet is a bad place, and you can't trust anyone. Or, at least, you have to have your wits about you—especially if you happen to have the key to a multi-billion dollar company's finances stored on your PC somewhere. Luckily, my PC is just pictures of my cat and a Steam backlog that won't quit.</p><p>That's actually some of the criticism levelled at the company. Should it have been possible to get this level of access even with spoofed ads and jobs?</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2117655585956958581"><p lang="en" dir="ltr">TLDR: If DPRK are reading this, they should be saying "time for round 2".Takeaways:- critical infra engineers are free to download arbitrary software on work laptops.- the day-to-day work setup can connect to billion dollar signing environments.- no human oversight or physical confirmation for moving 10-figs of value / EIP-7702 code change.- various AI vibe-based tools running in corp environments doing god knows what except serving as a remote compromise surface, framed as a good thing btw.- none of the above labelled as the problem. - instead, reads as blaming employees for falling for social engineering, and anti-virus not catching the malware. This is a dog-ate-my-homework level excuse deployed after a nuclear-failure level event.Sincerely hoping binance have more reloads available to cover the next losses too. Reaching exchange hot wallets will never be near impossible, but it should not be this easy either.<a href="https://twitter.com/cantworkitout/status/2117655585956958581">November 3, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>And here's Binance co-founder Yi He on taking that criticism...</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2117951579588595963"><p lang="en" dir="ltr">Regarding criticism and suggestions about Binance’s security and access management, we accept them all. We have always believed that transparency builds trust. We read every comment one by one. Binance is not a perfect company, but a company that is constantly evolving. Criticism shows that people have expectations and standards for Binance, and these are sources of motivation for our growth.Binance has never shirked responsibility where problems exist. At present, as a trading platform, Binance needs to address three issues:1）Will users’ funds be affected? Binance will bear full responsibility，this is what we should do. Legally, if the funding gap is large, one could file for bankruptcy and run away, but Binance operates in a “user-centric” way, with contractual spirit and a sense of moral responsibility.2）How did the problem occur? Before publication, many professionals advised that it would be best not to include details, but we believe transparency creates trust. If this report is of reference value to other peers regarding the complexity of social engineering and the warning about AI permission boundaries, then the report is meaningful.3）How can it be prevented in the future? We have already restructured security boundaries across departmental access management, security environments, updated devices, reset AI tools, and in accordance with zero-trust and least-privilege principles. A security audit will subsequently issue a report.Finally, we welcome more top AI security experts and technical talent to join Binance. You can DM me directly or apply on the Binance website for positions you are interested in. Joining Binance to verify this security system is the best way to validate it.关于对币安的安全和权限管理的批评建议，我们都认。我们一直相信坦透明会建立信任，大家的评论都有一条一条看，币安不是完美的公司，但是一个一直在进化的公司，批评说明对币安有期望，对币安有标准，这些都是我们成长的动力源泉。币安有问题的地方也从来没有推卸过责任。当下，币安作为交易平台需要解决三个问题：1）用户的钱会不会受影响？币安会完全承担，这是我们应该做的。法律上资金缺口大可以申请破产跑路，但币安经营是“以用户中心”，是契约精神和大义。2）问题是怎么发生的？发布前很多专业人士的意见是最好没有细节，但我们认为透明产生信任，如果这个报告在社会工程的复杂度，在AI权限边界的警示对其他同行有参考意义，那么这个报告就有意义。3）以后如何杜绝？当前已经从各部门权限管理，安全环境，更新设备，重置AI工具，并遵循0信任、最小化原则重构安全边界，后续会由安全审计出具报告。最后欢迎更多顶尖的AI安全专家和技术人才加入币安，您可以直接DM我本人，也可以在币安网站申请你感兴趣的岗位。加入币安来验证这套安全体系是最好的验证办法。<a href="https://twitter.com/cantworkitout/status/2117951579588595963">November 4, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Reminder that the FBI reckons a North Korean hacking group is behind the attack, which <a href="https://www.pcgamer.com/software/security/users-pull-usd3-6-bn-from-binance-as-it-reopens-following-usd6-3-billion-mega-hack-fbi-says-north-korean-hacking-group-tradertraitor-to-blame-north-korea-says-nuh-uh/" target="_blank">North Korean officials have unsurprisingly denied</a>. Binance has frozen roughly half of the funds that were initially stolen, and has already covered the rest.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/dodgy-download-and-spoofed-job-ad-led-to-usd6-3-billion-binance-hack-attacker-offered-fake-software-and-fake-job-to-infiltrate-company-wallets-and-steal-billions/</link>
                                                                            <description>
                            <![CDATA[ I'm feeling fresh appreciation for my company's mandatory cybersecurity awareness course. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">pUnfJRpx6td2WZrb7WUerB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/eDGcGRApH6Ut5G9XMKVRHB-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 04 Nov 2026 11:12:58 +0000</pubDate>                                                                                                                                <updated>Wed, 04 Nov 2026 12:48:34 +0000</updated>
                                                                                                                                            <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&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/eDGcGRApH6Ut5G9XMKVRHB-1920-80.jpg">
                                                            <media:credit><![CDATA[Binance]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Binance logo on a screen.]]></media:description>                                                            <media:text><![CDATA[The Binance logo on a screen.]]></media:text>
                                <media:title type="plain"><![CDATA[The Binance logo on a screen.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/eDGcGRApH6Ut5G9XMKVRHB-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>A chain of events that led to a <a href="https://www.pcgamer.com/software/security/compromised-laptop-could-be-to-blame-for-record-usd6-3-billion-cryptocurrency-heist-binance-rushes-to-freeze-stolen-assets-as-experts-blame-north-korean-group/" target="_blank">record-breaking $6.3 billion mega-hack</a> began with a dodgy download, so <a href="https://x.com/binance/status/2117626126214504729" target="_blank">says the company that was hacked</a>, Binance. </p><p>The world's largest cryptocurrency exchange says that the hack was not a "single isolated breach or simple phishing incident"; multiple steps were required to break through its security measures. It all began when a Wallet DevOps engineer (named Engineer A) downloaded a tampered Homebrew installation that was suggested to them by an unnamed search engine. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePmlVW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePmlVW.js" async=""></script><p>Homebrew is a third-party package manager for macOS. A <a href="https://isc.sans.edu/diary/32942" target="_blank">report from the SANS Technology Institute</a>, linked to in Binance's investigation, suggests that malicious adverts for Homebrew have been spotted in search engine results, hoping to ensnare users into installing malware on a user's PC.</p><p>"Our security team detected the anomaly, replaced the device, and rotated all related credentials as a proactive security action," Binance says. "However, Engineer A’s role and his related colleagues on our wallet infrastructure team was exposed to the hacker."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2117626126214504729"><p lang="en" dir="ltr">https://t.co/sU9dUqLQDH<a href="https://twitter.com/cantworkitout/status/2117626126214504729">November 3, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Then came a separate incident with a software engineer (named Engineer B). They were contacted through a job hunting platform (Binance says it was a legitimate platform) and was asked to attend a first-round interview with a HR representative. This was followed by up a second-round interview with the CEO. Not the HR representative, nor the CEO, however, were real; the company was made up.</p><p>The aim of the interviews? To offer Engineer B an 'assignment' that was really a repository of malicious code that executed during setup. The malware ran a series of commands and evasion techniques to avoid detection, thus avoiding Binance's security checks.</p><p>The attacker used Engineer B's now-compromised computer and an internal AI tool to gain control over two further machines: that of Engineer A and another Wallet Software engineer (Engineer C). They discovered a container deployment permission token on Engineer A's machine. With this, they could log into Engineer C's computer using the stolen credentials to create a container and trigger a malicious script to start the mega-hack that would drain $6.3 billion worth of funds from wallets used to store transitory funds by the exchange.</p><p>So, basically, the internet is a bad place, and you can't trust anyone. Or, at least, you have to have your wits about you—especially if you happen to have the key to a multi-billion dollar company's finances stored on your PC somewhere. Luckily, my PC is just pictures of my cat and a Steam backlog that won't quit.</p><p>That's actually some of the criticism levelled at the company. Should it have been possible to get this level of access even with spoofed ads and jobs?</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2117655585956958581"><p lang="en" dir="ltr">TLDR: If DPRK are reading this, they should be saying "time for round 2".Takeaways:- critical infra engineers are free to download arbitrary software on work laptops.- the day-to-day work setup can connect to billion dollar signing environments.- no human oversight or physical confirmation for moving 10-figs of value / EIP-7702 code change.- various AI vibe-based tools running in corp environments doing god knows what except serving as a remote compromise surface, framed as a good thing btw.- none of the above labelled as the problem. - instead, reads as blaming employees for falling for social engineering, and anti-virus not catching the malware. This is a dog-ate-my-homework level excuse deployed after a nuclear-failure level event.Sincerely hoping binance have more reloads available to cover the next losses too. Reaching exchange hot wallets will never be near impossible, but it should not be this easy either.<a href="https://twitter.com/cantworkitout/status/2117655585956958581">November 3, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>And here's Binance co-founder Yi He on taking that criticism...</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2117951579588595963"><p lang="en" dir="ltr">Regarding criticism and suggestions about Binance’s security and access management, we accept them all. We have always believed that transparency builds trust. We read every comment one by one. Binance is not a perfect company, but a company that is constantly evolving. Criticism shows that people have expectations and standards for Binance, and these are sources of motivation for our growth.Binance has never shirked responsibility where problems exist. At present, as a trading platform, Binance needs to address three issues:1）Will users’ funds be affected? Binance will bear full responsibility，this is what we should do. Legally, if the funding gap is large, one could file for bankruptcy and run away, but Binance operates in a “user-centric” way, with contractual spirit and a sense of moral responsibility.2）How did the problem occur? Before publication, many professionals advised that it would be best not to include details, but we believe transparency creates trust. If this report is of reference value to other peers regarding the complexity of social engineering and the warning about AI permission boundaries, then the report is meaningful.3）How can it be prevented in the future? We have already restructured security boundaries across departmental access management, security environments, updated devices, reset AI tools, and in accordance with zero-trust and least-privilege principles. A security audit will subsequently issue a report.Finally, we welcome more top AI security experts and technical talent to join Binance. You can DM me directly or apply on the Binance website for positions you are interested in. Joining Binance to verify this security system is the best way to validate it.关于对币安的安全和权限管理的批评建议，我们都认。我们一直相信坦透明会建立信任，大家的评论都有一条一条看，币安不是完美的公司，但是一个一直在进化的公司，批评说明对币安有期望，对币安有标准，这些都是我们成长的动力源泉。币安有问题的地方也从来没有推卸过责任。当下，币安作为交易平台需要解决三个问题：1）用户的钱会不会受影响？币安会完全承担，这是我们应该做的。法律上资金缺口大可以申请破产跑路，但币安经营是“以用户中心”，是契约精神和大义。2）问题是怎么发生的？发布前很多专业人士的意见是最好没有细节，但我们认为透明产生信任，如果这个报告在社会工程的复杂度，在AI权限边界的警示对其他同行有参考意义，那么这个报告就有意义。3）以后如何杜绝？当前已经从各部门权限管理，安全环境，更新设备，重置AI工具，并遵循0信任、最小化原则重构安全边界，后续会由安全审计出具报告。最后欢迎更多顶尖的AI安全专家和技术人才加入币安，您可以直接DM我本人，也可以在币安网站申请你感兴趣的岗位。加入币安来验证这套安全体系是最好的验证办法。<a href="https://twitter.com/cantworkitout/status/2117951579588595963">November 4, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Reminder that the FBI reckons a North Korean hacking group is behind the attack, which <a href="https://www.pcgamer.com/software/security/users-pull-usd3-6-bn-from-binance-as-it-reopens-following-usd6-3-billion-mega-hack-fbi-says-north-korean-hacking-group-tradertraitor-to-blame-north-korea-says-nuh-uh/" target="_blank">North Korean officials have unsurprisingly denied</a>. Binance has frozen roughly half of the funds that were initially stolen, and has already covered the rest.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Modders bring Steam Frame build of SteamOS and all of its translation layer goodness to Mac ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/LiNrI18ak48" allowfullscreen=""></iframe></div></div><p>Gaming on Mac has come a long way. Gone are the days of limited releases, though not absolutely everything is playable on the platform. Thankfully, community developers are only too keen to plug the gaps.</p><p><a href="https://github.com/fxgl/steamac" target="_blank">FX Steam Launcher on</a> GitHub brings SteamOS to Apple Silicon Macs. Specifically, this independent, open-source project is based on the ARM64 Steam Frame version of the operating system. Therefore, you're getting Windows game compatibility on Mac thanks to <a href="https://www.pcgamer.com/games/vr/valves-latest-proton-11-beta-has-been-quietly-released-in-an-even-more-beta-arm64-flavour-and-you-can-thank-the-steam-frame-for-that/" target="_blank">Proton 11</a> and <a href="https://www.pcgamer.com/hardware/vr-hardware/valve-may-be-putting-the-finishing-touches-to-the-steam-frame-software-stack-because-lepton-and-fex-are-now-on-steam/" target="_blank">FEX</a>, alongside the very swish SteamOS interface (via <a href="https://videocardz.com/newz/modders-bring-full-steamos-to-apple-macs-windows-games-already-playable" target="_blank">Videocardz</a>).</p><p>Obviously, there are a few things to bear in mind if you want to go all in as a Mac gamer. For one thing, this is not a native installation, and is instead running SteamOS by way of a virtual machine on your Mac. For another, this is a GitHub download to begin with, but once you've got it installed, the launcher directly downloads the official SteamOS image from Valve and then even handles OS updates too. Neat!</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>As this is an unofficial effort, there are a few more caveats still. The FX Steam Launcher itself currently only supports Apple Silicon Macs running either macOS 15 (from September, 2024) or newer. However, to actually get the latest and greatest running, you may need something much more recent than that.</p><p>Bear with me here, but Proton and FEX are essentially only the first hurdle. DXVK is required to run DirectX 9, 10, and 11 games, while DirectX 12 releases rely on VKD3D-Proton. Then either MoltenVK or KosmicKrisp is the next hurdle graphics instructions will need to pass before finally handing off the baton to Apple’s Metal API (though there's some experimental support for DXMT, which allows DirectX 10 and 11 games to run without VKD3D-Proton).</p><a href="https://youtu.be/LiNrI18ak48?si=d4beKpyyilFFgWxP" target="_blank"><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="hBG4gj3Z7aKXNTU5y7jDbN" name="SteamOS on Mac" alt="Someone just out of frame gestures at their Apple Mac M4 Mini running SteamOS and playable Windows games. A new 2026 Steam Controller is also in shot." src="https://cdn.mos.cms.futurecdn.net/hBG4gj3Z7aKXNTU5y7jDbN-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: <a href="https://www.youtube.com/watch?v=LiNrI18ak48" target="_blank">ETA Prime</a>, YouTube)</span></figcaption></figure></a><p>Anyway, all of that is to say KosmicKrisp, a pretty pivotal translation layer in this whole process, requires at least macOS 26 or later to run. That's a fair amount of hoops to jump through, though; if you can get it running, the launcher does allow you to run SteamOS either windowed or fullscreen, while letting you still access macOS either way.</p><p>On account of not being a Mac power user, I've not had a chance to test it out myself, but <a href="https://www.youtube.com/watch?v=LiNrI18ak48" target="_blank">YouTube creator ETA Prime tested the launcher</a> with The Witcher 3, Stellar Blade, and Left 4 Dead 2 on their Apple M4 Max. At high settings, the creator saw performance to the tune of over 70 FPS for each of these games, with Left 4 Dead 2 breezing past 200.</p><p>That said, Stellar Blade was running at a mere 800p resolution, while the rest of their tests ran at a maximum of 1080p. Furthermore, not all the games they tested even ran as well as these cherry-picked examples (to say nothing of The Witcher 3's funky-looking trees).</p><p>Still, what's possible with this launcher remains impressive, though gaming on Mac even without it is far more viable than it once was. For Apple's big 50th birthday earlier this year, <a href="https://www.pcgamer.com/hardware/apple-turns-50-today-heres-what-it-does-better-than-pc-no-foolin/" target="_blank">our Jacob explored the things Mac does better than PC</a>. Our Ian was also mighty impressed with the <a href="https://www.pcgamer.com/hardware/gaming-pcs/apple-mac-studio-m4-max-review/" target="_blank">Apple Mac Studio M4 Max</a>—though he does also note, "Christ, what are you doing? Buy something else for gaming".</p><p>On that front, any would-be Mac gamer could do much worse than the <a href="https://www.pcgamer.com/hardware/gaming-laptops/macbook-neo-review/" target="_blank">MacBook Neo</a>, which is now going for $699/£699. <a href="https://www.pcgamer.com/hardware/memory/the-ram-crisis-comes-for-apple-mac-and-ipad-prices-jacked-up-by-hundreds-as-company-says-we-have-never-seen-a-component-price-increase-this-much-this-quickly/" target="_blank">Not even Apple is safe from the memory supply crisis</a>, but as the situation <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">continues to drive up the cost of traditional gaming PC parts</a>, who could blame a gamer on a budget still picking up the MacBook Neo instead? Especially with unofficial projects like FX Steam Launcher at their fingertips.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/operating-systems/modders-bring-steam-frame-build-of-steamos-and-all-of-its-translation-layer-goodness-to-mac/</link>
                                                                            <description>
                            <![CDATA[ Unofficial support, but still in the game. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">qhrZZob9Q7uP2cCPBxDakR</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/bvBBk23DEaHmvBdZ5eTAEP-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Tue, 03 Nov 2026 13:55:31 +0000</pubDate>                                                                                                                                <updated>Tue, 03 Nov 2026 14:51:39 +0000</updated>
                                                                                                                                            <category><![CDATA[Operating Systems]]></category>
                                                    <category><![CDATA[Software]]></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/png" url="https://cdn.mos.cms.futurecdn.net/bvBBk23DEaHmvBdZ5eTAEP-1920-80.png">
                                                            <media:credit><![CDATA[ETA Prime, YouTube]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Someone just out of frame gestures at their Apple Mac M4 Mini running SteamOS and playable Windows games. A new 2026 Steam Controller is also in shot.]]></media:description>                                                            <media:text><![CDATA[Someone just out of frame gestures at their Apple Mac M4 Mini running SteamOS and playable Windows games. A new 2026 Steam Controller is also in shot.]]></media:text>
                                <media:title type="plain"><![CDATA[Someone just out of frame gestures at their Apple Mac M4 Mini running SteamOS and playable Windows games. A new 2026 Steam Controller is also in shot.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/bvBBk23DEaHmvBdZ5eTAEP-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/LiNrI18ak48" allowfullscreen=""></iframe></div></div><p>Gaming on Mac has come a long way. Gone are the days of limited releases, though not absolutely everything is playable on the platform. Thankfully, community developers are only too keen to plug the gaps.</p><p><a href="https://github.com/fxgl/steamac" target="_blank">FX Steam Launcher on</a> GitHub brings SteamOS to Apple Silicon Macs. Specifically, this independent, open-source project is based on the ARM64 Steam Frame version of the operating system. Therefore, you're getting Windows game compatibility on Mac thanks to <a href="https://www.pcgamer.com/games/vr/valves-latest-proton-11-beta-has-been-quietly-released-in-an-even-more-beta-arm64-flavour-and-you-can-thank-the-steam-frame-for-that/" target="_blank">Proton 11</a> and <a href="https://www.pcgamer.com/hardware/vr-hardware/valve-may-be-putting-the-finishing-touches-to-the-steam-frame-software-stack-because-lepton-and-fex-are-now-on-steam/" target="_blank">FEX</a>, alongside the very swish SteamOS interface (via <a href="https://videocardz.com/newz/modders-bring-full-steamos-to-apple-macs-windows-games-already-playable" target="_blank">Videocardz</a>).</p><p>Obviously, there are a few things to bear in mind if you want to go all in as a Mac gamer. For one thing, this is not a native installation, and is instead running SteamOS by way of a virtual machine on your Mac. For another, this is a GitHub download to begin with, but once you've got it installed, the launcher directly downloads the official SteamOS image from Valve and then even handles OS updates too. Neat!</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>As this is an unofficial effort, there are a few more caveats still. The FX Steam Launcher itself currently only supports Apple Silicon Macs running either macOS 15 (from September, 2024) or newer. However, to actually get the latest and greatest running, you may need something much more recent than that.</p><p>Bear with me here, but Proton and FEX are essentially only the first hurdle. DXVK is required to run DirectX 9, 10, and 11 games, while DirectX 12 releases rely on VKD3D-Proton. Then either MoltenVK or KosmicKrisp is the next hurdle graphics instructions will need to pass before finally handing off the baton to Apple’s Metal API (though there's some experimental support for DXMT, which allows DirectX 10 and 11 games to run without VKD3D-Proton).</p><a href="https://youtu.be/LiNrI18ak48?si=d4beKpyyilFFgWxP" target="_blank"><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="hBG4gj3Z7aKXNTU5y7jDbN" name="SteamOS on Mac" alt="Someone just out of frame gestures at their Apple Mac M4 Mini running SteamOS and playable Windows games. A new 2026 Steam Controller is also in shot." src="https://cdn.mos.cms.futurecdn.net/hBG4gj3Z7aKXNTU5y7jDbN-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: <a href="https://www.youtube.com/watch?v=LiNrI18ak48" target="_blank">ETA Prime</a>, YouTube)</span></figcaption></figure></a><p>Anyway, all of that is to say KosmicKrisp, a pretty pivotal translation layer in this whole process, requires at least macOS 26 or later to run. That's a fair amount of hoops to jump through, though; if you can get it running, the launcher does allow you to run SteamOS either windowed or fullscreen, while letting you still access macOS either way.</p><p>On account of not being a Mac power user, I've not had a chance to test it out myself, but <a href="https://www.youtube.com/watch?v=LiNrI18ak48" target="_blank">YouTube creator ETA Prime tested the launcher</a> with The Witcher 3, Stellar Blade, and Left 4 Dead 2 on their Apple M4 Max. At high settings, the creator saw performance to the tune of over 70 FPS for each of these games, with Left 4 Dead 2 breezing past 200.</p><p>That said, Stellar Blade was running at a mere 800p resolution, while the rest of their tests ran at a maximum of 1080p. Furthermore, not all the games they tested even ran as well as these cherry-picked examples (to say nothing of The Witcher 3's funky-looking trees).</p><p>Still, what's possible with this launcher remains impressive, though gaming on Mac even without it is far more viable than it once was. For Apple's big 50th birthday earlier this year, <a href="https://www.pcgamer.com/hardware/apple-turns-50-today-heres-what-it-does-better-than-pc-no-foolin/" target="_blank">our Jacob explored the things Mac does better than PC</a>. Our Ian was also mighty impressed with the <a href="https://www.pcgamer.com/hardware/gaming-pcs/apple-mac-studio-m4-max-review/" target="_blank">Apple Mac Studio M4 Max</a>—though he does also note, "Christ, what are you doing? Buy something else for gaming".</p><p>On that front, any would-be Mac gamer could do much worse than the <a href="https://www.pcgamer.com/hardware/gaming-laptops/macbook-neo-review/" target="_blank">MacBook Neo</a>, which is now going for $699/£699. <a href="https://www.pcgamer.com/hardware/memory/the-ram-crisis-comes-for-apple-mac-and-ipad-prices-jacked-up-by-hundreds-as-company-says-we-have-never-seen-a-component-price-increase-this-much-this-quickly/" target="_blank">Not even Apple is safe from the memory supply crisis</a>, but as the situation <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">continues to drive up the cost of traditional gaming PC parts</a>, who could blame a gamer on a budget still picking up the MacBook Neo instead? Especially with unofficial projects like FX Steam Launcher at their fingertips.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Users pull $3.6 bn from Binance as it reopens following $6.3 billion mega-hack - FBI says North Korean hacking group 'TraderTraitor' to blame, North Korea says nuh-uh ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Binance saw a huge outpouring of withdrawals when it re-opened to customers on Sunday following a hack for the history books. The cryptocurrency exchange lost $6.3 billion, roughly $3 billion of which was frozen in transit and the rest covered by the company, but it lost a bunch more once it let customers take their money out on November 1.</p><p>Customers withdrew $4.649 billion from the exchange in just under 10 hours since it reopened. That's a whole lot of value to lose in a day, and not wholly surprising given the context, but what is more surprising is how many deposits were made in that same timeframe: roughly $1 billion worth. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>"Withdrawals were temporarily suspended as a precaution while our teams worked to contain the incident loss, assess its impact, restore affected services, and complete security checks," Binance said of the move.</p><p>Users may face slowdowns as systems get back up and running, the company has said.  </p><p>In later updates, Binance says that deposits into the exchange have begun to creep back up in excess of withdrawals; the total cashflow of the crypto exchange is still a net negative, at -$5 billion by November 3, but the withdrawals are no longer outpacing the deposits by any significant amount. It's still early days and a long way to go to make up for the initial loss in customer funds, but the exchange may still live to fight another day.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2117494793446298084"><p lang="en" dir="ltr">Withdrawal data updateBy 03:00 UTC, we are seeing hourly deposits exceed withdrawals, reflecting improving user activity and stabilizing flows. https://t.co/UiXmYC2lm3<a href="https://twitter.com/cantworkitout/status/2117494793446298084">November 3, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Meanwhile, the exact details of the attack are still being deliberated. The <a href="https://www.fbi.gov/investigate/cyber/alerts/2026/north-korea-responsible-for-6-billion-binance-attack" target="_blank">FBI holds North Korea responsible</a>, agreeing with experts that a group going by the name of TraderTraitor is behind it. The FBI says that it, along with USSS and IRS-CI, has observed the group converting the stolen crypto into Ether, with a view to launder it away into obscurity later. </p><p>North Korea, unsurprisingly, <a href="https://www.bbc.co.uk/news/articles/c6rey4v53exgo" target="_blank">denies the FBI's claim</a>. Kim Yo Jong, an official in the NK government, and Kim Jong Un's sister, said it was nothing more than a "sinister attempt" by the US to damage the country's reputation.</p><p>"The US has made a trite provocation of linking it with the Democratic People's Republic of Korea again," Kim Yo Jong said. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/users-pull-usd3-6-bn-from-binance-as-it-reopens-following-usd6-3-billion-mega-hack-fbi-says-north-korean-hacking-group-tradertraitor-to-blame-north-korea-says-nuh-uh/</link>
                                                                            <description>
                            <![CDATA[ Plenty of users still happy to deposit their funds into the cryptocurrency exchange nevertheless. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Fpu2zhkMsU5kEX6bHC4o7A</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/eDGcGRApH6Ut5G9XMKVRHB-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 03 Nov 2026 10:54:30 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&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/eDGcGRApH6Ut5G9XMKVRHB-1920-80.jpg">
                                                            <media:credit><![CDATA[Binance]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Binance logo on a screen.]]></media:description>                                                            <media:text><![CDATA[The Binance logo on a screen.]]></media:text>
                                <media:title type="plain"><![CDATA[The Binance logo on a screen.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/eDGcGRApH6Ut5G9XMKVRHB-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Binance saw a huge outpouring of withdrawals when it re-opened to customers on Sunday following a hack for the history books. The cryptocurrency exchange lost $6.3 billion, roughly $3 billion of which was frozen in transit and the rest covered by the company, but it lost a bunch more once it let customers take their money out on November 1.</p><p>Customers withdrew $4.649 billion from the exchange in just under 10 hours since it reopened. That's a whole lot of value to lose in a day, and not wholly surprising given the context, but what is more surprising is how many deposits were made in that same timeframe: roughly $1 billion worth. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>"Withdrawals were temporarily suspended as a precaution while our teams worked to contain the incident loss, assess its impact, restore affected services, and complete security checks," Binance said of the move.</p><p>Users may face slowdowns as systems get back up and running, the company has said.  </p><p>In later updates, Binance says that deposits into the exchange have begun to creep back up in excess of withdrawals; the total cashflow of the crypto exchange is still a net negative, at -$5 billion by November 3, but the withdrawals are no longer outpacing the deposits by any significant amount. It's still early days and a long way to go to make up for the initial loss in customer funds, but the exchange may still live to fight another day.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2117494793446298084"><p lang="en" dir="ltr">Withdrawal data updateBy 03:00 UTC, we are seeing hourly deposits exceed withdrawals, reflecting improving user activity and stabilizing flows. https://t.co/UiXmYC2lm3<a href="https://twitter.com/cantworkitout/status/2117494793446298084">November 3, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Meanwhile, the exact details of the attack are still being deliberated. The <a href="https://www.fbi.gov/investigate/cyber/alerts/2026/north-korea-responsible-for-6-billion-binance-attack" target="_blank">FBI holds North Korea responsible</a>, agreeing with experts that a group going by the name of TraderTraitor is behind it. The FBI says that it, along with USSS and IRS-CI, has observed the group converting the stolen crypto into Ether, with a view to launder it away into obscurity later. </p><p>North Korea, unsurprisingly, <a href="https://www.bbc.co.uk/news/articles/c6rey4v53exgo" target="_blank">denies the FBI's claim</a>. Kim Yo Jong, an official in the NK government, and Kim Jong Un's sister, said it was nothing more than a "sinister attempt" by the US to damage the country's reputation.</p><p>"The US has made a trite provocation of linking it with the Democratic People's Republic of Korea again," Kim Yo Jong said. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Turtle Beach Command Series MC7 review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Turtle Beach Command Series MC7" data-widget-title=""></div><p>I must admit, I was mighty intrigued by the idea of a modern mouse (and all their high DPI machinations) with a screen slapped on the side, but I must also admit I thought we would be over the growing pains by now, what with screens being slammed into everything from cases to coolers to controllers. </p><p>Yet one look at the Turtle Beach Command Series MC7 suggests those growing pains are still being suffered. And using the mouse only confirms it. </p><p>But I get the idea in concept. I'm a big fan of my Stream Deck, and find myself regularly using its many controls. Being able to shove those into the side of the mouse with clarity to read what they're doing is intriguing. It's also particularly effective when it comes to swapping DPI, polling rate, and even checking the battery. Those are things that do benefit from a visual component. And yet a few weeks with the MC7 have convinced me I won't be making the swap full time. </p><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Buy if…</h3><div class="card__description-wrapper"><div class="card__description"><p>✅ <strong>You gotta have a large screen on your mouse: </strong>As far as I can see, this is the only gaming mouse with modern specs and a big screen from a reputable brand out there. </p></div></div></div></div><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Don&#39;t buy if…</h3><div class="card__description-wrapper"><div class="card__description"><p>❌ <strong>You want a mouse for competitive gaming: </strong>The MC7 is simply not comfortable nor snappy enough for competitive gaming<br /><br />❌ <strong>You don't need a large screen on your mouse: </strong>We've seen small OLED screens from the likes of SteelSeries and CoolerMaster if you're simply looking for something to display figures. </p></div></div></div></div><h2 class="article-body__section" id="section-features"><span>Features</span></h2><div ><table><caption>Turtle Beach Command Series MC7 specs</caption><tbody><tr><td class="firstcol " ><p>Buttons</p></td><td  ><p>11</p></td></tr><tr><td class="firstcol " ><p>Connectivity</p></td><td  ><p>Wired and wireless (2.4 GHz and Bluetooth)</p></td></tr><tr><td class="firstcol " ><p>Sensor</p></td><td  ><p>Owl-Eye Optical</p></td></tr><tr><td class="firstcol " ><p>Switches</p></td><td  ><p>Titan Optical switches</p></td></tr><tr><td class="firstcol " ><p>Feet</p></td><td  ><p>PTFE</p></td></tr><tr><td class="firstcol " ><p>Max DPI</p></td><td  ><p>30,000</p></td></tr><tr><td class="firstcol " ><p>Screen</p></td><td  ><p>2.25-inch colour touch display</p></td></tr><tr><td class="firstcol " ><p>Max acceleration</p></td><td  ><p>70 g</p></td></tr><tr><td class="firstcol " ><p>Max speed</p></td><td  ><p>750</p></td></tr><tr><td class="firstcol " ><p>Polling rate</p></td><td  ><p>Up to 8,000 Hz</p></td></tr><tr><td class="firstcol " ><p>Battery life</p></td><td  ><p>Up to 10 hours (hot-swappable)</p></td></tr><tr><td class="firstcol " ><p>RGB</p></td><td  ><p>On the bottom of the mouse</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>135 g</p></td></tr><tr><td class="firstcol " ><p>Extras</p></td><td  ><p>4D scroll wheel, hot-swappable batteries</p></td></tr><tr><td class="firstcol " ><p>Price</p></td><td  ><p><a href="https://www.bestbuy.com/product/turtle-beach-command-series-mc7-advanced-wireless-touchscreen-optical-gaming-mouse-for-windows-10-11-pc-wireless-black/J39T968THP" target="_blank">$160</a> / <a href="https://uk.turtlebeach.com/products/command-series-mc7-mouse" target="_blank">£140</a></p></td></tr></tbody></table></div><p>Internally, the MC7 has impressive stats. Its Owl-Eye Optical sensor goes all the way up to a max DPI of 30,000, and the polling rate of 8,000 Hz is competitive-level. That's so high, in fact, that the average person won't even see the benefit of it. </p><p>And the elephant in the room here: the 2.25-inch colour display is touch-sensitive too, which means you can flick through a couple of different screens depending on your use case. We have seen screens on gaming mice before, like the <a href="https://legacy.coolermaster.com/en-global/products/mm830/" target="_blank">Cooler Master MM830</a> and <a href="https://steelseries.com/en-gb/gaming-mice/rival-710" target="_blank">SteelSeries Rival 710</a> (neither of which are touch screens), but as far as I can tell, the MC7 is the largest on a modern gaming mouse from a reputable brand. That makes it an oddity at the least. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/w9Dy3EoWsX6eaDaEVRrCna-1920-80.jpg" alt="Turtle Beach Command Series MC7 gaming mouse on a black desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ezp7xv5zboramJmffMpGKc-1920-80.jpg" alt="Turtle Beach Command Series MC7 gaming mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/PuV3MAou88jBtv7GDuPE4c-1920-80.jpg" alt="Turtle Beach Command Series MC7 gaming mouse" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>But that's not all the MC7 has going for it. The 4D scroll wheel means you can go up, down, left and right on a page with just the wheel, and you have extra buttons here, too. You have one at the bottom of the thumb rest, another next to the mouse wheel, plus two on the left-hand side, as well as your standard clicks. </p><p>It's a wireless mouse, so it comes with a 2.4 GHz receiver, and it also has hot-swappable batteries. The battery charger has a spare USB Type-A port, which means your charger can also be the receiver. This is a sweet system, which makes the MC7 feel like it has infinite battery (as long as you are willing to spend twenty seconds swapping the battery every 10 or so hours). </p><h2 class="article-body__section" id="section-performance"><span>Performance</span></h2><p>The Owl-Eye sensor is great. It's consistent and smooth, and never posed any problems in any of the games I threw this mouse at. For everyday gaming, I don't have any complaints about how its internals performed. It's a slightly customised version of the PixArt PAW3950 sensor, and will be familiar to anyone who's used the Razer Deathadder V3 Pro, which previously had the exclusive use of PixArt's 30K sensor.</p><p>The mouse clicks are a tad loud for my liking, but they're plenty snappy. This bad boy is fitted with Titan Optical switches, and they are perfect under my fingertips. I have yet to hit a single double-click and find them to be very responsive. </p><p>However, the biggest problem with performance is how the MC7's weight is balanced and how it feels under the palms. At 135 g grams, it's a fairly heavy mouse (more so than the recent Naga V3 Pro and its mountain of buttons), but this wouldn't be too big of a problem if it could balance that weight in a comfortable way. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/vD6bxaDXoWTpg2Ra9AeQoA-1920-80.png" alt="Turtle Beach Command Series MC7 Mouse Tester results: xCount vs time" /><figcaption>Tested at 1,000 Hz — The closer the dots are together, the more consistent a mouse is reporting movement. More variation or stray dots makes for a less accurate sensor.<small role="credit">Mouse Tester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xtCz82ceDbkEFLdTqpTAnA-1920-80.png" alt="Turtle Beach Command Series MC7 Mouse Tester results: xVelocity vs time" /><figcaption>Tested at 1,000 Hz — The spikes represent an increase in velocity, with more erratic spikes showing tracking going haywire<small role="credit">Mouse Tester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Khx2BrpmWBjjVJBJZT2auA-1920-80.png" alt="Turtle Beach Command Series MC7 Mouse Tester results: xInterval vs time" /><figcaption>Tested at 1,000 Hz — Each dot represents an update, which corresponds to the polling rate. Every 1 ms should mark a single update on a 1,000 Hz mouse.<small role="credit">Mouse Tester</small></figcaption></figure></figure><p>However, it feels clunky, and even has a slight rattle at high speeds. This all contributes to a mouse that feels a little lacking in competitive play, even though it's got the internal chops to handle everything on paper. </p><p>In use, the screen is rather peculiar. Via the Turtle Beach Swarm II software, you can flit between a few screens, which you customise with your own controls, and they are fairly snappy and responsive. However, having to arch my fingers to actually click on the screen means it's not intended for quick play. That makes it better as a micro function, or a way of displaying battery (but the device's lighting can already indicate battery life and DPI setting). It can display things like health and ammo in Counter-Strike 2, but its viewing angles are pretty poor, meaning it doesn't offer much of a tactical advantage. </p><h2 class="article-body__section" id="section-battery-life"><span>Battery Life </span></h2><p>The MC7 comes with two 1000 mAh batteries, both of which are hot-swappable. They connect to a charger (which also has a USB port for your 2.4 GHz connector), and this means you technically only need one USB to do everything for your mouse. It's a great system. </p><p>To swap the batteries out, you simply take off a compartment where your palm rests, pull the battery out and put a new one in. The MC7's onboard battery is just big enough that I've never noticed the device dying while I'm changing batteries. It's pretty sweet, and with a little practice, it can be swapped in seconds. It's not quite as quick to swap as the <a href="https://www.pcgamer.com/hardware/gaming-mice/glorious-model-o3-wireless-review/" target="_blank">Glorious Model O Eternal</a>, with its open battery system, but it is a bit tidier. </p><p>Working on my PC every day, then gaming most nights, I found myself swapping out the battery every few days at 1,000 Hz polling, which is perfectly solid given how convenient swapping the batteries is. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/2YshGLUrQQFBrTt5yqSNbb-1920-80.jpg" alt="Turtle Beach Command Series MC7 gaming mouse on a black table with the charger next to it" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/3YHi6bj82XU3r4BDiEpujb-1920-80.jpg" alt="Turtle Beach Command Series MC7 gaming mouse on a black table with the charger next to it and top off" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><h2 class="article-body__section" id="section-ergonomics"><span>Ergonomics</span></h2><p>The MC7 is a very confusing mouse in regard to its ergonomics. The groove on the left-hand side for your thumb is comfortable and intuitive, yet the two buttons on either side of that groove are awkward to get to. My left thumb buttons on a mouse tend to be going forward and backwards on a page, and therefore I like to have instant access to them. I don't have that access here, and have to physically bend my thumb or extend it to get to each button. The groove also has a texture to it, which is clearly designed so the mouse doesn't slip, and that's also quite strange, as it feels like you aren't encouraged to move your thumb, and yet you have to in order to hit those two buttons. </p><p>The back of the mouse curves to my palm well, but the two mouse click buttons are quite curved in the centre. That means, if I hold my hand on the bottom of the mouse, there's air underneath the bottom of my fingers as I hold it, and if I put my palm forward, then there's air underneath my knuckles. I feel like, no matter what way I hold the mouse, I'm holding it just a little wrong. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/xEHCCq5WHdgjYismdyHnLc-1920-80.jpg" alt="Turtle Beach Command Series MC7 gaming mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9jUFEF2eNeMoH8KZSY3JBc-1920-80.jpg" alt="Turtle Beach Command Series MC7 gaming mouse" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>That's before getting to the screen, a panel that is too long to use all of it while on the go, and close enough to my fingers that I constantly change my DPI whenever I take my hand off the mouse and put it back on again. Perhaps the strangest element of this is that I couldn't seem to figure out a way to lock the screen, which would really make it much better for gaming. </p><p>For quickly changing a song or pausing a video, I actually found myself taking my left finger off the left click and wrapping it around the display instead. As far as I can tell, there just isn't a quick and comfortable way to get to all parts of the screen with ease, and I have quite large hands too.  </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="vPXU8g6cVxeExpTeq58YKc" name="IMG_1096" alt="Turtle Beach Command Series MC7 gaming mouse on stone, from the side centre right" src="https://cdn.mos.cms.futurecdn.net/vPXU8g6cVxeExpTeq58YKc-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>As far as build quality is concerned, the MC7 doesn't feel cheap under the palm, though I'm not a fan of the vibration you get when you click the screen. It just has a hollow feel and sound. The texture on the mouse is cool to the fingertips, and it handles fingerprints well. Despite the fact that you have to take the back cover off to pop the batteries in, I could never get it to come off accidentally either, which is always a plus. </p><p>There is a slight rattle if you pick up the mouse and shake it, and that rattle appears to be coming from the 4D mouse wheel. Generally, you don't tend to shake mice, but if you pick it up quickly to move it from one side of the mousepad to the other, it does produce the rattling sound. </p><p>One thing I do quite like is a button sunken into the left thumbgrip. I can hold that down and move the rather great-feeling scroll wheel to change volume in an instant, and this is handier and quicker than using the touch screen's volume icons. </p><h2 class="article-body__section" id="section-aesthetics"><span>Aesthetics</span></h2><p>The MC7 is clearly intended to fit in alongside the likes of the Turtle Beach Stealth Pro II with its combination of copper and black, but it doesn't have the sleekness of its headset counterpart. Instead, it's more Cronenbergian, a collection of skewed angles and bumps, like the tech parts inside its shell are clamouring to get out and your hand is the thing holding them in. It's almost like two separate gaming mice have accidentally stepped inside the teleporter and what has come out is a wretched combination of both. </p><p>The right-hand side is relatively low to the ground and with little detailing, whereas the left side is angular, sharp and tall. This is naturally so tall because there's a screen slapped on the side, but it means the entire mouse has a slant going to the right. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ZwqoGDdzScAMiKM5ZBeqpb-1920-80.jpg" alt="Turtle Beach Command Series MC7 gaming mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SCHKjiWRyWKrUpyu4oYzgb-1920-80.jpg" alt="Turtle Beach Command Series MC7 gaming mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cqpF6DXVqVaqGYMXGtoKvb-1920-80.jpg" alt="Turtle Beach Command Series MC7 gaming mouse" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Despite this slant, the front is cut at quite a sharp angle too. The MC7 is kind of curvy, and kind of not. It's kind of angular, and also kind of not. It's a hard shape to make sense of and, to my eyes, pretty darn ugly on top of my desk. </p><p>One element I do like about the MC7's aesthetic is its choice of RGB. You get a sleek line of it just underneath the mouse, which is customizable, but it glows red when the battery is low, which is a good reminder when I've needed it. The screen also alerts you when your battery is low. </p><p>As far as the display is concerned, it has colour, which is a nice touch, but also has weirdly poor viewing angles. If I look at the screen from the position I'd usually game from, it can look washed out. It never looks so washed out that I can't roughly guess what its icons are (and with time, you learn their position anyway), but it makes it feel less quality than the black and copper might suggest. </p><h2 class="article-body__section" id="section-software"><span>Software</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:1177px;"><p class="vanilla-image-block" style="padding-top:62.62%;"><img id="GbrPDUU9oV46njoeP3b8Mo" name="Screenshot 2026-11-02 163847" alt="Turtle Beach Swarm II in the update tab" src="https://cdn.mos.cms.futurecdn.net/GbrPDUU9oV46njoeP3b8Mo-1920-80.png" mos="" align="middle" fullscreen="" width="1177" height="737" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">As of right now, the update is refusing to work on my rig so I'm stuck with this screen </span><span class="credit" itemprop="copyrightHolder">(Image credit: Turtle Beach Swarm II)</span></figcaption></figure><p>For the first few weeks with this mouse, I found Turtle Beach's Swarm II to be a mostly fine bit of software, though it could be a little slow. However, this week, the latest update, Software version 1.0.0.63 (which launched on November 2), has seemingly entirely broken on my PC. I can't get it to open, though it remains open in Task Manager. Given it only just launched, I could see this issue being fixed quickly, but it's a shame that so much software for hardware is not consistent.</p><p>It is also a necessary bit of software if you would like to customise the screen. With it downloaded, the screen is customizable much like a Stream Deck. Grab widgets from within the app, the mouse's onboard memory, or third-party apps, slap them on the screen, and now you have a new shortcut. Without it, there's not much you can do.</p><p>And, as far as I can tell, you can't set totally custom controls, as you can do with the Stream Deck, which limits your customisation a tad. But it's still pretty broad for the most part, and I've rarely found myself looking for a shortcut and not been able to find it. </p><h2 class="article-body__section" id="section-value"><span>Value </span></h2><p>$160 is a lot of cash for a gaming mouse. It's so much money, in fact, that you can pick up the<a href="https://www.pcgamer.com/the-best-gaming-mouse/#section-the-best-overall" target="_blank"> best gaming mouse</a> out there, the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>, with its impeccable sensor, great battery life, and lightweight feel, for the same price. </p><p>As such, you can pick an overall better, lighter mouse for the same price, or go for the screen. The battery system is certainly neat, though there are other mice out there with hot-swappable batteries. </p><p>The MC7 doesn't detract from day-to-day gaming, but I'd much prefer a lower base polling rate if it meant a cheaper price point, as this isn't exactly a competitive-level mouse in function. </p><p>It is clear where the budget for this build goes. A large screen couldn't be cheap; the material feels good on the fingertips, and that's before mentioning the research and development costs associated with getting a touchscreen on a mouse. However, it's so much money that, to my palms, it only really feels like the first step for Turtle Beach. It's like a test run of what a touchscreen could be like, and for this price, I don't quite see the vision.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-mice/turtle-beach-command-series-mc7-review/</link>
                                                                            <description>
                            <![CDATA[ How much is a touchscreen really worth to you? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">zZTmrCiK6zVbPRjPVzXiz3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/YYga5sjsPFmGbGs9kePjHc-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 02 Nov 2026 16:56:48 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Mice]]></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/YYga5sjsPFmGbGs9kePjHc-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Turtle Beach Command Series MC7 gaming mouse outside on stone]]></media:description>                                                            <media:text><![CDATA[Turtle Beach Command Series MC7 gaming mouse outside on stone]]></media:text>
                                <media:title type="plain"><![CDATA[Turtle Beach Command Series MC7 gaming mouse outside on stone]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/YYga5sjsPFmGbGs9kePjHc-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Turtle Beach Command Series MC7" data-widget-title=""></div><p>I must admit, I was mighty intrigued by the idea of a modern mouse (and all their high DPI machinations) with a screen slapped on the side, but I must also admit I thought we would be over the growing pains by now, what with screens being slammed into everything from cases to coolers to controllers. </p><p>Yet one look at the Turtle Beach Command Series MC7 suggests those growing pains are still being suffered. And using the mouse only confirms it. </p><p>But I get the idea in concept. I'm a big fan of my Stream Deck, and find myself regularly using its many controls. Being able to shove those into the side of the mouse with clarity to read what they're doing is intriguing. It's also particularly effective when it comes to swapping DPI, polling rate, and even checking the battery. Those are things that do benefit from a visual component. And yet a few weeks with the MC7 have convinced me I won't be making the swap full time. </p><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Buy if…</h3><div class="card__description-wrapper"><div class="card__description"><p>✅ <strong>You gotta have a large screen on your mouse: </strong>As far as I can see, this is the only gaming mouse with modern specs and a big screen from a reputable brand out there. </p></div></div></div></div><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Don&#39;t buy if…</h3><div class="card__description-wrapper"><div class="card__description"><p>❌ <strong>You want a mouse for competitive gaming: </strong>The MC7 is simply not comfortable nor snappy enough for competitive gaming<br /><br />❌ <strong>You don't need a large screen on your mouse: </strong>We've seen small OLED screens from the likes of SteelSeries and CoolerMaster if you're simply looking for something to display figures. </p></div></div></div></div><h2 class="article-body__section" id="section-features"><span>Features</span></h2><div ><table><caption>Turtle Beach Command Series MC7 specs</caption><tbody><tr><td class="firstcol " ><p>Buttons</p></td><td  ><p>11</p></td></tr><tr><td class="firstcol " ><p>Connectivity</p></td><td  ><p>Wired and wireless (2.4 GHz and Bluetooth)</p></td></tr><tr><td class="firstcol " ><p>Sensor</p></td><td  ><p>Owl-Eye Optical</p></td></tr><tr><td class="firstcol " ><p>Switches</p></td><td  ><p>Titan Optical switches</p></td></tr><tr><td class="firstcol " ><p>Feet</p></td><td  ><p>PTFE</p></td></tr><tr><td class="firstcol " ><p>Max DPI</p></td><td  ><p>30,000</p></td></tr><tr><td class="firstcol " ><p>Screen</p></td><td  ><p>2.25-inch colour touch display</p></td></tr><tr><td class="firstcol " ><p>Max acceleration</p></td><td  ><p>70 g</p></td></tr><tr><td class="firstcol " ><p>Max speed</p></td><td  ><p>750</p></td></tr><tr><td class="firstcol " ><p>Polling rate</p></td><td  ><p>Up to 8,000 Hz</p></td></tr><tr><td class="firstcol " ><p>Battery life</p></td><td  ><p>Up to 10 hours (hot-swappable)</p></td></tr><tr><td class="firstcol " ><p>RGB</p></td><td  ><p>On the bottom of the mouse</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>135 g</p></td></tr><tr><td class="firstcol " ><p>Extras</p></td><td  ><p>4D scroll wheel, hot-swappable batteries</p></td></tr><tr><td class="firstcol " ><p>Price</p></td><td  ><p><a href="https://www.bestbuy.com/product/turtle-beach-command-series-mc7-advanced-wireless-touchscreen-optical-gaming-mouse-for-windows-10-11-pc-wireless-black/J39T968THP" target="_blank">$160</a> / <a href="https://uk.turtlebeach.com/products/command-series-mc7-mouse" target="_blank">£140</a></p></td></tr></tbody></table></div><p>Internally, the MC7 has impressive stats. Its Owl-Eye Optical sensor goes all the way up to a max DPI of 30,000, and the polling rate of 8,000 Hz is competitive-level. That's so high, in fact, that the average person won't even see the benefit of it. </p><p>And the elephant in the room here: the 2.25-inch colour display is touch-sensitive too, which means you can flick through a couple of different screens depending on your use case. We have seen screens on gaming mice before, like the <a href="https://legacy.coolermaster.com/en-global/products/mm830/" target="_blank">Cooler Master MM830</a> and <a href="https://steelseries.com/en-gb/gaming-mice/rival-710" target="_blank">SteelSeries Rival 710</a> (neither of which are touch screens), but as far as I can tell, the MC7 is the largest on a modern gaming mouse from a reputable brand. That makes it an oddity at the least. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/w9Dy3EoWsX6eaDaEVRrCna-1920-80.jpg" alt="Turtle Beach Command Series MC7 gaming mouse on a black desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ezp7xv5zboramJmffMpGKc-1920-80.jpg" alt="Turtle Beach Command Series MC7 gaming mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/PuV3MAou88jBtv7GDuPE4c-1920-80.jpg" alt="Turtle Beach Command Series MC7 gaming mouse" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>But that's not all the MC7 has going for it. The 4D scroll wheel means you can go up, down, left and right on a page with just the wheel, and you have extra buttons here, too. You have one at the bottom of the thumb rest, another next to the mouse wheel, plus two on the left-hand side, as well as your standard clicks. </p><p>It's a wireless mouse, so it comes with a 2.4 GHz receiver, and it also has hot-swappable batteries. The battery charger has a spare USB Type-A port, which means your charger can also be the receiver. This is a sweet system, which makes the MC7 feel like it has infinite battery (as long as you are willing to spend twenty seconds swapping the battery every 10 or so hours). </p><h2 class="article-body__section" id="section-performance"><span>Performance</span></h2><p>The Owl-Eye sensor is great. It's consistent and smooth, and never posed any problems in any of the games I threw this mouse at. For everyday gaming, I don't have any complaints about how its internals performed. It's a slightly customised version of the PixArt PAW3950 sensor, and will be familiar to anyone who's used the Razer Deathadder V3 Pro, which previously had the exclusive use of PixArt's 30K sensor.</p><p>The mouse clicks are a tad loud for my liking, but they're plenty snappy. This bad boy is fitted with Titan Optical switches, and they are perfect under my fingertips. I have yet to hit a single double-click and find them to be very responsive. </p><p>However, the biggest problem with performance is how the MC7's weight is balanced and how it feels under the palms. At 135 g grams, it's a fairly heavy mouse (more so than the recent Naga V3 Pro and its mountain of buttons), but this wouldn't be too big of a problem if it could balance that weight in a comfortable way. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/vD6bxaDXoWTpg2Ra9AeQoA-1920-80.png" alt="Turtle Beach Command Series MC7 Mouse Tester results: xCount vs time" /><figcaption>Tested at 1,000 Hz — The closer the dots are together, the more consistent a mouse is reporting movement. More variation or stray dots makes for a less accurate sensor.<small role="credit">Mouse Tester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xtCz82ceDbkEFLdTqpTAnA-1920-80.png" alt="Turtle Beach Command Series MC7 Mouse Tester results: xVelocity vs time" /><figcaption>Tested at 1,000 Hz — The spikes represent an increase in velocity, with more erratic spikes showing tracking going haywire<small role="credit">Mouse Tester</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Khx2BrpmWBjjVJBJZT2auA-1920-80.png" alt="Turtle Beach Command Series MC7 Mouse Tester results: xInterval vs time" /><figcaption>Tested at 1,000 Hz — Each dot represents an update, which corresponds to the polling rate. Every 1 ms should mark a single update on a 1,000 Hz mouse.<small role="credit">Mouse Tester</small></figcaption></figure></figure><p>However, it feels clunky, and even has a slight rattle at high speeds. This all contributes to a mouse that feels a little lacking in competitive play, even though it's got the internal chops to handle everything on paper. </p><p>In use, the screen is rather peculiar. Via the Turtle Beach Swarm II software, you can flit between a few screens, which you customise with your own controls, and they are fairly snappy and responsive. However, having to arch my fingers to actually click on the screen means it's not intended for quick play. That makes it better as a micro function, or a way of displaying battery (but the device's lighting can already indicate battery life and DPI setting). It can display things like health and ammo in Counter-Strike 2, but its viewing angles are pretty poor, meaning it doesn't offer much of a tactical advantage. </p><h2 class="article-body__section" id="section-battery-life"><span>Battery Life </span></h2><p>The MC7 comes with two 1000 mAh batteries, both of which are hot-swappable. They connect to a charger (which also has a USB port for your 2.4 GHz connector), and this means you technically only need one USB to do everything for your mouse. It's a great system. </p><p>To swap the batteries out, you simply take off a compartment where your palm rests, pull the battery out and put a new one in. The MC7's onboard battery is just big enough that I've never noticed the device dying while I'm changing batteries. It's pretty sweet, and with a little practice, it can be swapped in seconds. It's not quite as quick to swap as the <a href="https://www.pcgamer.com/hardware/gaming-mice/glorious-model-o3-wireless-review/" target="_blank">Glorious Model O Eternal</a>, with its open battery system, but it is a bit tidier. </p><p>Working on my PC every day, then gaming most nights, I found myself swapping out the battery every few days at 1,000 Hz polling, which is perfectly solid given how convenient swapping the batteries is. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/2YshGLUrQQFBrTt5yqSNbb-1920-80.jpg" alt="Turtle Beach Command Series MC7 gaming mouse on a black table with the charger next to it" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/3YHi6bj82XU3r4BDiEpujb-1920-80.jpg" alt="Turtle Beach Command Series MC7 gaming mouse on a black table with the charger next to it and top off" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><h2 class="article-body__section" id="section-ergonomics"><span>Ergonomics</span></h2><p>The MC7 is a very confusing mouse in regard to its ergonomics. The groove on the left-hand side for your thumb is comfortable and intuitive, yet the two buttons on either side of that groove are awkward to get to. My left thumb buttons on a mouse tend to be going forward and backwards on a page, and therefore I like to have instant access to them. I don't have that access here, and have to physically bend my thumb or extend it to get to each button. The groove also has a texture to it, which is clearly designed so the mouse doesn't slip, and that's also quite strange, as it feels like you aren't encouraged to move your thumb, and yet you have to in order to hit those two buttons. </p><p>The back of the mouse curves to my palm well, but the two mouse click buttons are quite curved in the centre. That means, if I hold my hand on the bottom of the mouse, there's air underneath the bottom of my fingers as I hold it, and if I put my palm forward, then there's air underneath my knuckles. I feel like, no matter what way I hold the mouse, I'm holding it just a little wrong. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/xEHCCq5WHdgjYismdyHnLc-1920-80.jpg" alt="Turtle Beach Command Series MC7 gaming mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9jUFEF2eNeMoH8KZSY3JBc-1920-80.jpg" alt="Turtle Beach Command Series MC7 gaming mouse" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>That's before getting to the screen, a panel that is too long to use all of it while on the go, and close enough to my fingers that I constantly change my DPI whenever I take my hand off the mouse and put it back on again. Perhaps the strangest element of this is that I couldn't seem to figure out a way to lock the screen, which would really make it much better for gaming. </p><p>For quickly changing a song or pausing a video, I actually found myself taking my left finger off the left click and wrapping it around the display instead. As far as I can tell, there just isn't a quick and comfortable way to get to all parts of the screen with ease, and I have quite large hands too.  </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="vPXU8g6cVxeExpTeq58YKc" name="IMG_1096" alt="Turtle Beach Command Series MC7 gaming mouse on stone, from the side centre right" src="https://cdn.mos.cms.futurecdn.net/vPXU8g6cVxeExpTeq58YKc-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>As far as build quality is concerned, the MC7 doesn't feel cheap under the palm, though I'm not a fan of the vibration you get when you click the screen. It just has a hollow feel and sound. The texture on the mouse is cool to the fingertips, and it handles fingerprints well. Despite the fact that you have to take the back cover off to pop the batteries in, I could never get it to come off accidentally either, which is always a plus. </p><p>There is a slight rattle if you pick up the mouse and shake it, and that rattle appears to be coming from the 4D mouse wheel. Generally, you don't tend to shake mice, but if you pick it up quickly to move it from one side of the mousepad to the other, it does produce the rattling sound. </p><p>One thing I do quite like is a button sunken into the left thumbgrip. I can hold that down and move the rather great-feeling scroll wheel to change volume in an instant, and this is handier and quicker than using the touch screen's volume icons. </p><h2 class="article-body__section" id="section-aesthetics"><span>Aesthetics</span></h2><p>The MC7 is clearly intended to fit in alongside the likes of the Turtle Beach Stealth Pro II with its combination of copper and black, but it doesn't have the sleekness of its headset counterpart. Instead, it's more Cronenbergian, a collection of skewed angles and bumps, like the tech parts inside its shell are clamouring to get out and your hand is the thing holding them in. It's almost like two separate gaming mice have accidentally stepped inside the teleporter and what has come out is a wretched combination of both. </p><p>The right-hand side is relatively low to the ground and with little detailing, whereas the left side is angular, sharp and tall. This is naturally so tall because there's a screen slapped on the side, but it means the entire mouse has a slant going to the right. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ZwqoGDdzScAMiKM5ZBeqpb-1920-80.jpg" alt="Turtle Beach Command Series MC7 gaming mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SCHKjiWRyWKrUpyu4oYzgb-1920-80.jpg" alt="Turtle Beach Command Series MC7 gaming mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cqpF6DXVqVaqGYMXGtoKvb-1920-80.jpg" alt="Turtle Beach Command Series MC7 gaming mouse" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Despite this slant, the front is cut at quite a sharp angle too. The MC7 is kind of curvy, and kind of not. It's kind of angular, and also kind of not. It's a hard shape to make sense of and, to my eyes, pretty darn ugly on top of my desk. </p><p>One element I do like about the MC7's aesthetic is its choice of RGB. You get a sleek line of it just underneath the mouse, which is customizable, but it glows red when the battery is low, which is a good reminder when I've needed it. The screen also alerts you when your battery is low. </p><p>As far as the display is concerned, it has colour, which is a nice touch, but also has weirdly poor viewing angles. If I look at the screen from the position I'd usually game from, it can look washed out. It never looks so washed out that I can't roughly guess what its icons are (and with time, you learn their position anyway), but it makes it feel less quality than the black and copper might suggest. </p><h2 class="article-body__section" id="section-software"><span>Software</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:1177px;"><p class="vanilla-image-block" style="padding-top:62.62%;"><img id="GbrPDUU9oV46njoeP3b8Mo" name="Screenshot 2026-11-02 163847" alt="Turtle Beach Swarm II in the update tab" src="https://cdn.mos.cms.futurecdn.net/GbrPDUU9oV46njoeP3b8Mo-1920-80.png" mos="" align="middle" fullscreen="" width="1177" height="737" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">As of right now, the update is refusing to work on my rig so I'm stuck with this screen </span><span class="credit" itemprop="copyrightHolder">(Image credit: Turtle Beach Swarm II)</span></figcaption></figure><p>For the first few weeks with this mouse, I found Turtle Beach's Swarm II to be a mostly fine bit of software, though it could be a little slow. However, this week, the latest update, Software version 1.0.0.63 (which launched on November 2), has seemingly entirely broken on my PC. I can't get it to open, though it remains open in Task Manager. Given it only just launched, I could see this issue being fixed quickly, but it's a shame that so much software for hardware is not consistent.</p><p>It is also a necessary bit of software if you would like to customise the screen. With it downloaded, the screen is customizable much like a Stream Deck. Grab widgets from within the app, the mouse's onboard memory, or third-party apps, slap them on the screen, and now you have a new shortcut. Without it, there's not much you can do.</p><p>And, as far as I can tell, you can't set totally custom controls, as you can do with the Stream Deck, which limits your customisation a tad. But it's still pretty broad for the most part, and I've rarely found myself looking for a shortcut and not been able to find it. </p><h2 class="article-body__section" id="section-value"><span>Value </span></h2><p>$160 is a lot of cash for a gaming mouse. It's so much money, in fact, that you can pick up the<a href="https://www.pcgamer.com/the-best-gaming-mouse/#section-the-best-overall" target="_blank"> best gaming mouse</a> out there, the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>, with its impeccable sensor, great battery life, and lightweight feel, for the same price. </p><p>As such, you can pick an overall better, lighter mouse for the same price, or go for the screen. The battery system is certainly neat, though there are other mice out there with hot-swappable batteries. </p><p>The MC7 doesn't detract from day-to-day gaming, but I'd much prefer a lower base polling rate if it meant a cheaper price point, as this isn't exactly a competitive-level mouse in function. </p><p>It is clear where the budget for this build goes. A large screen couldn't be cheap; the material feels good on the fingertips, and that's before mentioning the research and development costs associated with getting a touchscreen on a mouse. However, it's so much money that, to my palms, it only really feels like the first step for Turtle Beach. It's like a test run of what a touchscreen could be like, and for this price, I don't quite see the vision.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Ray tracing memory usage could be reduced by up to 90% thanks to 'most significant' DirectX update ]]></title>
                                                                                                <dc:content><![CDATA[ <p>While I go 'oo' at every perfectly lit videogame vista, ray tracing can sometimes make my gaming rig go 'HNNNG'. I love a traced ray as much as the next person, but realistic reflections and lighting can be a bit of a memory hog. Thankfully, Microsoft is previewing something new for DirectX that could significantly take the load off many ageing rigs.</p><p>It's a pair of features called 'Clustered Geometry' and 'Partitioned TLAS'. At the risk of oversimplifying, you can think of this DirectX update as bringing tech very similar to <a href="https://www.pcgamer.com/hardware/graphics-cards/nvidias-rtx-mega-geometry-system-will-be-sprucing-up-the-forests-of-the-witcher-4-making-for-some-lush-looking-ray-traced-trees-to-go-witcher-ing-within/" target="_blank">Nvidia RTX Mega Geometry</a> to every other GPU vendor.</p><p>Obviously there's more to it than that, though, with Microsoft describing this as the "<a href="https://devblogs.microsoft.com/directx/clas-ptlas-preview/" target="_blank">most significant update [to DXR] since its debut in 2018</a>." Top line: Microsoft's own testing of this update suggests it could reduce ray tracing memory load by as much as 90% without the need for a team green GPU (via <a href="https://www.techspot.com/news/114400-microsoft-directx-update-could-slash-ray-tracing-memory.html" target="_blank">Techspot</a>). </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>So, how does it work? Well, without this update, ray tracing is already beaming between less detailed versions of the geometry you see in-game. Traditional ray tracing tech does this because bouncing around detailed models afresh for every frame would simply take too long. </p><p>Clustered geometry slices up the detailed models into neat little packages of 256 triangles or fewer. Partitioned TLAS then does a similar thing for the entire videogame vista, splitting a scene into smaller regions. Why? Well, rather than searching the entire map every time, looking for what's changed and updating the frame accordingly, the ol' dread pirate Ray Tracing needs only to run their finger over the quadrants they know are different, marking the spot with 'X'—or something like that, the metaphor got away from me a bit in the middle there.</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="N36js7RR4FjLtQ6SMHBH5i" name="asus-tuf-radeon-rx-9070" alt="Asus TUF Gaming Radeon RX 9070" src="https://cdn.mos.cms.futurecdn.net/N36js7RR4FjLtQ6SMHBH5i-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: Asus)</span></figcaption></figure><p>Basically, this fresh DirectX tech massively simplifies the ray tracing data your rig has to check and update frame to frame. That could free up a whole lotta memory, with Microsoft demonstrating a reduction of 7.5 GB to 774 MB on an <a href="https://www.pcgamer.com/hardware/live/news/amd-radeon-rx-9070-series-launch-day-live-the-promise-of-a-ton-of-reference-priced-stock-is-a-tantalising-one/" target="_blank">AMD Radeon RX 9070</a>. Obviously, frame rates also benefitted, jumping from a wince-worthy 1.2 fps to a very impressive 79 fps in Microsoft's testing.</p><p>Now, this isn't really a case of simply installing an update and, 'whee, you're flying!' Microsoft issues a fair few caveats—for one thing, not all games are going to replicate the wins its specialised test environment saw.</p><p>For another, working with clustered geometry and all of those packages of up to 256 triangles uses a lot more temporary scratch memory compared to traditional tech—that presents its own logistical concerns for game developers.</p><p>It's also worth reiterating that this update is not yet widely available, and there's no word yet on when PC gamers like you and me will be able to get our mitts on it either. If you feel like going sicko mode, though, Microsoft writes you can gain access to experimental features like this by using "matching Agility SDK preview headers and runtime, a supporting driver, and Windows Developer Mode."</p><p>Still, the potential to cut down memory usage without needing to buy any new hardware is very promising during <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">these times of runaway pricing for both memory and GPUs</a>. If I can put off a pricey upgrade for a few years more, I'll be happy.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/memory/ray-tracing-memory-usage-could-be-reduced-by-up-to-90-percent-thanks-to-most-significant-directx-update/</link>
                                                                            <description>
                            <![CDATA[ Potentially getting much more out of existing hardware is nothing to sniff at. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">7GyakBgVqwCLCmeZDCuA5N</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/3vaLZrUADLuNub9iKdwiX6-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 02 Nov 2026 13:38:24 +0000</pubDate>                                                                                                                                <updated>Mon, 02 Nov 2026 16:47:11 +0000</updated>
                                                                                                                                            <category><![CDATA[Memory]]></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/3vaLZrUADLuNub9iKdwiX6-1920-80.jpg">
                                                            <media:credit><![CDATA[UL]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[UL 3DMark new DirectX Raytracing benchmark]]></media:description>                                                            <media:text><![CDATA[UL 3DMark new DirectX Raytracing benchmark]]></media:text>
                                <media:title type="plain"><![CDATA[UL 3DMark new DirectX Raytracing benchmark]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/3vaLZrUADLuNub9iKdwiX6-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>While I go 'oo' at every perfectly lit videogame vista, ray tracing can sometimes make my gaming rig go 'HNNNG'. I love a traced ray as much as the next person, but realistic reflections and lighting can be a bit of a memory hog. Thankfully, Microsoft is previewing something new for DirectX that could significantly take the load off many ageing rigs.</p><p>It's a pair of features called 'Clustered Geometry' and 'Partitioned TLAS'. At the risk of oversimplifying, you can think of this DirectX update as bringing tech very similar to <a href="https://www.pcgamer.com/hardware/graphics-cards/nvidias-rtx-mega-geometry-system-will-be-sprucing-up-the-forests-of-the-witcher-4-making-for-some-lush-looking-ray-traced-trees-to-go-witcher-ing-within/" target="_blank">Nvidia RTX Mega Geometry</a> to every other GPU vendor.</p><p>Obviously there's more to it than that, though, with Microsoft describing this as the "<a href="https://devblogs.microsoft.com/directx/clas-ptlas-preview/" target="_blank">most significant update [to DXR] since its debut in 2018</a>." Top line: Microsoft's own testing of this update suggests it could reduce ray tracing memory load by as much as 90% without the need for a team green GPU (via <a href="https://www.techspot.com/news/114400-microsoft-directx-update-could-slash-ray-tracing-memory.html" target="_blank">Techspot</a>). </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>So, how does it work? Well, without this update, ray tracing is already beaming between less detailed versions of the geometry you see in-game. Traditional ray tracing tech does this because bouncing around detailed models afresh for every frame would simply take too long. </p><p>Clustered geometry slices up the detailed models into neat little packages of 256 triangles or fewer. Partitioned TLAS then does a similar thing for the entire videogame vista, splitting a scene into smaller regions. Why? Well, rather than searching the entire map every time, looking for what's changed and updating the frame accordingly, the ol' dread pirate Ray Tracing needs only to run their finger over the quadrants they know are different, marking the spot with 'X'—or something like that, the metaphor got away from me a bit in the middle there.</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="N36js7RR4FjLtQ6SMHBH5i" name="asus-tuf-radeon-rx-9070" alt="Asus TUF Gaming Radeon RX 9070" src="https://cdn.mos.cms.futurecdn.net/N36js7RR4FjLtQ6SMHBH5i-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: Asus)</span></figcaption></figure><p>Basically, this fresh DirectX tech massively simplifies the ray tracing data your rig has to check and update frame to frame. That could free up a whole lotta memory, with Microsoft demonstrating a reduction of 7.5 GB to 774 MB on an <a href="https://www.pcgamer.com/hardware/live/news/amd-radeon-rx-9070-series-launch-day-live-the-promise-of-a-ton-of-reference-priced-stock-is-a-tantalising-one/" target="_blank">AMD Radeon RX 9070</a>. Obviously, frame rates also benefitted, jumping from a wince-worthy 1.2 fps to a very impressive 79 fps in Microsoft's testing.</p><p>Now, this isn't really a case of simply installing an update and, 'whee, you're flying!' Microsoft issues a fair few caveats—for one thing, not all games are going to replicate the wins its specialised test environment saw.</p><p>For another, working with clustered geometry and all of those packages of up to 256 triangles uses a lot more temporary scratch memory compared to traditional tech—that presents its own logistical concerns for game developers.</p><p>It's also worth reiterating that this update is not yet widely available, and there's no word yet on when PC gamers like you and me will be able to get our mitts on it either. If you feel like going sicko mode, though, Microsoft writes you can gain access to experimental features like this by using "matching Agility SDK preview headers and runtime, a supporting driver, and Windows Developer Mode."</p><p>Still, the potential to cut down memory usage without needing to buy any new hardware is very promising during <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">these times of runaway pricing for both memory and GPUs</a>. If I can put off a pricey upgrade for a few years more, I'll be happy.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Valve's Steam Frame has taken a spot in the top ten most popular VR headsets on Steam ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Valve's second mighty expensive, yet mighty impressive VR headset, the <a href="https://www.pcgamer.com/hardware/vr-hardware/valve-steam-frame-review/" target="_blank">Steam Frame</a>, launched in the latter half of September, meaning October was the first full month where players could actually use it.  The latest <a href="https://store.steampowered.com/hwsurvey/Steam-Hardware-Software-Survey-Welcome-to-Steam" target="_blank">Steam Hardware Survey</a> suggests a rather big bump in usage for Valve's VR headset this past month.</p><p>In September, the Steam Frame accounted for just 0.41% of VR headset usage. In October, that number jumped to 4.13%. That means it surpassed the Oculus Rift S, Sony PS VR2, HTC Vive, Windows Mixed Reality (which is a platform, as opposed to a single headset), the first Oculus Rift and Bigscreen Beyond. It is now the sixth most popular VR headset, sitting just .37% behind the Pico 4, and a hefty 24.14% behind the Meta Quest 3. </p><p>The 3.72% increase for the Steam Frame is the biggest jump upwards in October, and the biggest tumble was taken by the Oculus Quest 2, which lost 3.57%. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>The Steam Frame officially released on September 18, with preorders going live on September 14, but that doesn't mean buyers got their hands on the headset on the day it went live. So the bump can not only be partially attributed to continued sales over October, but also to shipping times. </p><p>It's also worth noting that both the 256 GB and 1 TB models are backordered, meaning even if you sign up for one now, you will simply be put on a waiting list. That means Frame usage is unlikely to entirely stagnate from here. </p><div ><table><caption>Top 10 most popular VR headsets in Steam's October Hardware Survey</caption><tbody><tr><td class="firstcol " ><p><strong>Headset</strong></p></td><td  ><p><strong>Percentage</strong></p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/meta-quest-3-review/" target="_blank">Meta Quest 3</a></p></td><td  ><p>27.27% (+0.36)</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/oculus-quest-2-vr-headset-review-performance/" target="_blank">Oculus Quest 2</a></p></td><td  ><p>22.23% (-3.57)</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/vr-hardware/meta-quest-3s-review/" target="_blank">Meta Quest 3S</a></p></td><td  ><p>11.04% (-0.04)</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/valve-index-review/" target="_blank">Valve Index HMD</a></p></td><td  ><p>9.9% (-0.93)</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/pico-4-ve-headset-review/" target="_blank">Pico 4</a></p></td><td  ><p>4.5% (-0.25)</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/vr-hardware/valve-steam-frame-review/" target="_blank">Valve Steam Frame</a></p></td><td  ><p>4.13% (+3.72)</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/oculus-rift-s-review/" target="_blank">Oculus Rift S </a></p></td><td  ><p>3.26% (-0.14)</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/sony-ps-vr2-review/" target="_blank">Sony PS VR2</a></p></td><td  ><p>2.41% (+0.1)</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/htc-vive-review/" target="_blank">HTC Vive</a></p></td><td  ><p>2% (-0.26)</p></td></tr><tr><td class="firstcol " ><p>Windows Mixed Reality</p></td><td  ><p>1.79% (-0.06)</p></td></tr></tbody></table></div><p>Given the Steam Frame has enjoyed such a large bump even with customers struggling to get their hands on the headset, this suggests the VR market on Steam isn't huge. Though it is worth taking these stats with a pinch of salt. </p><p>The Steam Hardware Survey is an opt-in survey Valve takes every month. This means it only looks at a fraction of Steam users to get general statistics. This is why stats tend to change a tad each month. For instance, the <a href="https://www.pcgamer.com/nvidia-geforce-rtx-3060-12gb-review-benchmarks-zotac-twin-edge/" target="_blank">Nvidia GeForce RTX 3060</a> is currently the most popular graphics card in the survey, but it saw a 0.08% increase last month. The <a href="https://www.pcgamer.com/nvidia-geforce-rtx-4060-review-benchmarks-performance/" target="_blank">RTX 4060</a> saw a downward shift of 0.40%, pushing it below the RTX 3060. </p><p>As such, the Hardware Survey can only ever give a rough reading of usage each month, but it still seems like a good sign for Valve's latest bit of hardware. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/vr-hardware/valves-steam-frame-has-taken-a-spot-in-the-top-ten-most-popular-vr-headsets-on-steam/</link>
                                                                            <description>
                            <![CDATA[ The Quest 3 still holds a significant lead, though. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">7jQHp4eCig2a3vVzD4Vz2D</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vY4ztJVBw6dNr9Zr4sVMMT-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 02 Nov 2026 13:26:24 +0000</pubDate>                                                                                                                                <updated>Mon, 02 Nov 2026 15:18:46 +0000</updated>
                                                                                                                                            <category><![CDATA[VR Hardware]]></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/vY4ztJVBw6dNr9Zr4sVMMT-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Frame on the Steam Frame box.]]></media:description>                                                            <media:text><![CDATA[The Steam Frame on the Steam Frame box.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Frame on the Steam Frame box.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vY4ztJVBw6dNr9Zr4sVMMT-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Valve's second mighty expensive, yet mighty impressive VR headset, the <a href="https://www.pcgamer.com/hardware/vr-hardware/valve-steam-frame-review/" target="_blank">Steam Frame</a>, launched in the latter half of September, meaning October was the first full month where players could actually use it.  The latest <a href="https://store.steampowered.com/hwsurvey/Steam-Hardware-Software-Survey-Welcome-to-Steam" target="_blank">Steam Hardware Survey</a> suggests a rather big bump in usage for Valve's VR headset this past month.</p><p>In September, the Steam Frame accounted for just 0.41% of VR headset usage. In October, that number jumped to 4.13%. That means it surpassed the Oculus Rift S, Sony PS VR2, HTC Vive, Windows Mixed Reality (which is a platform, as opposed to a single headset), the first Oculus Rift and Bigscreen Beyond. It is now the sixth most popular VR headset, sitting just .37% behind the Pico 4, and a hefty 24.14% behind the Meta Quest 3. </p><p>The 3.72% increase for the Steam Frame is the biggest jump upwards in October, and the biggest tumble was taken by the Oculus Quest 2, which lost 3.57%. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>The Steam Frame officially released on September 18, with preorders going live on September 14, but that doesn't mean buyers got their hands on the headset on the day it went live. So the bump can not only be partially attributed to continued sales over October, but also to shipping times. </p><p>It's also worth noting that both the 256 GB and 1 TB models are backordered, meaning even if you sign up for one now, you will simply be put on a waiting list. That means Frame usage is unlikely to entirely stagnate from here. </p><div ><table><caption>Top 10 most popular VR headsets in Steam's October Hardware Survey</caption><tbody><tr><td class="firstcol " ><p><strong>Headset</strong></p></td><td  ><p><strong>Percentage</strong></p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/meta-quest-3-review/" target="_blank">Meta Quest 3</a></p></td><td  ><p>27.27% (+0.36)</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/oculus-quest-2-vr-headset-review-performance/" target="_blank">Oculus Quest 2</a></p></td><td  ><p>22.23% (-3.57)</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/vr-hardware/meta-quest-3s-review/" target="_blank">Meta Quest 3S</a></p></td><td  ><p>11.04% (-0.04)</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/valve-index-review/" target="_blank">Valve Index HMD</a></p></td><td  ><p>9.9% (-0.93)</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/pico-4-ve-headset-review/" target="_blank">Pico 4</a></p></td><td  ><p>4.5% (-0.25)</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/hardware/vr-hardware/valve-steam-frame-review/" target="_blank">Valve Steam Frame</a></p></td><td  ><p>4.13% (+3.72)</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/oculus-rift-s-review/" target="_blank">Oculus Rift S </a></p></td><td  ><p>3.26% (-0.14)</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/sony-ps-vr2-review/" target="_blank">Sony PS VR2</a></p></td><td  ><p>2.41% (+0.1)</p></td></tr><tr><td class="firstcol " ><p><a href="https://www.pcgamer.com/htc-vive-review/" target="_blank">HTC Vive</a></p></td><td  ><p>2% (-0.26)</p></td></tr><tr><td class="firstcol " ><p>Windows Mixed Reality</p></td><td  ><p>1.79% (-0.06)</p></td></tr></tbody></table></div><p>Given the Steam Frame has enjoyed such a large bump even with customers struggling to get their hands on the headset, this suggests the VR market on Steam isn't huge. Though it is worth taking these stats with a pinch of salt. </p><p>The Steam Hardware Survey is an opt-in survey Valve takes every month. This means it only looks at a fraction of Steam users to get general statistics. This is why stats tend to change a tad each month. For instance, the <a href="https://www.pcgamer.com/nvidia-geforce-rtx-3060-12gb-review-benchmarks-zotac-twin-edge/" target="_blank">Nvidia GeForce RTX 3060</a> is currently the most popular graphics card in the survey, but it saw a 0.08% increase last month. The <a href="https://www.pcgamer.com/nvidia-geforce-rtx-4060-review-benchmarks-performance/" target="_blank">RTX 4060</a> saw a downward shift of 0.40%, pushing it below the RTX 3060. </p><p>As such, the Hardware Survey can only ever give a rough reading of usage each month, but it still seems like a good sign for Valve's latest bit of hardware. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Edifier G5 Max wireless gaming headset review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Edifier G5 Max"></div><p>In the world of wireless gaming headsets, there's one spec that draws me in like a moth to a flame: battery life. Particularly 100-hour+ battery life. Wireless cans have come a long way in the last decade, but plugging them in all the time is an annoyance. If I can get away with multiple days without messing around with a cable, I usually will.</p><p>Which brings me to the <a href="https://www.edifier.com/global/p/gaming-headphones/g5-max" target="_blank">Edifier G5 Max</a>. Or the Edifier Hecate G5 Max, if you believe the writing on the box. It's got an astonishing "are you really sure" battery life spec of 305-hours, which meant I had to give it a look.</p><p>And now I've got one in my hands, I can confirm the battery life is impressive. Only the original <a href="https://www.pcgamer.com/hyperx-cloud-alpha-wireless-review/" target="_blank">HyperX Cloud Alpha Wireless</a> comes close. But the G5 Max, for its <a href="https://www.amazon.com/Edifier-Noise-Canceling-Detachable-Lighting-Compatible/dp/B0GLMSCLK5/" target="_blank">$150</a>/<a href="https://www.amazon.co.uk/Edifier-G5-MAX-Wireless-Headset-Space-Grey/dp/B0GKPB74M8" target="_blank">$160</a> price tag, isn't quite the full ticket in other departments.</p><p>For one, it comes with a remarkably boxy default sound profile, so you'll want to do some EQ tweaking in the software to sweeten it up. That's usually no big deal—except the EQ presets are as blunt as a hammer, so you'll need to play around with the sliders yourself if you want to get the most out of it. The 53 mm composite drivers are actually fairly decent once they've been fiddled with, but this is a set that massively benefits from some user assistance.</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="uChRpFdiR9Fsap5himBPwP" name="20261030_151219" alt="An Edifier G5 Max gaming headset with its RGB lit in green, next to some weeds in a poorly maintained garden" src="https://cdn.mos.cms.futurecdn.net/uChRpFdiR9Fsap5himBPwP-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>And for two, it doesn't have "$150 gaming headset" characteristics. This is a very light set of cans, coming in at just 305 grams. Light is good, but shiny, tippy-tappy ear cup plastics are not. It also looks a bit like a Power Ranger's codpiece, which will probably split the room.</p><p>The clamping force is also very light, to the point where it wants to slip around on my head, and the earpads feel a touch baggy. It's comfy, sure—but I do have reservations as to how long it will last.</p><p>$150 is premium pricing. Does this look, feel, and sound like a premium gaming headset? No, not really. Oh, and the multiple microphones are below par, too. The G5 Max has some good things going for it, but for this sort of cash?  I think it lands a little wide of the mark.</p><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p>✅ <strong>You want massive battery life: </strong>305 hours worth, says Edifier. I can well believe it, as I've still not managed to drain it to zero after several weeks of on/off testing.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Don&#39;t buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p>❌ <strong>You're not prepared to dive into the settings: </strong>Out of the box, the G5 Max has a disappointingly boxy sound profile. The software EQ presets are poor, so you'll need to get down and dirty with the options to coax it around.<br /><br />❌ <strong>You want a good microphone: </strong>This one is dull, slightly muffled, and difficult to tweak, even if Edifier has thrown the kitchen sink at it in terms of software options.</p></div></div></div></div><h2 class="article-body__section" id="section-edifier-g5-max-features"><span>Edifier G5 Max features</span></h2><div ><table><caption>Edifier G5 Max specs</caption><tbody><tr><td class="firstcol " ><p><strong>Operating principle</strong></p></td><td  ><p>Closed back</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>2.4 GHz wireless via USB Type-A/Type-C dongle, Bluetooth 6.0, USB Type-C wired</p></td></tr><tr><td class="firstcol " ><p><strong>Drivers</strong></p></td><td  ><p>53 mm composite, titanium coated</p></td></tr><tr><td class="firstcol " ><p><strong>Frequency response</strong></p></td><td  ><p>20,000 - 40,000 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>Mic</strong></p></td><td  ><p>Twin built-in ENC mics, detachable 9.75 mm unidirectional boom mic</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>305-hour</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>305 g</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.amazon.com/Edifier-Noise-Canceling-Detachable-Lighting-Compatible/dp/B0GLMSCLK5/" target="_blank">$150</a>/<a href="https://www.amazon.co.uk/Edifier-G5-MAX-Wireless-Headset-Space-Grey/dp/B0GKPB74M8" target="_blank">$160</a></p></td></tr></tbody></table></div><p>The Edifier G5 Max is a wireless gaming headset that tips the scales at just 305 grams. That's all the more impressive when combined with the battery life, which maxes out at a stated 305-hours. I have no idea why those specs line up the way they do, but it's a pleasing symmetry at the very least.</p><p>In terms of drivers, we're looking at a pair of 53 mm composite, titanium-coated units with a frequency response of 20,000 - 40,000 Hz. Connectivity options come in the form of a 2.4 GHz wireless dongle (with a nifty little switchable USB Type-C or Type-A plug design), a USB Type-C connection proper, and Bluetooth 6.0.</p><p>Add THX Spatial Audio+ support and up to 96 kHz/24-bit wired playback, along with support for the LHDC 5.0 codec for Bluetooth low-latency connectivity, and you've got a pretty fully-featured specs sheet. Microphones come in the form of a removable boom mic and two built-in units nestled deep within the internals. </p><h2 class="article-body__section" id="section-edifier-g5-max-ergonomics"><span>Edifier G5 Max ergonomics</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="N5tgeCpAYqykVseDmtcEaE" name="20261001_150917" alt="An Edifier G5 Max gaming headset, in a closed position on gravel" src="https://cdn.mos.cms.futurecdn.net/N5tgeCpAYqykVseDmtcEaE-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>Let's start with the good. The G5's headband is remarkably thick and squidgey, which feels very pleasant atop my head. The ear cup armature is solid metal, and has a slightly industrial feel to it that suggests it might last.</p><p>It's also very light, which means wearing the G5 Max for long periods is no issue at all. That being said, the earpads do give me pause for thought. They're a touch baggy, and while the material covering them is very soft and comfortable, it does seem a little fragile.</p><p>The clamping force is also very light. On the one hand, this is good for comfort. On the other, this headset has slipped from my dome more than once while moving around. Differing head sizes will end up with differing experiences here, but the G5 is light-touch enough to make itself an annoyance on occasion.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/WEMFrS49NZ9vnd4eaEbdFY-1920-80.jpg" alt="An Edifier G5 Max gaming headset on a gravel background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DQcRZPDioC3mXVG2e5HgAM-1920-80.jpg" alt="Close up shots of the various features on the Edifier G5 Max gaming headset" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/XTd5vNEAdANSgtCdfYPH3M-1920-80.jpg" alt="Close up shots of the various features on the Edifier G5 Max gaming headset" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Gcua6fJ2CCssejKXaKcx7M-1920-80.jpg" alt="Close up shots of the various features on the Edifier G5 Max gaming headset" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The controls are a bit tinny, too. Combined with the clattering plastics used on the outside of the ear cups, this makes the whole endeavour feel a little cheap when you're adjusting it. And let's face it, at $150, this headset really isn't. Cheap, I mean.</p><p>Still, it's very comfortable when you're in a standard gaming position in front of your PC. Despite the Bluetooth 6.0 connection, though, I'm not sure I'd risk the whole affair slipping from my head while I was outside.</p><h2 class="article-body__section" id="section-edifier-g5-max-sound"><span>Edifier G5 Max sound</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="emrTSDWpnzbKXjSGVwfr5U" name="20261001_150739" alt="A close up of the earpads of the Edifier G5 Max gaming headset" src="https://cdn.mos.cms.futurecdn.net/emrTSDWpnzbKXjSGVwfr5U-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>If you simply plug in and go with the Edifier G5 Max, prepare yourself for a very boxy sound profile. While that might be advantageous in certain competitive gaming situations, it's not particularly nice to listen to for everyday usage.</p><p>You can tweak the EQ of this set within the Edifier Hecate app. Unfortunately, the audio presets it comes with are seriously heavy-handed. There are a handful of options for specific games (most of which boost the upper mids and treble to ear-aching levels while eschewing bass almost entirely), while the "bass" music preset itself lives up to its name:</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="YYxzm8ALRbPSk7pWdEZ9RK" name="G5Maxbasspreset" alt="A screenshot of the bass EQ settings in the Hecate software of the Edifier G5 Max gaming headset" src="https://cdn.mos.cms.futurecdn.net/YYxzm8ALRbPSk7pWdEZ9RK-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/YYxzm8ALRbPSk7pWdEZ9RK-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: Edifier)</span></figcaption></figure><p>Holy hell, Batman, this looks like a 12-year-old's first headset EQ. Switching between all of the different options, I couldn't find one that worked well with the 53 mm drivers to create a balanced sound. Luckily, a little home tweaking can improve the sound profile considerably. </p><p>Basic stuff. A little bass boost from neutral, a small 200-300 Hz dip, a little push at the top end to sweeten up the treble. These 53 mm drivers need some work to sound their best, which is unfortunate.</p><div><blockquote><p>Be prepared to break out the toolbox to warm the drivers up.</p></blockquote></div><p>I would imagine that most gamers buying a $150 headset would expect it to sound lovely straight from the box, or at least be able to tweak it towards something halfway-pleasant without fiddling with the EQ beyond the given presets.</p><p>What the drivers are good at, though, is detail. Multiplayer shooter fans will appreciate their footstep-reproducing ways, and the positioning is very good, particularly with the spatial audio setting engaged. For everything else, though, be prepared to break out the toolbox to warm them up.</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="EixU49vAUuCBqFYkYEocEa" name="20261001_150824" alt="A close up of the microphone housing on the Edifier G5 wireless gaming headset" src="https://cdn.mos.cms.futurecdn.net/EixU49vAUuCBqFYkYEocEa-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>As for the microphone(s), they're also disappointing. The built-in units are dedicated to the Bluetooth connection and sound like every other internal set I've ever tested—hollow, but good enough to use in a pinch. Plug in the boom mic, though, and you get… well, it doesn't improve things much.</p><p><em>Below: An audio test of the G5 Max boom microphone, software settings at default/off.</em></p><audio src="https://cdn.mos.cms.futurecdn.net/5BU9XY5TkyTrTMT73s3FNP/G5MAXEVERYTHINGOFF.mp3"  controls="controls" preload="none"></audio><p>That's a pretty dull-sounding capsule if you ask me. You can adjust the microphone EQ independently, but the other software settings are very blunt instruments in their own right. Under microphone settings, you get Mic Volume, Voice Clarity, and Volume Levelling options, none of which do much to get around the characteristics of the capsule itself.</p><p><em>Below:</em> <em>The G5 Max boom microphone, all software settings at 50%/on.</em></p><audio src="https://cdn.mos.cms.futurecdn.net/Z2caR4HYQXauVuaKXh9jUh/G5MAXALLSETTINGSON.mp3"  controls="controls" preload="none"></audio><p>At low settings, the noise-reduction assistance does little to clean up the audio. Turn it up, and digital wash becomes apparent very early on, while the clarity settings add a fair amount of extra sibilance, while also removing a lot of depth. </p><p>I've heard much better audio quality from much cheaper sets. The sound in general is below average, which isn't a great look for any headset with a $100+ price tag.</p><h2 class="article-body__section" id="section-edifier-g5-max-aesthetics"><span>Edifier G5 Max aesthetics</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="R2q6UoSchmbjp7Cp2jwkaR" name="20261001_150711" alt="An Edifier G5 Max gaming headset, tilted to one side on gravel" src="https://cdn.mos.cms.futurecdn.net/R2q6UoSchmbjp7Cp2jwkaR-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>The G5 Max looks good in photos, but in person it's a bit polarising. The octagonal earcups strike me as a slightly childish design choice, sitting at odds with the large, studio headphone-like headband. The RGB is pleasingly subtle, though, having been reduced to a "H" logo on each earcup.</p><p>The boom mic tip also gets the angular treatment, but it's rather large. You'll probably stop noticing it eventually, but I keep catching it out of the corner of my eye. Being as sizable as it is, I think Edifier may as well have gone the whole hog and wrapped it in a foam pop filter.</p><p>Anyway, beauty is in the eye of the beholder, but I personally prefer my $150 headsets to look a little more refined (or, dare I say, a little more grown up) than this.</p><h2 class="article-body__section" id="section-edifier-g5-max-battery-life"><span>Edifier G5 Max battery life</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AUd7ESCEDrtDJd5dCJoksn" name="20261001_151056" alt="A close up of the RGB-lit Hecate logo on the side of the Edifier G5 Max gaming headset" src="https://cdn.mos.cms.futurecdn.net/AUd7ESCEDrtDJd5dCJoksn-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>Ah, now we're on to the G5 Max's party trick. 305-hours of battery life is very impressive on paper, and in practice, it's a seriously handy thing to have. I've been testing the G5 Max for the past three weeks and I've yet to show it a power cable.</p><p>That's a massive bonus for anyone looking for convenience. It's such a long battery life, I'd imagine it will come as a genuine surprise when it eventually begs for some wall juice. I still haven't got there yet, despite leaving the headset on overnight a few times to see if I could make it meaningfully drop.</p><p>And I still can't work out how Edifier has managed to make a headset so light, while still equipping it with such a substantial battery. That's something akin to a headset magic trick. Top marks in this department, at the very least.</p><h2 class="article-body__section" id="section-edifier-g5-max-software"><span>Edifier G5 Max software</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="ULfJpDkD5Sf8vMZjHQiWe7" name="EdifierG5MaxHecatesoftware" alt="A screenshot of the RGB lighting settings in the Edifier Hecate software" src="https://cdn.mos.cms.futurecdn.net/ULfJpDkD5Sf8vMZjHQiWe7-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/ULfJpDkD5Sf8vMZjHQiWe7-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: Edifier)</span></figcaption></figure><p>Edifier's Hecate software is perhaps a little basic when it comes to the UI, but there are plenty of features to play with. There's a parametric EQ, a separate bass boost setting, volume levelling, THX Spatial Audio+ switching—even a separate EQ for the mic. You can also tweak the RGB, adjust the power off settings, switch connection modes, and flip between user profiles for your various adjustments.</p><p>I just wish that it was a bit more plug and play. All the options are here to improve some of the G5 Max's lesser qualities, but the aforementioned sound presets are so ham-fisted, you'll want to familiarise yourself with all these toggles and sliders pretty early on.</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="n2UQcnTx5zDRsoCzgz4DfG" name="EdifierG5MaxHecatesoftware (1)" alt="A screenshot of some of the EQ presets in the Edifier Hecate software" src="https://cdn.mos.cms.futurecdn.net/n2UQcnTx5zDRsoCzgz4DfG-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: Edifier)</span></figcaption></figure><p>The app is easy enough to use, but be prepared to lean on it to get the most out of this headset. And it did lock itself in an update loop on first install. That might just be a me thing, but it's worth pointing out that it can feel a touch… rough and ready when it comes to stability. YMMV, is what I'm saying.</p><h2 class="article-body__section" id="section-edifier-g5-max-value"><span>Edifier G5 Max value</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jECQsSLDt6LteSq2CH8JyK" name="20261001_150651" alt="A top down shot of an Edifier G5 Max gaming headset" src="https://cdn.mos.cms.futurecdn.net/jECQsSLDt6LteSq2CH8JyK-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>A $150 MSRP aims this headset squarely at one of the biggest hitters in the space, the <a href="https://www.pcgamer.com/hardware/gaming-headsets/razer-blackshark-v3-review/" target="_blank">Razer BlackShark V3</a>. It's our top <a href="https://www.pcgamer.com/best-gaming-headset/" target="_blank">best gaming headset</a> pick—and in all honesty, I don't think there's much competition between the two. </p><p>The Razer has a more refined chassis design and much better audio straight from the box, and although its microphone is perhaps one of the weaker points of the whole package, it still sounds better than the one you'll find on the G5 Max. You "only" get 70-hour battery life, but I'd still say that's plenty.</p><p>It's even lighter, too, at 270 g. And should you wish to go (much) cheaper, there's always the <a href="https://www.pcgamer.com/hardware/gaming-headsets/powera-lucidsound-ls500-p-review/" target="_blank">PowerA LucidSound LS500</a> to consider. Again, it's lighter, and again, you only get 70-hour battery life. But listening to the microphone clips back to back, and looking at the LS500's recipe of capable 50 mm drivers and a comfy chassis design (not to mention more grown-up looks), I know where I'd be saving my cash.</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="k2TT3kutsWA46GfZxDdvBn" name="20261030_170228" alt="An Edifier G5 Max gaming headset on a desk, next to a guitar pick and a lovely cup of tea" src="https://cdn.mos.cms.futurecdn.net/k2TT3kutsWA46GfZxDdvBn-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>If battery life really is your biggest concern, then I'd point you straight at the <a href="https://www.pcgamer.com/hyperx-cloud-alpha-wireless-review/" target="_blank">HyperX Cloud Alpha Wireless</a>. It's also got a weak microphone, but it's a remarkably solid, comfy, and great-sounding set that can often be found with large discounts. It's <a href="https://www.amazon.com/HyperX-Cloud-Alpha-Wireless-Noise-canceling/dp/B09TRW57WB/" target="_blank">down to $109</a> at the time of publishing this review. Oh and the battery life stat? 300 hours. </p><p>I was expecting more from the Edifier G5 Max. The battery life is impressive, but I think you can do much better elsewhere for less cash. Ultimately, I'd say this set is a good reminder that, when shopping for your next pair of wireless cans, you shouldn't press the buy button because of one feature alone.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-headsets/edifier-g5-max-review/</link>
                                                                            <description>
                            <![CDATA[ Lightweight, long-lasting, but lacking. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">umncnbjdmzgergRwbFKPgm</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Wv3hrgNRiDJT2KeHdtRVEg-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 30 Oct 2026 17:06:25 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Headsets]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Gaming Audio]]></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/Wv3hrgNRiDJT2KeHdtRVEg-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[An Edifier G5 Max gaming headset on gravel, surrounded by foliage]]></media:description>                                                            <media:text><![CDATA[An Edifier G5 Max gaming headset on gravel, surrounded by foliage]]></media:text>
                                <media:title type="plain"><![CDATA[An Edifier G5 Max gaming headset on gravel, surrounded by foliage]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Wv3hrgNRiDJT2KeHdtRVEg-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Edifier G5 Max"></div><p>In the world of wireless gaming headsets, there's one spec that draws me in like a moth to a flame: battery life. Particularly 100-hour+ battery life. Wireless cans have come a long way in the last decade, but plugging them in all the time is an annoyance. If I can get away with multiple days without messing around with a cable, I usually will.</p><p>Which brings me to the <a href="https://www.edifier.com/global/p/gaming-headphones/g5-max" target="_blank">Edifier G5 Max</a>. Or the Edifier Hecate G5 Max, if you believe the writing on the box. It's got an astonishing "are you really sure" battery life spec of 305-hours, which meant I had to give it a look.</p><p>And now I've got one in my hands, I can confirm the battery life is impressive. Only the original <a href="https://www.pcgamer.com/hyperx-cloud-alpha-wireless-review/" target="_blank">HyperX Cloud Alpha Wireless</a> comes close. But the G5 Max, for its <a href="https://www.amazon.com/Edifier-Noise-Canceling-Detachable-Lighting-Compatible/dp/B0GLMSCLK5/" target="_blank">$150</a>/<a href="https://www.amazon.co.uk/Edifier-G5-MAX-Wireless-Headset-Space-Grey/dp/B0GKPB74M8" target="_blank">$160</a> price tag, isn't quite the full ticket in other departments.</p><p>For one, it comes with a remarkably boxy default sound profile, so you'll want to do some EQ tweaking in the software to sweeten it up. That's usually no big deal—except the EQ presets are as blunt as a hammer, so you'll need to play around with the sliders yourself if you want to get the most out of it. The 53 mm composite drivers are actually fairly decent once they've been fiddled with, but this is a set that massively benefits from some user assistance.</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="uChRpFdiR9Fsap5himBPwP" name="20261030_151219" alt="An Edifier G5 Max gaming headset with its RGB lit in green, next to some weeds in a poorly maintained garden" src="https://cdn.mos.cms.futurecdn.net/uChRpFdiR9Fsap5himBPwP-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>And for two, it doesn't have "$150 gaming headset" characteristics. This is a very light set of cans, coming in at just 305 grams. Light is good, but shiny, tippy-tappy ear cup plastics are not. It also looks a bit like a Power Ranger's codpiece, which will probably split the room.</p><p>The clamping force is also very light, to the point where it wants to slip around on my head, and the earpads feel a touch baggy. It's comfy, sure—but I do have reservations as to how long it will last.</p><p>$150 is premium pricing. Does this look, feel, and sound like a premium gaming headset? No, not really. Oh, and the multiple microphones are below par, too. The G5 Max has some good things going for it, but for this sort of cash?  I think it lands a little wide of the mark.</p><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p>✅ <strong>You want massive battery life: </strong>305 hours worth, says Edifier. I can well believe it, as I've still not managed to drain it to zero after several weeks of on/off testing.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Don&#39;t buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p>❌ <strong>You're not prepared to dive into the settings: </strong>Out of the box, the G5 Max has a disappointingly boxy sound profile. The software EQ presets are poor, so you'll need to get down and dirty with the options to coax it around.<br /><br />❌ <strong>You want a good microphone: </strong>This one is dull, slightly muffled, and difficult to tweak, even if Edifier has thrown the kitchen sink at it in terms of software options.</p></div></div></div></div><h2 class="article-body__section" id="section-edifier-g5-max-features"><span>Edifier G5 Max features</span></h2><div ><table><caption>Edifier G5 Max specs</caption><tbody><tr><td class="firstcol " ><p><strong>Operating principle</strong></p></td><td  ><p>Closed back</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>2.4 GHz wireless via USB Type-A/Type-C dongle, Bluetooth 6.0, USB Type-C wired</p></td></tr><tr><td class="firstcol " ><p><strong>Drivers</strong></p></td><td  ><p>53 mm composite, titanium coated</p></td></tr><tr><td class="firstcol " ><p><strong>Frequency response</strong></p></td><td  ><p>20,000 - 40,000 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>Mic</strong></p></td><td  ><p>Twin built-in ENC mics, detachable 9.75 mm unidirectional boom mic</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>305-hour</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>305 g</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.amazon.com/Edifier-Noise-Canceling-Detachable-Lighting-Compatible/dp/B0GLMSCLK5/" target="_blank">$150</a>/<a href="https://www.amazon.co.uk/Edifier-G5-MAX-Wireless-Headset-Space-Grey/dp/B0GKPB74M8" target="_blank">$160</a></p></td></tr></tbody></table></div><p>The Edifier G5 Max is a wireless gaming headset that tips the scales at just 305 grams. That's all the more impressive when combined with the battery life, which maxes out at a stated 305-hours. I have no idea why those specs line up the way they do, but it's a pleasing symmetry at the very least.</p><p>In terms of drivers, we're looking at a pair of 53 mm composite, titanium-coated units with a frequency response of 20,000 - 40,000 Hz. Connectivity options come in the form of a 2.4 GHz wireless dongle (with a nifty little switchable USB Type-C or Type-A plug design), a USB Type-C connection proper, and Bluetooth 6.0.</p><p>Add THX Spatial Audio+ support and up to 96 kHz/24-bit wired playback, along with support for the LHDC 5.0 codec for Bluetooth low-latency connectivity, and you've got a pretty fully-featured specs sheet. Microphones come in the form of a removable boom mic and two built-in units nestled deep within the internals. </p><h2 class="article-body__section" id="section-edifier-g5-max-ergonomics"><span>Edifier G5 Max ergonomics</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="N5tgeCpAYqykVseDmtcEaE" name="20261001_150917" alt="An Edifier G5 Max gaming headset, in a closed position on gravel" src="https://cdn.mos.cms.futurecdn.net/N5tgeCpAYqykVseDmtcEaE-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>Let's start with the good. The G5's headband is remarkably thick and squidgey, which feels very pleasant atop my head. The ear cup armature is solid metal, and has a slightly industrial feel to it that suggests it might last.</p><p>It's also very light, which means wearing the G5 Max for long periods is no issue at all. That being said, the earpads do give me pause for thought. They're a touch baggy, and while the material covering them is very soft and comfortable, it does seem a little fragile.</p><p>The clamping force is also very light. On the one hand, this is good for comfort. On the other, this headset has slipped from my dome more than once while moving around. Differing head sizes will end up with differing experiences here, but the G5 is light-touch enough to make itself an annoyance on occasion.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/WEMFrS49NZ9vnd4eaEbdFY-1920-80.jpg" alt="An Edifier G5 Max gaming headset on a gravel background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DQcRZPDioC3mXVG2e5HgAM-1920-80.jpg" alt="Close up shots of the various features on the Edifier G5 Max gaming headset" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/XTd5vNEAdANSgtCdfYPH3M-1920-80.jpg" alt="Close up shots of the various features on the Edifier G5 Max gaming headset" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Gcua6fJ2CCssejKXaKcx7M-1920-80.jpg" alt="Close up shots of the various features on the Edifier G5 Max gaming headset" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The controls are a bit tinny, too. Combined with the clattering plastics used on the outside of the ear cups, this makes the whole endeavour feel a little cheap when you're adjusting it. And let's face it, at $150, this headset really isn't. Cheap, I mean.</p><p>Still, it's very comfortable when you're in a standard gaming position in front of your PC. Despite the Bluetooth 6.0 connection, though, I'm not sure I'd risk the whole affair slipping from my head while I was outside.</p><h2 class="article-body__section" id="section-edifier-g5-max-sound"><span>Edifier G5 Max sound</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="emrTSDWpnzbKXjSGVwfr5U" name="20261001_150739" alt="A close up of the earpads of the Edifier G5 Max gaming headset" src="https://cdn.mos.cms.futurecdn.net/emrTSDWpnzbKXjSGVwfr5U-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>If you simply plug in and go with the Edifier G5 Max, prepare yourself for a very boxy sound profile. While that might be advantageous in certain competitive gaming situations, it's not particularly nice to listen to for everyday usage.</p><p>You can tweak the EQ of this set within the Edifier Hecate app. Unfortunately, the audio presets it comes with are seriously heavy-handed. There are a handful of options for specific games (most of which boost the upper mids and treble to ear-aching levels while eschewing bass almost entirely), while the "bass" music preset itself lives up to its name:</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="YYxzm8ALRbPSk7pWdEZ9RK" name="G5Maxbasspreset" alt="A screenshot of the bass EQ settings in the Hecate software of the Edifier G5 Max gaming headset" src="https://cdn.mos.cms.futurecdn.net/YYxzm8ALRbPSk7pWdEZ9RK-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/YYxzm8ALRbPSk7pWdEZ9RK-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: Edifier)</span></figcaption></figure><p>Holy hell, Batman, this looks like a 12-year-old's first headset EQ. Switching between all of the different options, I couldn't find one that worked well with the 53 mm drivers to create a balanced sound. Luckily, a little home tweaking can improve the sound profile considerably. </p><p>Basic stuff. A little bass boost from neutral, a small 200-300 Hz dip, a little push at the top end to sweeten up the treble. These 53 mm drivers need some work to sound their best, which is unfortunate.</p><div><blockquote><p>Be prepared to break out the toolbox to warm the drivers up.</p></blockquote></div><p>I would imagine that most gamers buying a $150 headset would expect it to sound lovely straight from the box, or at least be able to tweak it towards something halfway-pleasant without fiddling with the EQ beyond the given presets.</p><p>What the drivers are good at, though, is detail. Multiplayer shooter fans will appreciate their footstep-reproducing ways, and the positioning is very good, particularly with the spatial audio setting engaged. For everything else, though, be prepared to break out the toolbox to warm them up.</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="EixU49vAUuCBqFYkYEocEa" name="20261001_150824" alt="A close up of the microphone housing on the Edifier G5 wireless gaming headset" src="https://cdn.mos.cms.futurecdn.net/EixU49vAUuCBqFYkYEocEa-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>As for the microphone(s), they're also disappointing. The built-in units are dedicated to the Bluetooth connection and sound like every other internal set I've ever tested—hollow, but good enough to use in a pinch. Plug in the boom mic, though, and you get… well, it doesn't improve things much.</p><p><em>Below: An audio test of the G5 Max boom microphone, software settings at default/off.</em></p><audio src="https://cdn.mos.cms.futurecdn.net/5BU9XY5TkyTrTMT73s3FNP/G5MAXEVERYTHINGOFF.mp3"  controls="controls" preload="none"></audio><p>That's a pretty dull-sounding capsule if you ask me. You can adjust the microphone EQ independently, but the other software settings are very blunt instruments in their own right. Under microphone settings, you get Mic Volume, Voice Clarity, and Volume Levelling options, none of which do much to get around the characteristics of the capsule itself.</p><p><em>Below:</em> <em>The G5 Max boom microphone, all software settings at 50%/on.</em></p><audio src="https://cdn.mos.cms.futurecdn.net/Z2caR4HYQXauVuaKXh9jUh/G5MAXALLSETTINGSON.mp3"  controls="controls" preload="none"></audio><p>At low settings, the noise-reduction assistance does little to clean up the audio. Turn it up, and digital wash becomes apparent very early on, while the clarity settings add a fair amount of extra sibilance, while also removing a lot of depth. </p><p>I've heard much better audio quality from much cheaper sets. The sound in general is below average, which isn't a great look for any headset with a $100+ price tag.</p><h2 class="article-body__section" id="section-edifier-g5-max-aesthetics"><span>Edifier G5 Max aesthetics</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="R2q6UoSchmbjp7Cp2jwkaR" name="20261001_150711" alt="An Edifier G5 Max gaming headset, tilted to one side on gravel" src="https://cdn.mos.cms.futurecdn.net/R2q6UoSchmbjp7Cp2jwkaR-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>The G5 Max looks good in photos, but in person it's a bit polarising. The octagonal earcups strike me as a slightly childish design choice, sitting at odds with the large, studio headphone-like headband. The RGB is pleasingly subtle, though, having been reduced to a "H" logo on each earcup.</p><p>The boom mic tip also gets the angular treatment, but it's rather large. You'll probably stop noticing it eventually, but I keep catching it out of the corner of my eye. Being as sizable as it is, I think Edifier may as well have gone the whole hog and wrapped it in a foam pop filter.</p><p>Anyway, beauty is in the eye of the beholder, but I personally prefer my $150 headsets to look a little more refined (or, dare I say, a little more grown up) than this.</p><h2 class="article-body__section" id="section-edifier-g5-max-battery-life"><span>Edifier G5 Max battery life</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AUd7ESCEDrtDJd5dCJoksn" name="20261001_151056" alt="A close up of the RGB-lit Hecate logo on the side of the Edifier G5 Max gaming headset" src="https://cdn.mos.cms.futurecdn.net/AUd7ESCEDrtDJd5dCJoksn-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>Ah, now we're on to the G5 Max's party trick. 305-hours of battery life is very impressive on paper, and in practice, it's a seriously handy thing to have. I've been testing the G5 Max for the past three weeks and I've yet to show it a power cable.</p><p>That's a massive bonus for anyone looking for convenience. It's such a long battery life, I'd imagine it will come as a genuine surprise when it eventually begs for some wall juice. I still haven't got there yet, despite leaving the headset on overnight a few times to see if I could make it meaningfully drop.</p><p>And I still can't work out how Edifier has managed to make a headset so light, while still equipping it with such a substantial battery. That's something akin to a headset magic trick. Top marks in this department, at the very least.</p><h2 class="article-body__section" id="section-edifier-g5-max-software"><span>Edifier G5 Max software</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="ULfJpDkD5Sf8vMZjHQiWe7" name="EdifierG5MaxHecatesoftware" alt="A screenshot of the RGB lighting settings in the Edifier Hecate software" src="https://cdn.mos.cms.futurecdn.net/ULfJpDkD5Sf8vMZjHQiWe7-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/ULfJpDkD5Sf8vMZjHQiWe7-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: Edifier)</span></figcaption></figure><p>Edifier's Hecate software is perhaps a little basic when it comes to the UI, but there are plenty of features to play with. There's a parametric EQ, a separate bass boost setting, volume levelling, THX Spatial Audio+ switching—even a separate EQ for the mic. You can also tweak the RGB, adjust the power off settings, switch connection modes, and flip between user profiles for your various adjustments.</p><p>I just wish that it was a bit more plug and play. All the options are here to improve some of the G5 Max's lesser qualities, but the aforementioned sound presets are so ham-fisted, you'll want to familiarise yourself with all these toggles and sliders pretty early on.</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="n2UQcnTx5zDRsoCzgz4DfG" name="EdifierG5MaxHecatesoftware (1)" alt="A screenshot of some of the EQ presets in the Edifier Hecate software" src="https://cdn.mos.cms.futurecdn.net/n2UQcnTx5zDRsoCzgz4DfG-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: Edifier)</span></figcaption></figure><p>The app is easy enough to use, but be prepared to lean on it to get the most out of this headset. And it did lock itself in an update loop on first install. That might just be a me thing, but it's worth pointing out that it can feel a touch… rough and ready when it comes to stability. YMMV, is what I'm saying.</p><h2 class="article-body__section" id="section-edifier-g5-max-value"><span>Edifier G5 Max value</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jECQsSLDt6LteSq2CH8JyK" name="20261001_150651" alt="A top down shot of an Edifier G5 Max gaming headset" src="https://cdn.mos.cms.futurecdn.net/jECQsSLDt6LteSq2CH8JyK-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>A $150 MSRP aims this headset squarely at one of the biggest hitters in the space, the <a href="https://www.pcgamer.com/hardware/gaming-headsets/razer-blackshark-v3-review/" target="_blank">Razer BlackShark V3</a>. It's our top <a href="https://www.pcgamer.com/best-gaming-headset/" target="_blank">best gaming headset</a> pick—and in all honesty, I don't think there's much competition between the two. </p><p>The Razer has a more refined chassis design and much better audio straight from the box, and although its microphone is perhaps one of the weaker points of the whole package, it still sounds better than the one you'll find on the G5 Max. You "only" get 70-hour battery life, but I'd still say that's plenty.</p><p>It's even lighter, too, at 270 g. And should you wish to go (much) cheaper, there's always the <a href="https://www.pcgamer.com/hardware/gaming-headsets/powera-lucidsound-ls500-p-review/" target="_blank">PowerA LucidSound LS500</a> to consider. Again, it's lighter, and again, you only get 70-hour battery life. But listening to the microphone clips back to back, and looking at the LS500's recipe of capable 50 mm drivers and a comfy chassis design (not to mention more grown-up looks), I know where I'd be saving my cash.</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="k2TT3kutsWA46GfZxDdvBn" name="20261030_170228" alt="An Edifier G5 Max gaming headset on a desk, next to a guitar pick and a lovely cup of tea" src="https://cdn.mos.cms.futurecdn.net/k2TT3kutsWA46GfZxDdvBn-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>If battery life really is your biggest concern, then I'd point you straight at the <a href="https://www.pcgamer.com/hyperx-cloud-alpha-wireless-review/" target="_blank">HyperX Cloud Alpha Wireless</a>. It's also got a weak microphone, but it's a remarkably solid, comfy, and great-sounding set that can often be found with large discounts. It's <a href="https://www.amazon.com/HyperX-Cloud-Alpha-Wireless-Noise-canceling/dp/B09TRW57WB/" target="_blank">down to $109</a> at the time of publishing this review. Oh and the battery life stat? 300 hours. </p><p>I was expecting more from the Edifier G5 Max. The battery life is impressive, but I think you can do much better elsewhere for less cash. Ultimately, I'd say this set is a good reminder that, when shopping for your next pair of wireless cans, you shouldn't press the buy button because of one feature alone.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Sam Altman argues that it's bad you want DRAM in your computer and not a data center, actually ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/iMsUcCYNKqY?start=1747" allowfullscreen=""></iframe></div></div><p>More and more, AI appears to be the reason we can't have nice things on the internet. Beyond generative models gobbling up my own and my fellow creatives' work in a bid to produce abysmally average output, AI data centres are also devouring all of the available memory. <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">This drives up prices and makes DRAM supply for us PC gamers pretty scarce</a>. CEO of OpenAI Sam Altman argues this is truly for the best.</p><p>Appearing on <a href="https://youtu.be/iMsUcCYNKqY?si=gYx2yshJ-Epnn5Z1&amp;t=1747" target="_blank">a recent episode of the Cheeky Pint podcast</a>, Altman argued, "From a global allocation perspective, actually it’s quite terrible to have everyone have a bunch of the world’s limited supply of DRAM sitting in their own computer, and be used 5% of the time."</p><p>Yes, that is steam escaping from my ears. But before I go full screaming tea kettle, let's take a beat. Altman is talking less about PC gamers specifically here, and more about solo AI bros craving compute power and "local inference".</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>He's bemoaning an inefficiency within the AI industry rather than taking aim at us pesky gamers. He goes on to add, "You want maximum utilization in the cloud if you're trying to deal with this very supply constrained environment. And somehow everyone's... Many people's intuition is the opposite of that."</p><p>It still feels a bit rich for Altman to complain about the memory scarcity OpenAI and ChatGPT helped create. I could also keyboard warrior my way through several paragraphs about how resource hungry the data centres he's arguing should enjoy DRAM priority are, not to mention how the rapid AI infrastructure build out has <a href="https://www.pcgamer.com/software/ai/a-wild-testament-to-the-obscene-bloat-and-waste-of-genai-googles-electricity-consumption-is-exponentially-increasing/" target="_blank">caused many of big tech's greener energy goals to fall by the wayside</a>—but I'll spare you. Our planet's environmental predicament doesn't begin or end with Sam Altman or OpenAI, after all.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="bKdvxF2aTyA54pkbpasntQ" name="GettyImages-2236544323" alt="Sam Altman, chief executive officer of OpenAI Inc., during a media tour of the Stargate AI data center in Abilene, Texas, US, on Tuesday, Sept. 23, 2025." src="https://cdn.mos.cms.futurecdn.net/bKdvxF2aTyA54pkbpasntQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Kyle Grillot/Bloomberg via Getty Images)</span></figcaption></figure><p>Instead, I'm choosing to extract a grim sense of satisfaction from the AI snake eating its own tail. For one thing, <a href="https://www.pcgamer.com/software/ai/we-feel-very-good-about-our-trajectory-here-says-google-as-its-stock-tanks-by-usd500-billion/" target="_blank">Google's AI features appear to be cannibalising ad revenue from search</a>. For another, <a href="https://www.pcgamer.com/software/ai/youve-taken-us-free-cash-flow-negative-as-a-company-so-congratulations-amazon-has-plenty-of-nvidia-gpus-but-not-enough-energy-to-power-its-ai-boom/" target="_blank">Amazon's big data centre build out has made free cash flow negative</a>, and for just one more thing, investors haven't been overjoyed with the recent performance of many AI stocks, <a href="https://www.pcgamer.com/software/ai/the-ai-bubble-may-not-have-burst-yet-but-usd1-trillion-worth-of-air-appears-to-have-escaped/" target="_blank">leading to a big sell-off earlier this month</a>.</p><p>The bubble may not have burst yet, but the aforementioned snake is looking a little green around the scales.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/ai/sam-altman-argues-that-its-bad-you-want-dram-in-your-computer-and-not-a-data-center-actually/</link>
                                                                            <description>
                            <![CDATA[ Once again, we're all fuming about big tech and AI. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">jdTJPtnLaazyewCs4rxh84</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/KoPW3Ed6AEr4mUXohjBxzJ-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Fri, 30 Oct 2026 16:45:50 +0000</pubDate>                                                                                                                                <updated>Fri, 30 Oct 2026 17:42:40 +0000</updated>
                                                                                                                                            <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[Software]]></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/png" url="https://cdn.mos.cms.futurecdn.net/KoPW3Ed6AEr4mUXohjBxzJ-1920-80.png">
                                                            <media:credit><![CDATA[Cheeky Pint, YouTube]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Sam Altman appears on an episode of the podcast Cheeky Pint, in a classic pub-style booth with two nearly empty pint glasses on the table in front of him.]]></media:description>                                                            <media:text><![CDATA[Sam Altman appears on an episode of the podcast Cheeky Pint, in a classic pub-style booth with two nearly empty pint glasses on the table in front of him.]]></media:text>
                                <media:title type="plain"><![CDATA[Sam Altman appears on an episode of the podcast Cheeky Pint, in a classic pub-style booth with two nearly empty pint glasses on the table in front of him.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/KoPW3Ed6AEr4mUXohjBxzJ-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/iMsUcCYNKqY?start=1747" allowfullscreen=""></iframe></div></div><p>More and more, AI appears to be the reason we can't have nice things on the internet. Beyond generative models gobbling up my own and my fellow creatives' work in a bid to produce abysmally average output, AI data centres are also devouring all of the available memory. <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">This drives up prices and makes DRAM supply for us PC gamers pretty scarce</a>. CEO of OpenAI Sam Altman argues this is truly for the best.</p><p>Appearing on <a href="https://youtu.be/iMsUcCYNKqY?si=gYx2yshJ-Epnn5Z1&amp;t=1747" target="_blank">a recent episode of the Cheeky Pint podcast</a>, Altman argued, "From a global allocation perspective, actually it’s quite terrible to have everyone have a bunch of the world’s limited supply of DRAM sitting in their own computer, and be used 5% of the time."</p><p>Yes, that is steam escaping from my ears. But before I go full screaming tea kettle, let's take a beat. Altman is talking less about PC gamers specifically here, and more about solo AI bros craving compute power and "local inference".</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>He's bemoaning an inefficiency within the AI industry rather than taking aim at us pesky gamers. He goes on to add, "You want maximum utilization in the cloud if you're trying to deal with this very supply constrained environment. And somehow everyone's... Many people's intuition is the opposite of that."</p><p>It still feels a bit rich for Altman to complain about the memory scarcity OpenAI and ChatGPT helped create. I could also keyboard warrior my way through several paragraphs about how resource hungry the data centres he's arguing should enjoy DRAM priority are, not to mention how the rapid AI infrastructure build out has <a href="https://www.pcgamer.com/software/ai/a-wild-testament-to-the-obscene-bloat-and-waste-of-genai-googles-electricity-consumption-is-exponentially-increasing/" target="_blank">caused many of big tech's greener energy goals to fall by the wayside</a>—but I'll spare you. Our planet's environmental predicament doesn't begin or end with Sam Altman or OpenAI, after all.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="bKdvxF2aTyA54pkbpasntQ" name="GettyImages-2236544323" alt="Sam Altman, chief executive officer of OpenAI Inc., during a media tour of the Stargate AI data center in Abilene, Texas, US, on Tuesday, Sept. 23, 2025." src="https://cdn.mos.cms.futurecdn.net/bKdvxF2aTyA54pkbpasntQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Kyle Grillot/Bloomberg via Getty Images)</span></figcaption></figure><p>Instead, I'm choosing to extract a grim sense of satisfaction from the AI snake eating its own tail. For one thing, <a href="https://www.pcgamer.com/software/ai/we-feel-very-good-about-our-trajectory-here-says-google-as-its-stock-tanks-by-usd500-billion/" target="_blank">Google's AI features appear to be cannibalising ad revenue from search</a>. For another, <a href="https://www.pcgamer.com/software/ai/youve-taken-us-free-cash-flow-negative-as-a-company-so-congratulations-amazon-has-plenty-of-nvidia-gpus-but-not-enough-energy-to-power-its-ai-boom/" target="_blank">Amazon's big data centre build out has made free cash flow negative</a>, and for just one more thing, investors haven't been overjoyed with the recent performance of many AI stocks, <a href="https://www.pcgamer.com/software/ai/the-ai-bubble-may-not-have-burst-yet-but-usd1-trillion-worth-of-air-appears-to-have-escaped/" target="_blank">leading to a big sell-off earlier this month</a>.</p><p>The bubble may not have burst yet, but the aforementioned snake is looking a little green around the scales.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Intel giving us a reason to be excited for Nova Lake: 'We've had a bit of a hole in our portfolio for high-end desktop, Nova Lake filled in that gap' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Intel seems pretty confident about its next generation of desktop chips. The company's top brass just got off the phone with shareholders to discuss how much money it made last quarter (TL;DR: not enough) but more interestingly noted a few tidbits to keep us gamers on the hook for a forthcoming announcement about Nova Lake at CES 2027.</p><p>First off, yes, CES 2027 is when we're reportedly going to hear more about Nova Lake. That takes place at the start of January. I feel we'd usually hear something ahead of the Christmas break—a vanguard of high-performance chips—but I guess the memory crisis and a sales slump saw to that. </p><p>"Nova Lake, our first Intel 18A-P client product, is tracking ahead of schedule, with design wins expected to be twice those of Panther Lake at launch," Lip-Bu Tan said (transcript via <a href="https://seekingalpha.com/article/4959834-intel-corporation-intc-q3-2026-earnings-call-transcript" target="_blank">Seeking Alpha</a>). "We look forward to sharing more at CES in January."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>That's another of the disclosures: Intel will be using the 18A-P node for at least parts of Nova Lake. That should be a step-up for desktop chips: existing Panther Lake and Wildcat Lake chips are built using the 18A node, but they're only on mobile, while existing Arrow Lake chips, such as the Core Ultra 9 285K, are built using TSMC's N3B node. </p><p>18A-P promises "9% higher performance at iso power or more than 18% lower power at iso performance."</p><p>Yet what really piques my interest is this comment from David Zinsner:</p><p>"As we go into next year, we'll have Nova Lake. And I think the important aspect of Nova Lake is we've had a bit of a hole in our portfolio for high-end desktop, and Nova Lake filled in that gap. So I would expect us to do pretty well on a mix basis because we should see better traction on the high-end desktop as well."</p><p>High-end desktop, or HEDT, is not something that Intel has explicitly offered for a long time. We're going back to Cascade Lake-X in 2019, and even those were kinda poorly received for being a bit 'meh'. Now, I'm not sure this from Zinsner amounts to a promise of an entire lineup of HEDT chips beyond the usual gaming chips, as the Core X-series once was, or is more a way to say, 'hey, we've got fast cores and lots of them in Nova Lake'. </p><p>Either way, it sounds like a good thing, especially as AMD currently has the high-end market pretty much wrapped up with its X3D chips. Arrow Lake didn't meet expectations, and Intel has been lagging behind in terms of gaming performance for a while.</p><div ><table><caption>Intel Nova Lake specs (rumoured)</caption><thead><tr><th class="firstcol empty" ></th><th  ><p>P/E/LP-E Cores</p></th><th  ><p>GPU EUs</p></th><th  ><p>TDP (PL1)</p></th><th  ><p>bLLC cache</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Core Ultra 9 4970K BFC</strong></p></td><td  ><p>8/16/4</p></td><td  ><p>32</p></td><td  ><p>125</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Core Ultra 9 4950K</strong></p></td><td  ><p>8/16</p></td><td  ><p>23</p></td><td  ><p>125</p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Core Ultra 9 4900 BFC</strong></p></td><td  ><p>6/12/4</p></td><td  ><p>32</p></td><td  ><p>65</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Core Ultra 7 4870K BFC</strong></p></td><td  ><p>8/12/4</p></td><td  ><p>32</p></td><td  ><p>125</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Core Ultra 7 4850K</strong></p></td><td  ><p>8/12</p></td><td  ><p>32</p></td><td  ><p>125</p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Core Ultra 5 4650K</strong></p></td><td  ><p>6/12</p></td><td  ><p>32</p></td><td  ><p>125</p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Core Ultra 5 4650KF</strong></p></td><td  ><p>6/12</p></td><td  ><p>0</p></td><td  ><p>125</p></td><td  ><p>No</p></td></tr></tbody></table></div><p>We know Intel has an answer to 3D V-Cache on the way with Nova Lake: the so-called Big Last Level Cache (BLLC). Rumours suggest we can expect a core- and cache-happy <a href="https://www.pcgamer.com/hardware/processors/its-taken-its-sweet-time-but-intels-response-to-amds-x3d-chips-is-starting-to-look-tasty/" target="_blank">Core Ultra 9 4970K BFC</a> to lead the charge here.</p><p>Zinsner seems to think these chips will reverse the current trend of Intel ceding market share to AMD: "We do feel like we go into the year as a market share gainer with our Nova Lake portfolio."</p><p>Time will tell, but these all sound like good reasons to stay tuned for CES in the new year. The Las Vegas show runs from January 6 to January 9.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/processors/intel-giving-us-a-reason-to-be-excited-for-nova-lake-weve-had-a-bit-of-a-hole-in-our-portfolio-for-high-end-desktop-nova-lake-filled-in-that-gap/</link>
                                                                            <description>
                            <![CDATA[ More to come at CES 2027 in January. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">7Y6mm7WbdSFf9GtauhRJBU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/xNPHqUrH9cAL7uimaVYGoG-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 30 Oct 2026 14:12:35 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Processors]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&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/xNPHqUrH9cAL7uimaVYGoG-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A photo of an Intel Core Ultra 7 270K Plus processor, resting against a colorful, Intel-branded box]]></media:description>                                                            <media:text><![CDATA[A photo of an Intel Core Ultra 7 270K Plus processor, resting against a colorful, Intel-branded box]]></media:text>
                                <media:title type="plain"><![CDATA[A photo of an Intel Core Ultra 7 270K Plus processor, resting against a colorful, Intel-branded box]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/xNPHqUrH9cAL7uimaVYGoG-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Intel seems pretty confident about its next generation of desktop chips. The company's top brass just got off the phone with shareholders to discuss how much money it made last quarter (TL;DR: not enough) but more interestingly noted a few tidbits to keep us gamers on the hook for a forthcoming announcement about Nova Lake at CES 2027.</p><p>First off, yes, CES 2027 is when we're reportedly going to hear more about Nova Lake. That takes place at the start of January. I feel we'd usually hear something ahead of the Christmas break—a vanguard of high-performance chips—but I guess the memory crisis and a sales slump saw to that. </p><p>"Nova Lake, our first Intel 18A-P client product, is tracking ahead of schedule, with design wins expected to be twice those of Panther Lake at launch," Lip-Bu Tan said (transcript via <a href="https://seekingalpha.com/article/4959834-intel-corporation-intc-q3-2026-earnings-call-transcript" target="_blank">Seeking Alpha</a>). "We look forward to sharing more at CES in January."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>That's another of the disclosures: Intel will be using the 18A-P node for at least parts of Nova Lake. That should be a step-up for desktop chips: existing Panther Lake and Wildcat Lake chips are built using the 18A node, but they're only on mobile, while existing Arrow Lake chips, such as the Core Ultra 9 285K, are built using TSMC's N3B node. </p><p>18A-P promises "9% higher performance at iso power or more than 18% lower power at iso performance."</p><p>Yet what really piques my interest is this comment from David Zinsner:</p><p>"As we go into next year, we'll have Nova Lake. And I think the important aspect of Nova Lake is we've had a bit of a hole in our portfolio for high-end desktop, and Nova Lake filled in that gap. So I would expect us to do pretty well on a mix basis because we should see better traction on the high-end desktop as well."</p><p>High-end desktop, or HEDT, is not something that Intel has explicitly offered for a long time. We're going back to Cascade Lake-X in 2019, and even those were kinda poorly received for being a bit 'meh'. Now, I'm not sure this from Zinsner amounts to a promise of an entire lineup of HEDT chips beyond the usual gaming chips, as the Core X-series once was, or is more a way to say, 'hey, we've got fast cores and lots of them in Nova Lake'. </p><p>Either way, it sounds like a good thing, especially as AMD currently has the high-end market pretty much wrapped up with its X3D chips. Arrow Lake didn't meet expectations, and Intel has been lagging behind in terms of gaming performance for a while.</p><div ><table><caption>Intel Nova Lake specs (rumoured)</caption><thead><tr><th class="firstcol empty" ></th><th  ><p>P/E/LP-E Cores</p></th><th  ><p>GPU EUs</p></th><th  ><p>TDP (PL1)</p></th><th  ><p>bLLC cache</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Core Ultra 9 4970K BFC</strong></p></td><td  ><p>8/16/4</p></td><td  ><p>32</p></td><td  ><p>125</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Core Ultra 9 4950K</strong></p></td><td  ><p>8/16</p></td><td  ><p>23</p></td><td  ><p>125</p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Core Ultra 9 4900 BFC</strong></p></td><td  ><p>6/12/4</p></td><td  ><p>32</p></td><td  ><p>65</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Core Ultra 7 4870K BFC</strong></p></td><td  ><p>8/12/4</p></td><td  ><p>32</p></td><td  ><p>125</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Core Ultra 7 4850K</strong></p></td><td  ><p>8/12</p></td><td  ><p>32</p></td><td  ><p>125</p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Core Ultra 5 4650K</strong></p></td><td  ><p>6/12</p></td><td  ><p>32</p></td><td  ><p>125</p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Core Ultra 5 4650KF</strong></p></td><td  ><p>6/12</p></td><td  ><p>0</p></td><td  ><p>125</p></td><td  ><p>No</p></td></tr></tbody></table></div><p>We know Intel has an answer to 3D V-Cache on the way with Nova Lake: the so-called Big Last Level Cache (BLLC). Rumours suggest we can expect a core- and cache-happy <a href="https://www.pcgamer.com/hardware/processors/its-taken-its-sweet-time-but-intels-response-to-amds-x3d-chips-is-starting-to-look-tasty/" target="_blank">Core Ultra 9 4970K BFC</a> to lead the charge here.</p><p>Zinsner seems to think these chips will reverse the current trend of Intel ceding market share to AMD: "We do feel like we go into the year as a market share gainer with our Nova Lake portfolio."</p><p>Time will tell, but these all sound like good reasons to stay tuned for CES in the new year. The Las Vegas show runs from January 6 to January 9.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Intel shifts Panther Lake capacity to data center chips while the memory crisis wreaks havoc on PC market; still sold out of budget Wildcat Lake chips ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The memory crisis is biting hard and prices are still worsening for memory and storage, which means Intel is having a tougher time selling computer chips to the likes of you and me. CEO Tan said in the company's latest earnings call that "the next few quarters will be challenging for the PC market." So, rather than sit on Panther Lake chips it can't sell, the company says it's looking to shift some of that 18A capacity to data center chips instead.</p><p>Answering a question about whether the company would be reallocating wafers to data center chips in Intel's earnings call (transcript via <a href="https://seekingalpha.com/article/4959834-intel-corporation-intc-q3-2026-earnings-call-transcript" target="_blank">Seeking Alpha</a>), CFO David Zinsner replied: "The answer is yes. What we're taking offline to put Intel 3 into Oregon is 18A wafers, which we're generally going to build Panther Lake products. So we see the opportunity with some of that capacity freed up to go produce more data center wafers."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>There are two consumer chip families on the 18A node right now: <a href="https://www.pcgamer.com/hardware/graphics-cards/fast-feisty-fabulous-ive-benchmarked-intels-new-panther-lake-processor-and-its-dragging-gaming-laptop-performance-out-of-integrated-graphics/" target="_blank">Panther Lake</a> and <a href="https://www.pcgamer.com/hardware/processors/intel-launches-wildcat-lake-core-series-3-processors-kitten-sized-chips-for-the-business-and-budget-markets-only/" target="_blank">Wildcat Lake</a>. For corporate customers, it's Clearwater Forest. </p><p>While Panther Lake has just successfully ramped onto 18A, it's the more recent budget offerings of Wildcat Lake that are reportedly selling strongest.</p><p>"While the next few quarters will be challenging for the PC market, our roadmap continues to strengthen and our long-term outlook remains positive," Intel CEO Lip-Bu Tan said. "We have successfully ramped Panther Lake on Intel 18A and demand for the Wildcat Lake is outstripping supply."</p><p>Zinsner later says something similar: "Wildcat Lake, our cost-optimized Intel 18A client CPU increased units by approximately 70% sequentially and is sold out."</p><p>So, the people want cheap chips. No surprises there. Zinsner is keen to point out that supply shortages are not just about where the wafers go in Intel's fabs, as the company is "also constrained on the substrate side." </p><p>Intel suggests that 2027 may not be pretty either. The internal CCPG group that covers gaming chips is said to likely decline "greater than 20% sequentially", due to companies reducing inventories and orders for the new year. </p><p>That tracks with many of the warnings we've heard from research firms and companies close to memory supply: we may <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">still be suffering throughout 2027, possibly until 2030</a>. This crisis catches up with everyone eventually: customers feel it at the checkout, so they buy less stuff, which leads retailers to put in fewer orders, as do suppliers, finally landing at Intel's door before continuing onwards to its downstream suppliers.</p><p>Intel's share price is down 23% in after-hours trading.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/processors/intel-shifts-panther-lake-capacity-to-data-center-chips-while-the-memory-crisis-wreaks-havoc-on-pc-market-still-sold-out-of-budget-wildcat-lake-chips/</link>
                                                                            <description>
                            <![CDATA[ "The next few quarters will be challenging for the PC market," says CEO Tan. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">BUXJK99ogZJdtrtWgLS3fe</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/xr8v7jD38MEcnLeUDjudSY-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 30 Oct 2026 12:38:22 +0000</pubDate>                                                                                                                                <updated>Fri, 30 Oct 2026 13:27:21 +0000</updated>
                                                                                                                                            <category><![CDATA[Processors]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&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/xr8v7jD38MEcnLeUDjudSY-1920-80.jpg">
                                                            <media:credit><![CDATA[Intel Corporation]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Intel CEO Lip-Bu Tan and an Intel chip with a white diagonal line dividing the two]]></media:description>                                                            <media:text><![CDATA[Intel CEO Lip-Bu Tan and an Intel chip with a white diagonal line dividing the two]]></media:text>
                                <media:title type="plain"><![CDATA[Intel CEO Lip-Bu Tan and an Intel chip with a white diagonal line dividing the two]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/xr8v7jD38MEcnLeUDjudSY-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The memory crisis is biting hard and prices are still worsening for memory and storage, which means Intel is having a tougher time selling computer chips to the likes of you and me. CEO Tan said in the company's latest earnings call that "the next few quarters will be challenging for the PC market." So, rather than sit on Panther Lake chips it can't sell, the company says it's looking to shift some of that 18A capacity to data center chips instead.</p><p>Answering a question about whether the company would be reallocating wafers to data center chips in Intel's earnings call (transcript via <a href="https://seekingalpha.com/article/4959834-intel-corporation-intc-q3-2026-earnings-call-transcript" target="_blank">Seeking Alpha</a>), CFO David Zinsner replied: "The answer is yes. What we're taking offline to put Intel 3 into Oregon is 18A wafers, which we're generally going to build Panther Lake products. So we see the opportunity with some of that capacity freed up to go produce more data center wafers."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>There are two consumer chip families on the 18A node right now: <a href="https://www.pcgamer.com/hardware/graphics-cards/fast-feisty-fabulous-ive-benchmarked-intels-new-panther-lake-processor-and-its-dragging-gaming-laptop-performance-out-of-integrated-graphics/" target="_blank">Panther Lake</a> and <a href="https://www.pcgamer.com/hardware/processors/intel-launches-wildcat-lake-core-series-3-processors-kitten-sized-chips-for-the-business-and-budget-markets-only/" target="_blank">Wildcat Lake</a>. For corporate customers, it's Clearwater Forest. </p><p>While Panther Lake has just successfully ramped onto 18A, it's the more recent budget offerings of Wildcat Lake that are reportedly selling strongest.</p><p>"While the next few quarters will be challenging for the PC market, our roadmap continues to strengthen and our long-term outlook remains positive," Intel CEO Lip-Bu Tan said. "We have successfully ramped Panther Lake on Intel 18A and demand for the Wildcat Lake is outstripping supply."</p><p>Zinsner later says something similar: "Wildcat Lake, our cost-optimized Intel 18A client CPU increased units by approximately 70% sequentially and is sold out."</p><p>So, the people want cheap chips. No surprises there. Zinsner is keen to point out that supply shortages are not just about where the wafers go in Intel's fabs, as the company is "also constrained on the substrate side." </p><p>Intel suggests that 2027 may not be pretty either. The internal CCPG group that covers gaming chips is said to likely decline "greater than 20% sequentially", due to companies reducing inventories and orders for the new year. </p><p>That tracks with many of the warnings we've heard from research firms and companies close to memory supply: we may <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">still be suffering throughout 2027, possibly until 2030</a>. This crisis catches up with everyone eventually: customers feel it at the checkout, so they buy less stuff, which leads retailers to put in fewer orders, as do suppliers, finally landing at Intel's door before continuing onwards to its downstream suppliers.</p><p>Intel's share price is down 23% in after-hours trading.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Compromised laptop could be to blame for record $6.3 billion cryptocurrency heist: Binance rushes to freeze stolen assets as experts blame North Korean group ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Maybe I've been too harsh on those mandatory cybersecurity training courses that my company keeps reminding me to do. What looks to be the largest ever cryptocurrency heist may have started with an engineer's compromised laptop, and the attacker got away with more than a couple coins: $6.3 billion in stolen cryptocurrency. </p><p>The victim is Binance, by far the largest cryptocurrency exchange in the world. The hacker made off with tremendous sums of a range of cryptocurrencies, including ethereum, bitcoin, solana, and XRP. The total sums amount to around $6.3 billion worth.</p><p>Binance says it has worked with blockchain partners to freeze roughly $3 billion worth of that, leaving $3.3 billion still unaccounted for.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>Binance founder Changpeng Zhao took to X to suggest that <a href="https://x.com/cz_binance/status/2115915423174853077" target="_blank">he feels all user funds would be fully covered</a>. Zhao is no longer running Binance following a four-month stint in prison for violating anti-money-laundering laws. He was later pardoned by president Donald Trump. Binance has since confirmed that, yes, it will cover all losses.</p><p>"Binance's initial investigation suggests that the security incident may involve a compromised DevOps engineer’s laptop," the <a href="https://x.com/binance/status/2115993361517891592" target="_blank">company says on X</a>, "which allowed an attacker to gain access to a service container and submit unauthorized withdrawal transactions."</p><p>Binance says it's still figuring out what actually happened here, though experts are already chiming in with what might have gone down. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2115993361517891592"><p lang="en" dir="ltr">Binance's initial investigation suggests that the security incident may involve a compromised DevOps engineer’s laptop, which allowed an attacker to gain access to a service container and submit unauthorized withdrawal transactions. We have found no evidence of any wallet private key leak. We will share a detailed technical post-mortem once the investigation is complete and the facts are fully verified.The estimated total impact sits at around $6.3B. We have worked with blockchain partners to freeze affected assets, with ~$3 billion frozen on-chain so far.Binance will cover all losses from the SAFU fund and the company’s funds. User funds are safe. We will also publish an updated Proof of Reserves once the remediation is complete.As an immediate precaution, Binance has:- temporarily suspended deposits and withdrawals while security checks are completed;- revoked the affected address authorisation;- engaged law enforcement and blockchain intelligence partners to trace and recover funds.Our teams are working around the clock to resolve this issue safely and thoroughly. We are working closely with our law enforcement partners to confirm the identity of these criminals and bring them to justice.Please rely only on official Binance channels for updates. Please feel free to contact Binance Customer Support if you have any further questions.https://t.co/ywB2mKFy0p<a href="https://twitter.com/cantworkitout/status/2115993361517891592">October 30, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>"The attackers didn't break the encryption or steal the private keys. They took over the system that tells the keys what to sign," Jayant Dave from Check Point tells <a href="https://www.bbc.co.uk/news/live/cqrmynd3042gt" target="_blank">BBC News</a>.</p><p>Also speaking to BBC News, Emily Taylor, co-founder of the Global Signal Exchange, said the hack was conducted "on a speed and scale we've never seen."</p><p><a href="https://www.trmlabs.com/resources/blog/north-korea-steals-usd-6-36-billion-from-binance-in-the-largest-hack-in-history" target="_blank">Blockchain intelligence firm TRM</a> says that the theft may have come down to misuse of what's known as a hot wallet, "a wallet connected to the internet that an exchange uses to process customer withdrawals". Early reports suggested someone had phished the authorisations required to access one of Binance's main Ethereum hot wallets, but later reports of further thefts from other cryptocurrency wallets with different chains, keys, and signing schemes suggest the attacker may have had deeper access to Binance.</p><p>"The most likely explanation is that the attacker gained the ability to make Binance's hot wallet signing system sign transactions of its choosing across chains," TRM says.</p><p>"In this incident, a single actor obtained valid signatures for wallets on ten chains within hours."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2115918000373346709"><p lang="en" dir="ltr">Tether froze more than 1.567B USDT related to a potential Binance exchange hack. Protecting the industry and our partners is our main priority.Stay safe everyone.<a href="https://twitter.com/cantworkitout/status/2115918000373346709">October 29, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>So whodunit? TRM points a finger at North Korean hacking group TraderTraitor, a state-sponsored group said to be behind the $1.5 billion Bybit hack in February, 2025. </p><p>Binance says it is working with law enforcement to confirm the identity of the hackers. It hasn't given any official indication as to their identity as of yet.</p><p>There are sure to be a few reckonings for the cryptocurrency market out of this. Firstly, how could a single compromised laptop issue $6.3 billion worth of dodgy signatures? Secondly, if cryptocurrency is so decentralised, how come a few key players freeze billions in assets when required? Thirdly, how many large-scale heists have to take place before trust in the system falls through the floor?</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/security/compromised-laptop-could-be-to-blame-for-record-usd6-3-billion-cryptocurrency-heist-binance-rushes-to-freeze-stolen-assets-as-experts-blame-north-korean-group/</link>
                                                                            <description>
                            <![CDATA[ A DevOps engineer's compromised laptop may have been the first domino to fall in this record-breaking heist. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">eQAA7Siq9SF6o42qFVb8nC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/eDGcGRApH6Ut5G9XMKVRHB-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 30 Oct 2026 10:52:32 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Security]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&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/eDGcGRApH6Ut5G9XMKVRHB-1920-80.jpg">
                                                            <media:credit><![CDATA[Binance]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Binance logo on a screen.]]></media:description>                                                            <media:text><![CDATA[The Binance logo on a screen.]]></media:text>
                                <media:title type="plain"><![CDATA[The Binance logo on a screen.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/eDGcGRApH6Ut5G9XMKVRHB-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Maybe I've been too harsh on those mandatory cybersecurity training courses that my company keeps reminding me to do. What looks to be the largest ever cryptocurrency heist may have started with an engineer's compromised laptop, and the attacker got away with more than a couple coins: $6.3 billion in stolen cryptocurrency. </p><p>The victim is Binance, by far the largest cryptocurrency exchange in the world. The hacker made off with tremendous sums of a range of cryptocurrencies, including ethereum, bitcoin, solana, and XRP. The total sums amount to around $6.3 billion worth.</p><p>Binance says it has worked with blockchain partners to freeze roughly $3 billion worth of that, leaving $3.3 billion still unaccounted for.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>Binance founder Changpeng Zhao took to X to suggest that <a href="https://x.com/cz_binance/status/2115915423174853077" target="_blank">he feels all user funds would be fully covered</a>. Zhao is no longer running Binance following a four-month stint in prison for violating anti-money-laundering laws. He was later pardoned by president Donald Trump. Binance has since confirmed that, yes, it will cover all losses.</p><p>"Binance's initial investigation suggests that the security incident may involve a compromised DevOps engineer’s laptop," the <a href="https://x.com/binance/status/2115993361517891592" target="_blank">company says on X</a>, "which allowed an attacker to gain access to a service container and submit unauthorized withdrawal transactions."</p><p>Binance says it's still figuring out what actually happened here, though experts are already chiming in with what might have gone down. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2115993361517891592"><p lang="en" dir="ltr">Binance's initial investigation suggests that the security incident may involve a compromised DevOps engineer’s laptop, which allowed an attacker to gain access to a service container and submit unauthorized withdrawal transactions. We have found no evidence of any wallet private key leak. We will share a detailed technical post-mortem once the investigation is complete and the facts are fully verified.The estimated total impact sits at around $6.3B. We have worked with blockchain partners to freeze affected assets, with ~$3 billion frozen on-chain so far.Binance will cover all losses from the SAFU fund and the company’s funds. User funds are safe. We will also publish an updated Proof of Reserves once the remediation is complete.As an immediate precaution, Binance has:- temporarily suspended deposits and withdrawals while security checks are completed;- revoked the affected address authorisation;- engaged law enforcement and blockchain intelligence partners to trace and recover funds.Our teams are working around the clock to resolve this issue safely and thoroughly. We are working closely with our law enforcement partners to confirm the identity of these criminals and bring them to justice.Please rely only on official Binance channels for updates. Please feel free to contact Binance Customer Support if you have any further questions.https://t.co/ywB2mKFy0p<a href="https://twitter.com/cantworkitout/status/2115993361517891592">October 30, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>"The attackers didn't break the encryption or steal the private keys. They took over the system that tells the keys what to sign," Jayant Dave from Check Point tells <a href="https://www.bbc.co.uk/news/live/cqrmynd3042gt" target="_blank">BBC News</a>.</p><p>Also speaking to BBC News, Emily Taylor, co-founder of the Global Signal Exchange, said the hack was conducted "on a speed and scale we've never seen."</p><p><a href="https://www.trmlabs.com/resources/blog/north-korea-steals-usd-6-36-billion-from-binance-in-the-largest-hack-in-history" target="_blank">Blockchain intelligence firm TRM</a> says that the theft may have come down to misuse of what's known as a hot wallet, "a wallet connected to the internet that an exchange uses to process customer withdrawals". Early reports suggested someone had phished the authorisations required to access one of Binance's main Ethereum hot wallets, but later reports of further thefts from other cryptocurrency wallets with different chains, keys, and signing schemes suggest the attacker may have had deeper access to Binance.</p><p>"The most likely explanation is that the attacker gained the ability to make Binance's hot wallet signing system sign transactions of its choosing across chains," TRM says.</p><p>"In this incident, a single actor obtained valid signatures for wallets on ten chains within hours."</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2115918000373346709"><p lang="en" dir="ltr">Tether froze more than 1.567B USDT related to a potential Binance exchange hack. Protecting the industry and our partners is our main priority.Stay safe everyone.<a href="https://twitter.com/cantworkitout/status/2115918000373346709">October 29, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>So whodunit? TRM points a finger at North Korean hacking group TraderTraitor, a state-sponsored group said to be behind the $1.5 billion Bybit hack in February, 2025. </p><p>Binance says it is working with law enforcement to confirm the identity of the hackers. It hasn't given any official indication as to their identity as of yet.</p><p>There are sure to be a few reckonings for the cryptocurrency market out of this. Firstly, how could a single compromised laptop issue $6.3 billion worth of dodgy signatures? Secondly, if cryptocurrency is so decentralised, how come a few key players freeze billions in assets when required? Thirdly, how many large-scale heists have to take place before trust in the system falls through the floor?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Nvidia CEO reportedly targeted by Chinese spy previously under suspicion for AI chip smuggling ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Jensen Huang, Nvidia's CEO and one of AI's most important people, was reportedly targeted by a data centre executive working as a spy for the Chinese government, a new report suggests.</p><p>According to the <a href="https://www.nytimes.com/2026/10/29/us/politics/nvidia-china-jensen-huang-trump.html" target="_blank">New York Times</a>, citing undisclosed sources that were briefed on the matter, Alice Huang, also known as Huang Le, was being watched by US agencies due to suspicion of involvement in data centre chip smuggling from Singapore. During that surveillance, the officials are said to have determined that Alice Huang was acting as an intelligence asset.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>Moreover, those officials are also said to have determined that Alice Huang had a close relationship with Jensen Huang (no relation). The NYT suggests that officials were concerned that Alice Huang may have been able to extract information from this relationship that would be useful to the Chinese state—what with Nvidia being pivotal to America's AI efforts.</p><p>It's said that Jensen Huang had, at the time, not been briefed on the threat of foreign intelligence services. It was later implied Nvidia was not briefed on Alice Huang, either. The Nvidia CEO has a close relationship with US president Donald Trump, and has <a href="https://www.pcgamer.com/hardware/trump-confirms-he-brought-jensen-huang-on-his-expedition-to-convince-china-to-open-up/" target="_blank">travelled with the US president to China</a> and was more recently <a href="https://www.pcgamer.com/hardware/nvidia-ceo-jensen-huang-tells-trump-he-agrees-the-ai-doomsayers-are-perpetrating-a-hoax-you-saw-through-all-of-that/" target="_blank">called by the president while on stage at an AI event</a>.</p><p>The US has approved the sale of some AI chips to China, though they are not the cutting-edge Blackwell chips that US firms have access to—providing they pay a pretty penny, anyways. China had been blocking some of these chips on its side, but recent reports suggest older Nvidia H200 cards are <a href="https://www.ft.com/content/6c5650fb-969d-4d4e-80d6-8d11002a8cf7?syn-25a6b1a6=1" target="_blank">reaching China in small amounts</a>. </p><p>As it stands, the White House, CIA, and NSA have all declined to comment to the NYT. Who knew what, and when, is still up in the air. Even Alice Huang's status with the data centre company that was under scrutiny for chip smuggling, Megaspeed, is not currently clear.</p><p>Nvidia has also pushed back on a few of the claims made in the NYT report. The company says that claims Megaspeed had any involvement in chip smuggling were debunked last year in a statement to <a href="https://www.cnbc.com/2026/10/29/nvidia-jensen-huang-chinese-intelligence-asset.html" target="_blank">CNBC</a>.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:55.52%;"><img id="hYpyAaA3sEs774SXS6x5mW" name="blackwell-b100-002.jpg" alt="Images of Nvidia's Blackwell GPU from GTC." src="https://cdn.mos.cms.futurecdn.net/hYpyAaA3sEs774SXS6x5mW-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1066" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>"The diversion allegations against this regional cloud were thoroughly investigated and debunked last year,” says spokesperson John Rizzo.</p><p>Rizzo also pushed back on Huang's relationship with Alice Huang being anything exceptional to the NYT. </p><p>“Jensen’s interactions with Ms. Huang are not unusual or unexpected. Meetings with customers are part of a CEO’s job; Jensen talks with thousands of customer executives every year.”</p><p>He also added that Nvidia believes the US government would have made it known had there been any threat to American industry, and that Megaspeed would have received "ordinary business information" and not trade secrets; "zero information relevant to national security."</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/ai/nvidia-ceo-reportedly-targeted-by-chinese-spy-previously-under-suspicion-for-ai-chip-smuggling/</link>
                                                                            <description>
                            <![CDATA[ Nvidia says Huang would've only spoken about "ordinary business information" with a data center exec anyways. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">RfBjYLRnvgj4YZZLtLYjdZ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/UMwkuHpwHMTbMhWvPgHLsg-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 29 Oct 2026 17:30:39 +0000</pubDate>                                                                                                                                <updated>Thu, 29 Oct 2026 17:30:48 +0000</updated>
                                                                                                                                            <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&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/UMwkuHpwHMTbMhWvPgHLsg-1920-80.jpg">
                                                            <media:credit><![CDATA[Lam Yik Fei/Bloomberg via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Jensen Huang on stage at the Nvidia GTC event on the sidelines of Computex 2026 in Taipei, Taiwan, on Monday, June 1, 2026.]]></media:description>                                                            <media:text><![CDATA[Jensen Huang on stage at the Nvidia GTC event on the sidelines of Computex 2026 in Taipei, Taiwan, on Monday, June 1, 2026.]]></media:text>
                                <media:title type="plain"><![CDATA[Jensen Huang on stage at the Nvidia GTC event on the sidelines of Computex 2026 in Taipei, Taiwan, on Monday, June 1, 2026.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/UMwkuHpwHMTbMhWvPgHLsg-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Jensen Huang, Nvidia's CEO and one of AI's most important people, was reportedly targeted by a data centre executive working as a spy for the Chinese government, a new report suggests.</p><p>According to the <a href="https://www.nytimes.com/2026/10/29/us/politics/nvidia-china-jensen-huang-trump.html" target="_blank">New York Times</a>, citing undisclosed sources that were briefed on the matter, Alice Huang, also known as Huang Le, was being watched by US agencies due to suspicion of involvement in data centre chip smuggling from Singapore. During that surveillance, the officials are said to have determined that Alice Huang was acting as an intelligence asset.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>Moreover, those officials are also said to have determined that Alice Huang had a close relationship with Jensen Huang (no relation). The NYT suggests that officials were concerned that Alice Huang may have been able to extract information from this relationship that would be useful to the Chinese state—what with Nvidia being pivotal to America's AI efforts.</p><p>It's said that Jensen Huang had, at the time, not been briefed on the threat of foreign intelligence services. It was later implied Nvidia was not briefed on Alice Huang, either. The Nvidia CEO has a close relationship with US president Donald Trump, and has <a href="https://www.pcgamer.com/hardware/trump-confirms-he-brought-jensen-huang-on-his-expedition-to-convince-china-to-open-up/" target="_blank">travelled with the US president to China</a> and was more recently <a href="https://www.pcgamer.com/hardware/nvidia-ceo-jensen-huang-tells-trump-he-agrees-the-ai-doomsayers-are-perpetrating-a-hoax-you-saw-through-all-of-that/" target="_blank">called by the president while on stage at an AI event</a>.</p><p>The US has approved the sale of some AI chips to China, though they are not the cutting-edge Blackwell chips that US firms have access to—providing they pay a pretty penny, anyways. China had been blocking some of these chips on its side, but recent reports suggest older Nvidia H200 cards are <a href="https://www.ft.com/content/6c5650fb-969d-4d4e-80d6-8d11002a8cf7?syn-25a6b1a6=1" target="_blank">reaching China in small amounts</a>. </p><p>As it stands, the White House, CIA, and NSA have all declined to comment to the NYT. Who knew what, and when, is still up in the air. Even Alice Huang's status with the data centre company that was under scrutiny for chip smuggling, Megaspeed, is not currently clear.</p><p>Nvidia has also pushed back on a few of the claims made in the NYT report. The company says that claims Megaspeed had any involvement in chip smuggling were debunked last year in a statement to <a href="https://www.cnbc.com/2026/10/29/nvidia-jensen-huang-chinese-intelligence-asset.html" target="_blank">CNBC</a>.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:55.52%;"><img id="hYpyAaA3sEs774SXS6x5mW" name="blackwell-b100-002.jpg" alt="Images of Nvidia's Blackwell GPU from GTC." src="https://cdn.mos.cms.futurecdn.net/hYpyAaA3sEs774SXS6x5mW-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1066" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>"The diversion allegations against this regional cloud were thoroughly investigated and debunked last year,” says spokesperson John Rizzo.</p><p>Rizzo also pushed back on Huang's relationship with Alice Huang being anything exceptional to the NYT. </p><p>“Jensen’s interactions with Ms. Huang are not unusual or unexpected. Meetings with customers are part of a CEO’s job; Jensen talks with thousands of customer executives every year.”</p><p>He also added that Nvidia believes the US government would have made it known had there been any threat to American industry, and that Megaspeed would have received "ordinary business information" and not trade secrets; "zero information relevant to national security."</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'We feel very good about our trajectory here' says Google as its stock tanks by $500 billion ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Even during a good financial year, a big tech investor is seemingly never satisfied. Case in point, while Google Search grew by 12% year-over-year and made $63.3 billion this past quarter, parent company Alphabet's share price took a pretty spectacular tumble.</p><p>Despite making an amount of money the mere thought of which sucks the air right out of my lungs, Search's revenue this quarter was actually below Wall Street's expectations. As a result, Alphabet's shares are down 13% and $500 billion has been wiped from its market value (via <a href="https://www.ft.com/content/eb386156-5bf9-4edd-80f2-803fdee1e33d?syn-25a6b1a6=1" target="_blank">The Financial Times</a>).</p><p>The share price is continuing to fluctuate and, <a href="https://www.cnbc.com/2026/10/29/alphabet-google-microsoft-msft-shares-today-earnings.html" target="_blank">according to CNBC</a>, it could be the worst post-earnings call decline ever. This follows <a href="https://www.pcgamer.com/software/ai/the-ai-bubble-may-not-have-burst-yet-but-usd1-trillion-worth-of-air-appears-to-have-escaped/" target="_blank">$1 trillion worth of air escaping from the AI party balloon earlier this month</a>, due to anxious investors widely selling off stock. So, how did Alphabet get its ABC's so wrong? Long story short, Google's own AI features may be eating into its Search revenue.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>This is despite Search apparently seeing the fastest year-over-year query growth rate in half a decade. <a href="https://www.youtube.com/live/X9mmCagxJTo?si=pOO5WJc-g9qfmP-l&amp;t=2184" target="_blank">During Alphabet's most recent earnings call</a>, Google's senior vice president and chief business officer Philipp Schindler was asked to explain this 'disconnect'.</p><p>"It's worth noting that the strong growth in AI Mode queries had an impact because of the lower monetization we were seeing in AI Mode," Schindler says. "To be clear, we feel very good about our trajectory here. Our ad experiments have shown promising results, and we're now scaling ads within both AI Overviews and AI Mode to more users and more queries, including, as I mentioned, international markets and multiturn ads in the US."</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:1152px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jXqdZNznwAgMFVjiRtMsaj" name="goog loog.png" alt="Seattle, USA - Jul 24, 2022: The South Lake Union Google Headquarter entrance at sunset." src="https://cdn.mos.cms.futurecdn.net/jXqdZNznwAgMFVjiRtMsaj-1920-80.png" mos="" align="middle" fullscreen="" width="1152" height="648" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: 400tmax via Getty Images)</span></figcaption></figure><p>In other words, yes, AI Mode is eating Search's lunch but Google is hoping to scale up its kitchen production in order to keep both of its babies fed. Or something like that—the metaphor got away from me in the middle there.</p><p>Anyway, these financial results only serve to add fuel to the fire of investor fear that Google Search is getting singed by the likes of ChatGPT. I mean, compare and contrast the amount of ads you see on the first page of Google results against what you typically see from an LLM chatbot. As Google tells it, more ads are likely coming to AI Overviews and AI Mode in the near future to remedy its 'disconnect.'</p><p>On top of what investors are seeing as financial underperformance, Google is also knee deep in negative cash flow. Initial projections suggested this wouldn't venture into the red beyond $3.5 billion, but Google was actually looking at minus $9.1 billion at the end of September. This is apparently only the second quarter in which Google has reported negative cash flow since it went public back in 2004. </p><p>Having spent $51.3 billion on AI in the last quarter alone, such a plunge is perhaps unsurprising. The company intends to spend even more in the future, having apparently committed itself to data centre and related purchases in excess of $1 trillion—despite investors growing increasingly anxious about whether a return on AI investment will ever fully materialise.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/ai/we-feel-very-good-about-our-trajectory-here-says-google-as-its-stock-tanks-by-usd500-billion/</link>
                                                                            <description>
                            <![CDATA[ More than a little nibble. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">zptXqDkQtbF5FRhLjKv36L</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/mBxxqUBT3cFZkoc6ffhMv5-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 29 Oct 2026 17:09:36 +0000</pubDate>                                                                                                                                <updated>Thu, 29 Oct 2026 17:09:40 +0000</updated>
                                                                                                                                            <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[Software]]></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/mBxxqUBT3cFZkoc6ffhMv5-1920-80.jpg">
                                                            <media:credit><![CDATA[Erman Gunes via Getty Images / Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A split screen image of Google&#039;s offices in Toronto, Canada, and a close up photo of Search&#039;s AI Overview.]]></media:description>                                                            <media:text><![CDATA[A split screen image of Google&#039;s offices in Toronto, Canada, and a close up photo of Search&#039;s AI Overview.]]></media:text>
                                <media:title type="plain"><![CDATA[A split screen image of Google&#039;s offices in Toronto, Canada, and a close up photo of Search&#039;s AI Overview.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/mBxxqUBT3cFZkoc6ffhMv5-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Even during a good financial year, a big tech investor is seemingly never satisfied. Case in point, while Google Search grew by 12% year-over-year and made $63.3 billion this past quarter, parent company Alphabet's share price took a pretty spectacular tumble.</p><p>Despite making an amount of money the mere thought of which sucks the air right out of my lungs, Search's revenue this quarter was actually below Wall Street's expectations. As a result, Alphabet's shares are down 13% and $500 billion has been wiped from its market value (via <a href="https://www.ft.com/content/eb386156-5bf9-4edd-80f2-803fdee1e33d?syn-25a6b1a6=1" target="_blank">The Financial Times</a>).</p><p>The share price is continuing to fluctuate and, <a href="https://www.cnbc.com/2026/10/29/alphabet-google-microsoft-msft-shares-today-earnings.html" target="_blank">according to CNBC</a>, it could be the worst post-earnings call decline ever. This follows <a href="https://www.pcgamer.com/software/ai/the-ai-bubble-may-not-have-burst-yet-but-usd1-trillion-worth-of-air-appears-to-have-escaped/" target="_blank">$1 trillion worth of air escaping from the AI party balloon earlier this month</a>, due to anxious investors widely selling off stock. So, how did Alphabet get its ABC's so wrong? Long story short, Google's own AI features may be eating into its Search revenue.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>This is despite Search apparently seeing the fastest year-over-year query growth rate in half a decade. <a href="https://www.youtube.com/live/X9mmCagxJTo?si=pOO5WJc-g9qfmP-l&amp;t=2184" target="_blank">During Alphabet's most recent earnings call</a>, Google's senior vice president and chief business officer Philipp Schindler was asked to explain this 'disconnect'.</p><p>"It's worth noting that the strong growth in AI Mode queries had an impact because of the lower monetization we were seeing in AI Mode," Schindler says. "To be clear, we feel very good about our trajectory here. Our ad experiments have shown promising results, and we're now scaling ads within both AI Overviews and AI Mode to more users and more queries, including, as I mentioned, international markets and multiturn ads in the US."</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:1152px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jXqdZNznwAgMFVjiRtMsaj" name="goog loog.png" alt="Seattle, USA - Jul 24, 2022: The South Lake Union Google Headquarter entrance at sunset." src="https://cdn.mos.cms.futurecdn.net/jXqdZNznwAgMFVjiRtMsaj-1920-80.png" mos="" align="middle" fullscreen="" width="1152" height="648" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: 400tmax via Getty Images)</span></figcaption></figure><p>In other words, yes, AI Mode is eating Search's lunch but Google is hoping to scale up its kitchen production in order to keep both of its babies fed. Or something like that—the metaphor got away from me in the middle there.</p><p>Anyway, these financial results only serve to add fuel to the fire of investor fear that Google Search is getting singed by the likes of ChatGPT. I mean, compare and contrast the amount of ads you see on the first page of Google results against what you typically see from an LLM chatbot. As Google tells it, more ads are likely coming to AI Overviews and AI Mode in the near future to remedy its 'disconnect.'</p><p>On top of what investors are seeing as financial underperformance, Google is also knee deep in negative cash flow. Initial projections suggested this wouldn't venture into the red beyond $3.5 billion, but Google was actually looking at minus $9.1 billion at the end of September. This is apparently only the second quarter in which Google has reported negative cash flow since it went public back in 2004. </p><p>Having spent $51.3 billion on AI in the last quarter alone, such a plunge is perhaps unsurprising. The company intends to spend even more in the future, having apparently committed itself to data centre and related purchases in excess of $1 trillion—despite investors growing increasingly anxious about whether a return on AI investment will ever fully materialise.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ YouTuber buys and turns 32 GB of laptop DDR5 into desktop RAM for just $175 ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/bpT5CdOBNDU" allowfullscreen=""></iframe></div></div><p>In this week's 'what the memory crisis is doing to people' news, a YouTuber has recently bought 32 GB of DDR5 laptop memory online and successfully converted it into memory for their desktop. Overall, it cost them just $175 ($120 for the memory and $55 for extra components). That's a bit of a bargain, as 32 GB DDR5 dual-channel memory is fetching <a href="https://www.newegg.com/p/pl?d=32+GB+DDR5" target="_blank">upwards of $500 on Newegg right now.</a> </p><p><a href="https://www.youtube.com/watch?v=bpT5CdOBNDU" target="_blank">Blighted Agent took to their YouTube channel</a> to share the process, where they purchased two SO-DIMM sticks of 16 GB DDR5 memory on Facebook Marketplace (presumably salvaged from a dead laptop). From here, they put a stick on a preheater, then removed the BIOS chip, the SPD chip and all eight of its memory chips. </p><p>Buying new DDR5 DIMM PCBs and heatsinks off AliExpress, they cleaned the factory unleaded solder on the laptop memory, then soldered them onto the new PCBs. It's an impressive feat that requires reballing the memory chips with a stencil, a very precise procedure. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>Blighted Agent says, "You want a thin layer of flux, not too much or not too little. If you do too little, the balls might not reflow properly. If you do too much, they might bridge and cause problems". </p><p>Effectively, those solder balls connect the memory chip circuitry to the circuitry on the board, so mistakes would require redoing the entire process. From here, everything that was taken off the original SO-DIMM sticks is then put onto the new boards, tested via the desktop BIOS, before getting a heatsink. </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="eLnkM5Em9ob5RsJrdsaGL" name="I Turned Laptop DDR5 in Desktop DDR5 and then Overclocked It 4-7 screenshot" alt="A still from Blighted Agent's YouTube video converting laptop ram into desktop ram" src="https://cdn.mos.cms.futurecdn.net/eLnkM5Em9ob5RsJrdsaGL-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blighted Agent)</span></figcaption></figure><p>Blighted Agent reports this memory kit has a 7800 MT/s frequency at CL38 when overclocked, making it a decent bit of kit and likely to cost a pretty penny as a standard RAM kit today. It reportedly tested stable for an hour and a half. They also say it worked fine without any blue screens in normal use. </p><p>Though Blighted Agent makes it look easy, technical knowledge is needed to actually convert the memory, so it's hard to recommend doing it at home unless you are willing to buy the gear and teach yourself, but this points to a decent alternate path while 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> continues to gut pricing. </p><p>One could feasibly convert memory from laptops and give it back to users for a technical fee, and still pay less than it would cost you to get the standard desktop memory. And right now, we're all looking for ways to get memory as cheap as possible. </p><p>Here's hoping AI companies don't try to buy up all the laptop memory to do the same thing. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/memory/youtuber-buys-and-turns-32-gb-of-laptop-ddr5-into-desktop-ram-for-just-usd175/</link>
                                                                            <description>
                            <![CDATA[ They then overclocked it. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">MauvyX59RAVS3pseGVQ7TQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/gr7AgY7afjVgYaSwefg3Tj-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Thu, 29 Oct 2026 15:55:22 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Memory]]></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/png" url="https://cdn.mos.cms.futurecdn.net/gr7AgY7afjVgYaSwefg3Tj-1920-80.png">
                                                            <media:credit><![CDATA[Blighted Agent]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A still from Blighted Agent&#039;s YouTube video converting laptop ram into desktop ram]]></media:description>                                                            <media:text><![CDATA[A still from Blighted Agent&#039;s YouTube video converting laptop ram into desktop ram]]></media:text>
                                <media:title type="plain"><![CDATA[A still from Blighted Agent&#039;s YouTube video converting laptop ram into desktop ram]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/gr7AgY7afjVgYaSwefg3Tj-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/bpT5CdOBNDU" allowfullscreen=""></iframe></div></div><p>In this week's 'what the memory crisis is doing to people' news, a YouTuber has recently bought 32 GB of DDR5 laptop memory online and successfully converted it into memory for their desktop. Overall, it cost them just $175 ($120 for the memory and $55 for extra components). That's a bit of a bargain, as 32 GB DDR5 dual-channel memory is fetching <a href="https://www.newegg.com/p/pl?d=32+GB+DDR5" target="_blank">upwards of $500 on Newegg right now.</a> </p><p><a href="https://www.youtube.com/watch?v=bpT5CdOBNDU" target="_blank">Blighted Agent took to their YouTube channel</a> to share the process, where they purchased two SO-DIMM sticks of 16 GB DDR5 memory on Facebook Marketplace (presumably salvaged from a dead laptop). From here, they put a stick on a preheater, then removed the BIOS chip, the SPD chip and all eight of its memory chips. </p><p>Buying new DDR5 DIMM PCBs and heatsinks off AliExpress, they cleaned the factory unleaded solder on the laptop memory, then soldered them onto the new PCBs. It's an impressive feat that requires reballing the memory chips with a stencil, a very precise procedure. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>Blighted Agent says, "You want a thin layer of flux, not too much or not too little. If you do too little, the balls might not reflow properly. If you do too much, they might bridge and cause problems". </p><p>Effectively, those solder balls connect the memory chip circuitry to the circuitry on the board, so mistakes would require redoing the entire process. From here, everything that was taken off the original SO-DIMM sticks is then put onto the new boards, tested via the desktop BIOS, before getting a heatsink. </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="eLnkM5Em9ob5RsJrdsaGL" name="I Turned Laptop DDR5 in Desktop DDR5 and then Overclocked It 4-7 screenshot" alt="A still from Blighted Agent's YouTube video converting laptop ram into desktop ram" src="https://cdn.mos.cms.futurecdn.net/eLnkM5Em9ob5RsJrdsaGL-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blighted Agent)</span></figcaption></figure><p>Blighted Agent reports this memory kit has a 7800 MT/s frequency at CL38 when overclocked, making it a decent bit of kit and likely to cost a pretty penny as a standard RAM kit today. It reportedly tested stable for an hour and a half. They also say it worked fine without any blue screens in normal use. </p><p>Though Blighted Agent makes it look easy, technical knowledge is needed to actually convert the memory, so it's hard to recommend doing it at home unless you are willing to buy the gear and teach yourself, but this points to a decent alternate path while 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> continues to gut pricing. </p><p>One could feasibly convert memory from laptops and give it back to users for a technical fee, and still pay less than it would cost you to get the standard desktop memory. And right now, we're all looking for ways to get memory as cheap as possible. </p><p>Here's hoping AI companies don't try to buy up all the laptop memory to do the same thing. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Havn HS 360 review ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The Havn HS 360 is a familiar sight. More or less the same design as the company's first case, the HS 420, it's just a touch smaller. That's no bad thing; the <a href="https://www.pcgamer.com/hardware/pc-cases/havn-hs-420-vgpu-pc-case-review/" target="_blank">HS 420 earned a 90% score</a> from me due to its ability to hide most of the ugliness that comes with the usual pile of cables and connectors behind its retro futurist style facade. I feel just as positively about this slightly shrunken version too.</p><p>The HS 360 is available in two versions, with or without vertical GPU mounting; and two colours, black or white. I've here two cases for review, covering all the options, and I've decided to put them to the test with rival builds. Namely to get a feel for the process of building with the different GPU mounting solutions, but also satiate my longstanding desire to build yin and yang gaming PCs. Dark and light. AMD and Nvidia.</p><p>I had a really good time with the HS 360. Both times. It has a few limitations to be aware of, especially regarding fan size, but select the right parts and a build comes together very easily. Both of my builds have come out looking stunning, and while I'd like to take all the credit, the HS 360 made very light work of cable management and overall aesthetics.</p><p>I definitely have a favourite from my two PCs, and the reasons why are down to the HS 360. So let's talk about the case in greater detail.</p><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p>✅<strong> Your PC has pride of place on your desk:</strong> The HS 360 looks fantastic and importantly isn't as huge as the HS 420.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Don&#39;t buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>❌ You can't spare more of your budget for fans: </strong>There are no fans included with the HS 360, which makes its high price tag even higher for a complete build.</p></div></div></div></div><h2 class="article-body__section" id="section-features"><span>Features</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="euieaCMCYYURWgpTCeupQe" name="IMG_8876" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/euieaCMCYYURWgpTCeupQe-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: Future)</span></figcaption></figure><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Havn HS 360</strong></p></td><td  ><p><strong>Havn HS 420</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions (mm)</strong></p></td><td  ><p>491 x 242 x 521</p></td><td  ><p>541 x 259.5 x 547</p></td></tr><tr><td class="firstcol " ><p><strong>Motherboard support</strong></p></td><td  ><p>ATX / BTF ATX / M-ATX / Mini-ITX</p></td><td  ><p>ATX / M-ATX / Mini-ITX</p></td></tr><tr><td class="firstcol " ><p><strong>Radiator support</strong></p></td><td  ><p>TOP: Up to 360 mm | RIGHT: Up to 360 mm (up to 58 mm thick)</p></td><td  ><p>TOP: Up to 420 mm | RIGHT: up to 420 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Fan support</strong></p></td><td  ><p>TOP: 3x 120 mm | RIGHT: 3x 120 mm | BOTTOM: 3x 120 mm | REAR: 2x 120 mm (max 30 mm thick)</p></td><td  ><p>TOP: 3x 120/140 mm | RIGHT: 3x 120/140 mm |  BOTTOM: 3x 120/140 mm | REAR: 2x 120/140 mm (max 30 mm thick)</p></td></tr><tr><td class="firstcol " ><p><strong>Storage bays</strong></p></td><td  ><p>2 x 3.5-inch / 4 x 2.5-inch (2x storage bays, one can move behind motherboard)</p></td><td  ><p>5 x 3.5-inch, 10x 2.5-inch</p></td></tr><tr><td class="firstcol " ><p><strong>Front I/O</strong></p></td><td  ><p>2x USB 3.2 Type-A, 1x USB 3.2 Gen 2 Type-C, 3.5 mm jack</p></td><td  ><p>2x USB 3.2 Type-A, 1x USB 3.2 Gen 2 Type-C, 3.5 mm jack</p></td></tr><tr><td class="firstcol " ><p><strong>Max. GPU length (mm)</strong></p></td><td  ><p>430</p></td><td  ><p>470</p></td></tr><tr><td class="firstcol " ><p><strong>Max. PSU length (mm)</strong></p></td><td  ><p>230</p></td><td  ><p>220</p></td></tr><tr><td class="firstcol " ><p><strong>Price (US)</strong></p></td><td  ><p>$200/$280 (VGPU)</p></td><td  ><p><a href="https://havn.global/products/hs-420"><u>$250</u></a>/<a href="https://havn.global/products/hs-420-vgpu"><u>$330</u></a> (VGPU)</p></td></tr><tr><td class="firstcol " ><p><strong>Price (UK)</strong></p></td><td  ><p>£170/£240 (VGPU)</p></td><td  ><p><a href="https://www.overclockers.co.uk/havn-hs-420-premium-mid-tower-case-white/CAS-HVN-02514.html"><u>£200</u></a>/<a href="https://www.overclockers.co.uk/havn-hs-420-vgpu-premium-mid-tower-case-white/CAS-HVN-02516.html"><u>£270</u></a> (VGPU)</p></td></tr></tbody></table></div><p>The HS 360 introduces some key design changes over the HS 420. Common across both standard and VGPU models are some quality of life improvements: support for Back Connect motherboards, a tighter bend on the panoramic glass panel, and larger cutouts for jamming a screwdriver through to the screws on the PCIe expansion slots.</p><p>Havn seems to have paid close attention to some of the feedback from builders with the HS 360, and it's now possible to install or replace two rear fans without having to remove components that may be already installed inside the case; a small but constant frustration with the HS 420.</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="5g4biMJDxygTGcqbfYKXMe" name="IMG_8742" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/5g4biMJDxygTGcqbfYKXMe-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: Future)</span></figcaption></figure><p>The VGPU model also receives a new magnetic 'Airflow Divider' intended to keep the hot air produced by the graphics card from recirculating around it, which can increase temps. This works in conjunction with another glass divider mounted to the tilted fan bracket included with the VGPU model. As you'll see, there's a lot more going on with the VGPU model, and as such, it costs $80 more.</p><p>The standard model is a more simple thing. That's how I like it. It includes a three-fan bracket at the bottom, though unlike the VGPU model, these are flat and pointed straight at the graphics card. It also has an integrated GPU support that neatly sits atop of the lower cable routing points. This is fairly adjustable and can be removed entirely if you prefer.  </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="C8hWusDC3tvUaUQsGJYCxd" name="IMG_8719" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/C8hWusDC3tvUaUQsGJYCxd-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: Future)</span></figcaption></figure><p>There are no fans included on the HS 360. You're required to source your own at added expense, but be warned, unlike the HS 420, which supports a mix of fan sizes, the HS 360 only supports those 120 mm in size. Even in the top, it's limited to a maximum radiator size of 360 mm. It's easy to see why once I'd built a PC inside here: even with such a radiator installed, there's only a small amount of clearance between the motherboard on one side and glass on the other. </p><p>At least you don't need to worry about a fan controller, as one of those is included in the case. It's neatly stored rearwards in the back of the chassis. </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="vandMXfwqqofuFss7w2bAe" name="IMG_8695" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/vandMXfwqqofuFss7w2bAe-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: Future)</span></figcaption></figure><p>Dust filters, you've got two of 'em. One in the bottom for those three intake fans, and one in the lower position in the rear. Though technically the rear and top panels also have non-removeable filters to keep dust from gathering elsewhere.</p><p>The storage bays are surprisingly brilliant on the HS 360, and it's a shame I don't really have any use for them. There are two included. Each holds two 2.5-inch SSDs or one 3.5-inch HDD. A series of screws lets you break them down to the basic cage for a hard drive and back up to the neat, space-saving unit you see on the back. If you prefer, ditch both and mount three more 120 mm fans in their place. You could even fit an AIO here, providing it doesn't exceed a thickness of 58 mm.</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="em5j9GVmBpHWPSodBG5YJe" name="IMG_8703" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/em5j9GVmBpHWPSodBG5YJe-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: Future)</span></figcaption></figure><p>Havn also notes limited support for an AIO at the bottom of the case, but it limits GPU slots and it's a terrible idea for pump longevity and noise. Just don't bother.</p><p>Other bits included in the box are some zip-ties and hook-and-loop fasteners (you'll be needing these), a couple of spare sliders for the cable grommets, a VESA mounting bracket (for tiny screens but also may be useful for reservoirs or 3D printed add-ons, etc.), and a few bags of labelled screws.  </p><h2 class="article-body__section" id="section-installation"><span>Installation</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="EmzZhbab7veYg9wJ54YDDe" name="IMG_8789" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/EmzZhbab7veYg9wJ54YDDe-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: Future)</span></figcaption></figure><p>The HS 360 is smaller in every way to the HS 420—14.9% according to Havn—though for its slightly smaller size, it feels just as easy to build into.</p><p>The fans go in first, and without issue thanks to the removable brackets used throughout the HS 360. I was left wondering where best to run the cables at times, and turns out, I would later realise I got some of these a little wrong. Namely the ones in the bottom of the case, which have a slightly awkward run around the dust filter, but also the top rear fan. You will also need a couple of fan extension cables to reach all the way around to the hub or even the closest headers on the motherboard in my experience.</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="JnLiWenVCrusGG5wqEzAPe" name="IMG_8725" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/JnLiWenVCrusGG5wqEzAPe-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: Future)</span></figcaption></figure><p>A power supply goes in easy; the HS 360 supports those up to 230 mm in length. You will need a traditional PSU here, as the sideways mounting position and stubby shroud on the HS 360 do nix any hopes of fitting a Corsair Shift unit. That applies to like a dozen people but unfortunately I am one of that dozen, as 60% or so of the PSUs I own are Shift models. I made do. </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="UzBHHnUbDUEfvrXAvbZSLe" name="IMG_8758" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/UzBHHnUbDUEfvrXAvbZSLe-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: Future)</span></figcaption></figure><p>Cable management is simple and straightforward. Everything locks in place using the hook-and-loop fasteners, of which extra are included, and a good amount of the zip-ties, too. There are spots for extra fasteners but I just tie the cables down to the generous number of tie-down spots. Looks smart, doesn't take much effort, job's a good'un.</p><p>Now one reason for doing two builds here was to try out the VGPU bracket. I admit, I don't generally love VGPU mounting. It's usually more hassle than it's worth. But I've given it a go here on one of the machines, and, despite some extra tinkering required to remove the VGPU bracket to install the motherboard and then reinstall it again, it did go fairly well. </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="zUv4UPaBxXUGeGL4yZrjLe" name="IMG_8862" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/zUv4UPaBxXUGeGL4yZrjLe-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: Future)</span></figcaption></figure><p>From my time with it, I still don't care much for VGPU. Sorry. It just clutters the build, leaves the GPU power cables hanging awkwardly in front of the RAM, and means you're having to think more about airflow with all those dividers. To me, it's just not worth the extra $80, and the simple, standard option for less cash is wholly more appealing.</p><h2 class="article-body__section" id="section-aesthetics"><span>Aesthetics</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="euieaCMCYYURWgpTCeupQe" name="IMG_8876" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/euieaCMCYYURWgpTCeupQe-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: Future)</span></figcaption></figure><p>I shouldn't need to be too convincing here, as the HS 360 is one of the best-looking cases I've tested all year. </p><p>I'm a big fan of the rear panel. Its black accents should help with colour-matching components <em>inside </em>the case, too. You don't need expensive all-white parts here, even though I've (mostly) opted for it in the light build. Some black components should look just as excellent. Case in point, I ran out of white fans and used a couple of black fans in the rear and I dare say it looks pretty decent. You can be the judge of that, I suppose.</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="HBZLPSThxLsq5kZ5ciiwLe" name="IMG_8654" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/HBZLPSThxLsq5kZ5ciiwLe-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: Future)</span></figcaption></figure><p>The glass panel has a slightly tighter curve than the HS 420, and is altogether stunning. The design of this case does a wonderful job of hiding the uglier parts of a PC—the cables, connectors, and clutter—out of sight.</p><h2 class="article-body__section" id="section-gallery"><span>Gallery</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/FWaY6Cwve2U4F6vYTPHPPe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/T266qDE75ZhwwuP2JJhPie-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/RzEXRWwPfTcWDJeTauPjmd-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Qia3WPMt5pGp3q9FtwCife-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HtJt4KhafQybfpm94FxAae-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/RwfBdnyvYTGTTvoWodHNRe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ptUmUr8575daEqCjY3SyQe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/37M2jxJyGE3Bfu8QumWtQe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/euieaCMCYYURWgpTCeupQe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/syBntHvVrdadSy5M9fwGQe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ix3PCXFdhVxrSunD2ZEDQe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JnLiWenVCrusGG5wqEzAPe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YeDVmfemHnvvbcDAX38APe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YjaAMg8rz8CBm5YTDTBMNe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/BV4t2B8WTMvPhYyfumfdMe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5g4biMJDxygTGcqbfYKXMe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TytSsVCmHCWZQumergQUMe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wqvXT6QJSLZ5rWh2W2aRMe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mZNps42t7NxBVqaybQRWMe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Bsm6PBfrxNjHHxYJxkWzLe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HBZLPSThxLsq5kZ5ciiwLe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/3FfMcChFk4Y4S6PhJt8DMe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VWA28P89ve8LAxKSreJjLe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UzBHHnUbDUEfvrXAvbZSLe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zUv4UPaBxXUGeGL4yZrjLe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/spNXcwVd5YduhrQJj3CcLe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LDtwvUgNhNfkRNdteQdQLe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ANLzac3ovdNhyJ8WBbFLLe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Qu2YWqxX4VqFmELgnZnGLe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/eyrSBvnPcSM3uaGFCtC2Le-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2vAGRgfmvPTWAqXTXWteKe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WBt4vaEjdfswQ5ei74FaJe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/em5j9GVmBpHWPSodBG5YJe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vjg9VqrxyT7QDDqpsitxHe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/k6eodL2jQ33Ut6rw99MpHe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WTFtZgzDeuaYructXEDLHe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VopNPsDBjk7MN4rrMsoPHe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JG6VtJp5aRMMycJ78qjCHe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/kx7nB2iEiLtpGJMgc2yRGe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JZfnTdFP844fPdavcNUzFe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ctHJxBSrJZ7oejctGXFKFe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6GwbhKFYoFyx3ieTe5kAFe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9pzsFpCuQHnyxsRMf4XWEe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/nJBJwhyiV6HbnUL3bDYsDe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/EmzZhbab7veYg9wJ54YDDe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/gJ6GV4AiDiEvQnrgLmozCe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UhLK7FNVzvFYD9Lswo9WCe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/jJsUBYAArb8DKjgBuZF7Ce-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/49xeJwra8KFWYwFdJCkLBe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/XpDjzuRGAwHxDHUVnhmuAe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vandMXfwqqofuFss7w2bAe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LmW53Xd8XJTWLCnk3yZ8Ae-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vLWQ8Qh5komxvWkqNCQz6e-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9H2nfVUETJvcvFkaTVkD6e-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ZgEZa4Gxx34jXYKv9uq33e-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/C8hWusDC3tvUaUQsGJYCxd-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/m8fbv2UXCCNxr3g6h6WVtd-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><h2 class="article-body__section" id="section-thermals"><span>Thermals</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="Bsm6PBfrxNjHHxYJxkWzLe" name="IMG_8778" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/Bsm6PBfrxNjHHxYJxkWzLe-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: Future)</span></figcaption></figure><p>The going theory is you'll set up your fans to have the four in the lowest mounting points as intake, and the four in the highest as exhaust. That makes the most sense in this chimney-style design, but it does mean the most visible fans display their bad side (the side with the hub supports and stickers). </p><p>Reverse fans would be a good idea across the four lower intake fan positions in the HS 360. I've stuck with Havn's own fans for my own test builds, the H12. They look decent for a lack of any garish white stickers and matching tone, but I'd prefer a cleaner look if possible. Especially on the VGPU model, wherein those fans are tilted more into line of sight. Just feels like Havn is missing a trick here by not selling its own reverse option.</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="37M2jxJyGE3Bfu8QumWtQe" name="IMG_8805" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/37M2jxJyGE3Bfu8QumWtQe-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: Future)</span></figcaption></figure><p>Airflow is pretty straightforward for the standard HS 360: hot air go up. It's a little more complicated on the VGPU model. </p><p>The new magnetic airflow divider and fixed divider on the fan mount essentially isolate the HS 360 VGPU into two zones: a cool zone and a hot zone. </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="2vAGRgfmvPTWAqXTXWteKe" name="IMG_8838" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/2vAGRgfmvPTWAqXTXWteKe-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: Future)</span></figcaption></figure><p>The hot zone is anything above and around the side and rear of the graphics card; the cool zone is anything in front of and below the graphics card. Havn says this has two key benefits: one being the hot air can no longer leave the graphics card and be pulled back again by the intake fans on the front, and the other is the cool air from the lower fans cannot fly right past the graphics card's intake fans. Both should, in theory, reduce GPU temps by some margin.</p><p>Havn reports a reduction of around 1.4–1.8 °C in its own tests. My tests showed roughly a 1.4 °C reduction with the glass dividers compared to without. That's pretty bang-on, but nonetheless not enough to convince me to keep 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="YjaAMg8rz8CBm5YTDTBMNe" name="IMG_8834" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/YjaAMg8rz8CBm5YTDTBMNe-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: Future)</span></figcaption></figure><p>I think the dividers clutter the case somewhat. Moreover, while Havn includes some colour-matching anti-vibration pads you can attach to the glass to rest it on top of the card and prevent the divider from sagging, the tubes from the liquid cooler can also lean on the glass, pushing it askew. I guess once again, it's just not for me.</p><p>As for CPU temps, the glass dividers didn't seem to make any difference whatsoever in my testing.</p><h2 class="article-body__section" id="section-value"><span>Value</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="VopNPsDBjk7MN4rrMsoPHe" name="IMG_8636" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/VopNPsDBjk7MN4rrMsoPHe-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: Future)</span></figcaption></figure><p>The value proposition of the HS 360 is very different depending on whether you pick the standard or VGPU models. </p><p>The standard HS 360 costs $200. That's cheaper than the standard HS 420, which is currently at <a href="https://havn.global/products/hs-420" target="_blank">$250</a>, but it wasn't always. The HS 420 has seen a couple of price increases in the US since its release in late 2024. It started out at $199, which was the price I reviewed it at. It later increased to $230 around April, 2025, and again to $250 around March, 2026.</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="WBt4vaEjdfswQ5ei74FaJe" name="IMG_8736" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/WBt4vaEjdfswQ5ei74FaJe-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: Future)</span></figcaption></figure><p>The standard option has a lot going for it. It's one of the best-looking cases in the biz, and it feels every bit as premium as it looks. Compare the HS 360 to a lot of other would-be premium cases at similar price points, such as the <a href="https://www.pcgamer.com/hardware/pc-cases/cooler-master-haf-ii-500-review/" target="_blank">Cooler Master HAF II 500</a>, and the HS 360 is in a league of its own. But there is a price to pay somewhere; the quality of the HS 360 is countered by the complete lack of fans. That's something the Cooler Master has in swathes.</p><p>At least you're free to choose your fans here. You could cheap out on a couple packs of Arctic P12 Pro—$40 would get you either 10 standard fans or six RGB fans—or you could spend over $100 on a three packs of Havn's <a href="https://havn.global/products/havn-h12-pc-case-fan" target="_blank">H12</a> to fill out the case entirely. When you start to consider $300 for the standard option, Cooler Master's HAF II 500 doesn't look so bad at <a href="https://www.amazon.com/dp/B0H1P9L7QT" target="_blank">$200</a>. Nor does the excellent <a href="https://www.pcgamer.com/hardware/pc-cases/corsair-air-5400-review/" target="_blank">Corsair Air 5400</a> with three fans for <a href="https://www.corsair.com/us/en/p/pc-cases/cc-9011318-ww/air-5400-rs-r-argb-triple-chamber-mid-tower-pc-case-cc-9011318-ww" target="_blank">$230</a>. </p><p>The HS 360 is undoubtedly a premium option, but one I think you can argue for pretty easily. It really is fantastic in most ways, with some important quality of life upgrades, and it looks absolutely stunning.</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="wqvXT6QJSLZ5rWh2W2aRMe" name="IMG_8818" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/wqvXT6QJSLZ5rWh2W2aRMe-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: Future)</span></figcaption></figure><p>I struggle more with the VGPU option. Being as objective as one can be with a predisposed dislike of vertical mounting, $280 just feels like a lot to ask with no fans included in the box. It is cheaper than the HS 420 VGPU at <a href="https://havn.global/products/hs-420-vgpu" target="_blank">$330</a>, but here's the asterisk. The HS 420 VGPU came out at $269 in the US. So, the HS 360 looks like a decent saving given today's price tags, but in the broader context, it doesn't feel quite so competitive.</p><p>Prices are much more consistent in the UK. The HS 360 is £170, which is a saving on the <a href="https://www.overclockers.co.uk/havn-hs-420-premium-mid-tower-case-white/CAS-HVN-02514.html" target="_blank">£200</a> asked for the HS 420 since its release; and the HS 360 VGPU is £240, comfortably under the HS 420 VGPU at <a href="https://www.overclockers.co.uk/havn-hs-420-vgpu-premium-mid-tower-case-white/CAS-HVN-02516.html" target="_blank">£270</a>.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/pc-cases/havn-hs-360-review/</link>
                                                                            <description>
                            <![CDATA[ Stunning simplicity. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">cVgNbjCJnmFfBj6byGHrBM</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Qia3WPMt5pGp3q9FtwCife-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 29 Oct 2026 15:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[PC Cases]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&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/Qia3WPMt5pGp3q9FtwCife-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Havn HS 360 PC case in black and white on a desk.]]></media:description>                                                            <media:text><![CDATA[The Havn HS 360 PC case in black and white on a desk.]]></media:text>
                                <media:title type="plain"><![CDATA[The Havn HS 360 PC case in black and white on a desk.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Qia3WPMt5pGp3q9FtwCife-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The Havn HS 360 is a familiar sight. More or less the same design as the company's first case, the HS 420, it's just a touch smaller. That's no bad thing; the <a href="https://www.pcgamer.com/hardware/pc-cases/havn-hs-420-vgpu-pc-case-review/" target="_blank">HS 420 earned a 90% score</a> from me due to its ability to hide most of the ugliness that comes with the usual pile of cables and connectors behind its retro futurist style facade. I feel just as positively about this slightly shrunken version too.</p><p>The HS 360 is available in two versions, with or without vertical GPU mounting; and two colours, black or white. I've here two cases for review, covering all the options, and I've decided to put them to the test with rival builds. Namely to get a feel for the process of building with the different GPU mounting solutions, but also satiate my longstanding desire to build yin and yang gaming PCs. Dark and light. AMD and Nvidia.</p><p>I had a really good time with the HS 360. Both times. It has a few limitations to be aware of, especially regarding fan size, but select the right parts and a build comes together very easily. Both of my builds have come out looking stunning, and while I'd like to take all the credit, the HS 360 made very light work of cable management and overall aesthetics.</p><p>I definitely have a favourite from my two PCs, and the reasons why are down to the HS 360. So let's talk about the case in greater detail.</p><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p>✅<strong> Your PC has pride of place on your desk:</strong> The HS 360 looks fantastic and importantly isn't as huge as the HS 420.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Don&#39;t buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>❌ You can't spare more of your budget for fans: </strong>There are no fans included with the HS 360, which makes its high price tag even higher for a complete build.</p></div></div></div></div><h2 class="article-body__section" id="section-features"><span>Features</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="euieaCMCYYURWgpTCeupQe" name="IMG_8876" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/euieaCMCYYURWgpTCeupQe-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: Future)</span></figcaption></figure><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Havn HS 360</strong></p></td><td  ><p><strong>Havn HS 420</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions (mm)</strong></p></td><td  ><p>491 x 242 x 521</p></td><td  ><p>541 x 259.5 x 547</p></td></tr><tr><td class="firstcol " ><p><strong>Motherboard support</strong></p></td><td  ><p>ATX / BTF ATX / M-ATX / Mini-ITX</p></td><td  ><p>ATX / M-ATX / Mini-ITX</p></td></tr><tr><td class="firstcol " ><p><strong>Radiator support</strong></p></td><td  ><p>TOP: Up to 360 mm | RIGHT: Up to 360 mm (up to 58 mm thick)</p></td><td  ><p>TOP: Up to 420 mm | RIGHT: up to 420 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Fan support</strong></p></td><td  ><p>TOP: 3x 120 mm | RIGHT: 3x 120 mm | BOTTOM: 3x 120 mm | REAR: 2x 120 mm (max 30 mm thick)</p></td><td  ><p>TOP: 3x 120/140 mm | RIGHT: 3x 120/140 mm |  BOTTOM: 3x 120/140 mm | REAR: 2x 120/140 mm (max 30 mm thick)</p></td></tr><tr><td class="firstcol " ><p><strong>Storage bays</strong></p></td><td  ><p>2 x 3.5-inch / 4 x 2.5-inch (2x storage bays, one can move behind motherboard)</p></td><td  ><p>5 x 3.5-inch, 10x 2.5-inch</p></td></tr><tr><td class="firstcol " ><p><strong>Front I/O</strong></p></td><td  ><p>2x USB 3.2 Type-A, 1x USB 3.2 Gen 2 Type-C, 3.5 mm jack</p></td><td  ><p>2x USB 3.2 Type-A, 1x USB 3.2 Gen 2 Type-C, 3.5 mm jack</p></td></tr><tr><td class="firstcol " ><p><strong>Max. GPU length (mm)</strong></p></td><td  ><p>430</p></td><td  ><p>470</p></td></tr><tr><td class="firstcol " ><p><strong>Max. PSU length (mm)</strong></p></td><td  ><p>230</p></td><td  ><p>220</p></td></tr><tr><td class="firstcol " ><p><strong>Price (US)</strong></p></td><td  ><p>$200/$280 (VGPU)</p></td><td  ><p><a href="https://havn.global/products/hs-420"><u>$250</u></a>/<a href="https://havn.global/products/hs-420-vgpu"><u>$330</u></a> (VGPU)</p></td></tr><tr><td class="firstcol " ><p><strong>Price (UK)</strong></p></td><td  ><p>£170/£240 (VGPU)</p></td><td  ><p><a href="https://www.overclockers.co.uk/havn-hs-420-premium-mid-tower-case-white/CAS-HVN-02514.html"><u>£200</u></a>/<a href="https://www.overclockers.co.uk/havn-hs-420-vgpu-premium-mid-tower-case-white/CAS-HVN-02516.html"><u>£270</u></a> (VGPU)</p></td></tr></tbody></table></div><p>The HS 360 introduces some key design changes over the HS 420. Common across both standard and VGPU models are some quality of life improvements: support for Back Connect motherboards, a tighter bend on the panoramic glass panel, and larger cutouts for jamming a screwdriver through to the screws on the PCIe expansion slots.</p><p>Havn seems to have paid close attention to some of the feedback from builders with the HS 360, and it's now possible to install or replace two rear fans without having to remove components that may be already installed inside the case; a small but constant frustration with the HS 420.</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="5g4biMJDxygTGcqbfYKXMe" name="IMG_8742" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/5g4biMJDxygTGcqbfYKXMe-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: Future)</span></figcaption></figure><p>The VGPU model also receives a new magnetic 'Airflow Divider' intended to keep the hot air produced by the graphics card from recirculating around it, which can increase temps. This works in conjunction with another glass divider mounted to the tilted fan bracket included with the VGPU model. As you'll see, there's a lot more going on with the VGPU model, and as such, it costs $80 more.</p><p>The standard model is a more simple thing. That's how I like it. It includes a three-fan bracket at the bottom, though unlike the VGPU model, these are flat and pointed straight at the graphics card. It also has an integrated GPU support that neatly sits atop of the lower cable routing points. This is fairly adjustable and can be removed entirely if you prefer.  </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="C8hWusDC3tvUaUQsGJYCxd" name="IMG_8719" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/C8hWusDC3tvUaUQsGJYCxd-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: Future)</span></figcaption></figure><p>There are no fans included on the HS 360. You're required to source your own at added expense, but be warned, unlike the HS 420, which supports a mix of fan sizes, the HS 360 only supports those 120 mm in size. Even in the top, it's limited to a maximum radiator size of 360 mm. It's easy to see why once I'd built a PC inside here: even with such a radiator installed, there's only a small amount of clearance between the motherboard on one side and glass on the other. </p><p>At least you don't need to worry about a fan controller, as one of those is included in the case. It's neatly stored rearwards in the back of the chassis. </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="vandMXfwqqofuFss7w2bAe" name="IMG_8695" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/vandMXfwqqofuFss7w2bAe-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: Future)</span></figcaption></figure><p>Dust filters, you've got two of 'em. One in the bottom for those three intake fans, and one in the lower position in the rear. Though technically the rear and top panels also have non-removeable filters to keep dust from gathering elsewhere.</p><p>The storage bays are surprisingly brilliant on the HS 360, and it's a shame I don't really have any use for them. There are two included. Each holds two 2.5-inch SSDs or one 3.5-inch HDD. A series of screws lets you break them down to the basic cage for a hard drive and back up to the neat, space-saving unit you see on the back. If you prefer, ditch both and mount three more 120 mm fans in their place. You could even fit an AIO here, providing it doesn't exceed a thickness of 58 mm.</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="em5j9GVmBpHWPSodBG5YJe" name="IMG_8703" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/em5j9GVmBpHWPSodBG5YJe-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: Future)</span></figcaption></figure><p>Havn also notes limited support for an AIO at the bottom of the case, but it limits GPU slots and it's a terrible idea for pump longevity and noise. Just don't bother.</p><p>Other bits included in the box are some zip-ties and hook-and-loop fasteners (you'll be needing these), a couple of spare sliders for the cable grommets, a VESA mounting bracket (for tiny screens but also may be useful for reservoirs or 3D printed add-ons, etc.), and a few bags of labelled screws.  </p><h2 class="article-body__section" id="section-installation"><span>Installation</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="EmzZhbab7veYg9wJ54YDDe" name="IMG_8789" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/EmzZhbab7veYg9wJ54YDDe-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: Future)</span></figcaption></figure><p>The HS 360 is smaller in every way to the HS 420—14.9% according to Havn—though for its slightly smaller size, it feels just as easy to build into.</p><p>The fans go in first, and without issue thanks to the removable brackets used throughout the HS 360. I was left wondering where best to run the cables at times, and turns out, I would later realise I got some of these a little wrong. Namely the ones in the bottom of the case, which have a slightly awkward run around the dust filter, but also the top rear fan. You will also need a couple of fan extension cables to reach all the way around to the hub or even the closest headers on the motherboard in my experience.</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="JnLiWenVCrusGG5wqEzAPe" name="IMG_8725" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/JnLiWenVCrusGG5wqEzAPe-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: Future)</span></figcaption></figure><p>A power supply goes in easy; the HS 360 supports those up to 230 mm in length. You will need a traditional PSU here, as the sideways mounting position and stubby shroud on the HS 360 do nix any hopes of fitting a Corsair Shift unit. That applies to like a dozen people but unfortunately I am one of that dozen, as 60% or so of the PSUs I own are Shift models. I made do. </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="UzBHHnUbDUEfvrXAvbZSLe" name="IMG_8758" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/UzBHHnUbDUEfvrXAvbZSLe-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: Future)</span></figcaption></figure><p>Cable management is simple and straightforward. Everything locks in place using the hook-and-loop fasteners, of which extra are included, and a good amount of the zip-ties, too. There are spots for extra fasteners but I just tie the cables down to the generous number of tie-down spots. Looks smart, doesn't take much effort, job's a good'un.</p><p>Now one reason for doing two builds here was to try out the VGPU bracket. I admit, I don't generally love VGPU mounting. It's usually more hassle than it's worth. But I've given it a go here on one of the machines, and, despite some extra tinkering required to remove the VGPU bracket to install the motherboard and then reinstall it again, it did go fairly well. </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="zUv4UPaBxXUGeGL4yZrjLe" name="IMG_8862" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/zUv4UPaBxXUGeGL4yZrjLe-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: Future)</span></figcaption></figure><p>From my time with it, I still don't care much for VGPU. Sorry. It just clutters the build, leaves the GPU power cables hanging awkwardly in front of the RAM, and means you're having to think more about airflow with all those dividers. To me, it's just not worth the extra $80, and the simple, standard option for less cash is wholly more appealing.</p><h2 class="article-body__section" id="section-aesthetics"><span>Aesthetics</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="euieaCMCYYURWgpTCeupQe" name="IMG_8876" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/euieaCMCYYURWgpTCeupQe-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: Future)</span></figcaption></figure><p>I shouldn't need to be too convincing here, as the HS 360 is one of the best-looking cases I've tested all year. </p><p>I'm a big fan of the rear panel. Its black accents should help with colour-matching components <em>inside </em>the case, too. You don't need expensive all-white parts here, even though I've (mostly) opted for it in the light build. Some black components should look just as excellent. Case in point, I ran out of white fans and used a couple of black fans in the rear and I dare say it looks pretty decent. You can be the judge of that, I suppose.</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="HBZLPSThxLsq5kZ5ciiwLe" name="IMG_8654" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/HBZLPSThxLsq5kZ5ciiwLe-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: Future)</span></figcaption></figure><p>The glass panel has a slightly tighter curve than the HS 420, and is altogether stunning. The design of this case does a wonderful job of hiding the uglier parts of a PC—the cables, connectors, and clutter—out of sight.</p><h2 class="article-body__section" id="section-gallery"><span>Gallery</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/FWaY6Cwve2U4F6vYTPHPPe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/T266qDE75ZhwwuP2JJhPie-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/RzEXRWwPfTcWDJeTauPjmd-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Qia3WPMt5pGp3q9FtwCife-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HtJt4KhafQybfpm94FxAae-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/RwfBdnyvYTGTTvoWodHNRe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ptUmUr8575daEqCjY3SyQe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/37M2jxJyGE3Bfu8QumWtQe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/euieaCMCYYURWgpTCeupQe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/syBntHvVrdadSy5M9fwGQe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ix3PCXFdhVxrSunD2ZEDQe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JnLiWenVCrusGG5wqEzAPe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YeDVmfemHnvvbcDAX38APe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YjaAMg8rz8CBm5YTDTBMNe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/BV4t2B8WTMvPhYyfumfdMe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5g4biMJDxygTGcqbfYKXMe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TytSsVCmHCWZQumergQUMe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wqvXT6QJSLZ5rWh2W2aRMe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mZNps42t7NxBVqaybQRWMe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Bsm6PBfrxNjHHxYJxkWzLe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HBZLPSThxLsq5kZ5ciiwLe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/3FfMcChFk4Y4S6PhJt8DMe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VWA28P89ve8LAxKSreJjLe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UzBHHnUbDUEfvrXAvbZSLe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zUv4UPaBxXUGeGL4yZrjLe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/spNXcwVd5YduhrQJj3CcLe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LDtwvUgNhNfkRNdteQdQLe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ANLzac3ovdNhyJ8WBbFLLe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Qu2YWqxX4VqFmELgnZnGLe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/eyrSBvnPcSM3uaGFCtC2Le-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2vAGRgfmvPTWAqXTXWteKe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WBt4vaEjdfswQ5ei74FaJe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/em5j9GVmBpHWPSodBG5YJe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vjg9VqrxyT7QDDqpsitxHe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/k6eodL2jQ33Ut6rw99MpHe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WTFtZgzDeuaYructXEDLHe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VopNPsDBjk7MN4rrMsoPHe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JG6VtJp5aRMMycJ78qjCHe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/kx7nB2iEiLtpGJMgc2yRGe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JZfnTdFP844fPdavcNUzFe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ctHJxBSrJZ7oejctGXFKFe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6GwbhKFYoFyx3ieTe5kAFe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9pzsFpCuQHnyxsRMf4XWEe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/nJBJwhyiV6HbnUL3bDYsDe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/EmzZhbab7veYg9wJ54YDDe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/gJ6GV4AiDiEvQnrgLmozCe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UhLK7FNVzvFYD9Lswo9WCe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/jJsUBYAArb8DKjgBuZF7Ce-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/49xeJwra8KFWYwFdJCkLBe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/XpDjzuRGAwHxDHUVnhmuAe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vandMXfwqqofuFss7w2bAe-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LmW53Xd8XJTWLCnk3yZ8Ae-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vLWQ8Qh5komxvWkqNCQz6e-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9H2nfVUETJvcvFkaTVkD6e-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ZgEZa4Gxx34jXYKv9uq33e-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/C8hWusDC3tvUaUQsGJYCxd-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/m8fbv2UXCCNxr3g6h6WVtd-1920-80.jpg" alt="The Havn HS 360 PC case in black and white on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><h2 class="article-body__section" id="section-thermals"><span>Thermals</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="Bsm6PBfrxNjHHxYJxkWzLe" name="IMG_8778" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/Bsm6PBfrxNjHHxYJxkWzLe-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: Future)</span></figcaption></figure><p>The going theory is you'll set up your fans to have the four in the lowest mounting points as intake, and the four in the highest as exhaust. That makes the most sense in this chimney-style design, but it does mean the most visible fans display their bad side (the side with the hub supports and stickers). </p><p>Reverse fans would be a good idea across the four lower intake fan positions in the HS 360. I've stuck with Havn's own fans for my own test builds, the H12. They look decent for a lack of any garish white stickers and matching tone, but I'd prefer a cleaner look if possible. Especially on the VGPU model, wherein those fans are tilted more into line of sight. Just feels like Havn is missing a trick here by not selling its own reverse option.</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="37M2jxJyGE3Bfu8QumWtQe" name="IMG_8805" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/37M2jxJyGE3Bfu8QumWtQe-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: Future)</span></figcaption></figure><p>Airflow is pretty straightforward for the standard HS 360: hot air go up. It's a little more complicated on the VGPU model. </p><p>The new magnetic airflow divider and fixed divider on the fan mount essentially isolate the HS 360 VGPU into two zones: a cool zone and a hot zone. </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="2vAGRgfmvPTWAqXTXWteKe" name="IMG_8838" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/2vAGRgfmvPTWAqXTXWteKe-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: Future)</span></figcaption></figure><p>The hot zone is anything above and around the side and rear of the graphics card; the cool zone is anything in front of and below the graphics card. Havn says this has two key benefits: one being the hot air can no longer leave the graphics card and be pulled back again by the intake fans on the front, and the other is the cool air from the lower fans cannot fly right past the graphics card's intake fans. Both should, in theory, reduce GPU temps by some margin.</p><p>Havn reports a reduction of around 1.4–1.8 °C in its own tests. My tests showed roughly a 1.4 °C reduction with the glass dividers compared to without. That's pretty bang-on, but nonetheless not enough to convince me to keep 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="YjaAMg8rz8CBm5YTDTBMNe" name="IMG_8834" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/YjaAMg8rz8CBm5YTDTBMNe-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: Future)</span></figcaption></figure><p>I think the dividers clutter the case somewhat. Moreover, while Havn includes some colour-matching anti-vibration pads you can attach to the glass to rest it on top of the card and prevent the divider from sagging, the tubes from the liquid cooler can also lean on the glass, pushing it askew. I guess once again, it's just not for me.</p><p>As for CPU temps, the glass dividers didn't seem to make any difference whatsoever in my testing.</p><h2 class="article-body__section" id="section-value"><span>Value</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="VopNPsDBjk7MN4rrMsoPHe" name="IMG_8636" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/VopNPsDBjk7MN4rrMsoPHe-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: Future)</span></figcaption></figure><p>The value proposition of the HS 360 is very different depending on whether you pick the standard or VGPU models. </p><p>The standard HS 360 costs $200. That's cheaper than the standard HS 420, which is currently at <a href="https://havn.global/products/hs-420" target="_blank">$250</a>, but it wasn't always. The HS 420 has seen a couple of price increases in the US since its release in late 2024. It started out at $199, which was the price I reviewed it at. It later increased to $230 around April, 2025, and again to $250 around March, 2026.</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="WBt4vaEjdfswQ5ei74FaJe" name="IMG_8736" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/WBt4vaEjdfswQ5ei74FaJe-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: Future)</span></figcaption></figure><p>The standard option has a lot going for it. It's one of the best-looking cases in the biz, and it feels every bit as premium as it looks. Compare the HS 360 to a lot of other would-be premium cases at similar price points, such as the <a href="https://www.pcgamer.com/hardware/pc-cases/cooler-master-haf-ii-500-review/" target="_blank">Cooler Master HAF II 500</a>, and the HS 360 is in a league of its own. But there is a price to pay somewhere; the quality of the HS 360 is countered by the complete lack of fans. That's something the Cooler Master has in swathes.</p><p>At least you're free to choose your fans here. You could cheap out on a couple packs of Arctic P12 Pro—$40 would get you either 10 standard fans or six RGB fans—or you could spend over $100 on a three packs of Havn's <a href="https://havn.global/products/havn-h12-pc-case-fan" target="_blank">H12</a> to fill out the case entirely. When you start to consider $300 for the standard option, Cooler Master's HAF II 500 doesn't look so bad at <a href="https://www.amazon.com/dp/B0H1P9L7QT" target="_blank">$200</a>. Nor does the excellent <a href="https://www.pcgamer.com/hardware/pc-cases/corsair-air-5400-review/" target="_blank">Corsair Air 5400</a> with three fans for <a href="https://www.corsair.com/us/en/p/pc-cases/cc-9011318-ww/air-5400-rs-r-argb-triple-chamber-mid-tower-pc-case-cc-9011318-ww" target="_blank">$230</a>. </p><p>The HS 360 is undoubtedly a premium option, but one I think you can argue for pretty easily. It really is fantastic in most ways, with some important quality of life upgrades, and it looks absolutely stunning.</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="wqvXT6QJSLZ5rWh2W2aRMe" name="IMG_8818" alt="The Havn HS 360 PC case in black and white on a desk." src="https://cdn.mos.cms.futurecdn.net/wqvXT6QJSLZ5rWh2W2aRMe-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: Future)</span></figcaption></figure><p>I struggle more with the VGPU option. Being as objective as one can be with a predisposed dislike of vertical mounting, $280 just feels like a lot to ask with no fans included in the box. It is cheaper than the HS 420 VGPU at <a href="https://havn.global/products/hs-420-vgpu" target="_blank">$330</a>, but here's the asterisk. The HS 420 VGPU came out at $269 in the US. So, the HS 360 looks like a decent saving given today's price tags, but in the broader context, it doesn't feel quite so competitive.</p><p>Prices are much more consistent in the UK. The HS 360 is £170, which is a saving on the <a href="https://www.overclockers.co.uk/havn-hs-420-premium-mid-tower-case-white/CAS-HVN-02514.html" target="_blank">£200</a> asked for the HS 420 since its release; and the HS 360 VGPU is £240, comfortably under the HS 420 VGPU at <a href="https://www.overclockers.co.uk/havn-hs-420-vgpu-premium-mid-tower-case-white/CAS-HVN-02516.html" target="_blank">£270</a>.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ $60 million AI rack cluster listed on eBay, with 1.4 petabytes of memory and almost 10,000 Nvidia AI GPUs ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Who said those big AI companies have to get all the gear? If you had a cool $60 million hanging around yesterday, you could have picked up an AI supercomputer for yourself, complete with thousands of Nvidia A100 GPUs and AMD EPYC CPUs split over 300 racks. And if you went cheap, you could even get shipping for free. </p><p>Core 4 Solutions, a company that sells IT parts to companies like Amazon, Lucasfilm, Microsoft, Meta and even the US Department of Justice, <a href="https://www.ebay.com/itm/880041409723" target="_blank">listed the 300-rack cluster</a> on its page this week (via <a href="https://www.tomshardware.com/desktops/servers/it-vendor-lists-massive-usd60-million-ai-cluster-on-ebay-300x-racks-of-decommissioned-gpus-includes-9-600-nvidia-a100-gpus-and-4-200-amd-epyc-cpus-plus-free-shipping" target="_blank">Tom's Hardware</a>).</p><p>That listing says each rack includes four compute nodes, complete with eight Nvidia A100 40 GB GPUs, eight Nvidia Connect network interface cards, and two AMD EPYC 64-core CPUs. Each rack also comes with 1 TB of DDR4 memory and three 1U management nodes, complete with two EPYC CPUs. As pointed out by Tom's Hardware, this equates to 9,600 GPUs and 4200 CPUs. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>The Nvidia A100 GPU is a now-discontinued enterprise-level GPU built on the Ampere architecture, and it's specifically designed for AI use cases and data analytics. You are getting 6912 CUDA cores per GPU (A little more than the <a href="https://www.pcgamer.com/hardware/graphics-cards/nvidia-rtx-5070-founders-edition-review/" target="_blank">RTX 5070</a> has), though it's not something one would use for gaming. </p><p>The $59.7 million listing ended today, October 28, but it's not clear if the 300 racks were actually sold. If you happen to live in the United States, you could even get the racks sent free shipping if you chose the FedEx Ground or FedEx Home Delivery options. What a bargain. </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="zXmMtEa34q8c6PDMf8LjrC" name="C - 2026-10-29T131736.568" alt="A listing of a $59.7 million rack cluster on ebay from Core 4 Solutions" src="https://cdn.mos.cms.futurecdn.net/zXmMtEa34q8c6PDMf8LjrC-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: Core 4 Solutions on eBay)</span></figcaption></figure><p>Core 4 Solutions is selling some servers on <a href="https://www.core4solutions.com/" target="_blank">its website</a>, but the <a href="https://www.core4solutions.com/products/c880-m4-v3-8s-2tb-32gb-dimms" target="_blank">most expensive of these only fetches $87K</a>. The 300 racks on eBay are almost 700 times more expensive. </p><p>Impressively, the $59.7 million rack cluster has a whopping 1.4 petabytes of memory, which is enough for just under 90,000 relatively impressive gaming rigs (assuming <a href="https://www.pcgamer.com/hardware/memory/my-testing-shows-that-16-gb-of-system-memory-is-still-absolutely-fine-for-todays-pc-games-but-there-are-some-caveats-to-it-all/" target="_blank">16 GB is enough</a>). </p><p>So, if you're wondering why your RAM is so costly, you can thank AI servers (and AI companies, by extension) for sucking up all that sweet, sweet memory. It really puts into perspective just how much AI companies are spending on all their gear—<a href="https://www.pcgamer.com/software/ai/nvidia-and-amd-invest-billions-into-meta-as-companies-egg-each-other-on-to-bet-even-more-on-ai/" target="_blank">and each other</a>.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/ai/usd60-million-ai-rack-cluster-listed-on-ebay-with-1-4-petabytes-of-memory-and-almost-10-000-nvidia-ai-gpus/</link>
                                                                            <description>
                            <![CDATA[ And it even had free shipping. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">CeBYKF6AKZrjo2dPVyYFTk</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/jcGVMaYBM7XvknNbUmJcxn-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 29 Oct 2026 14:01:48 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[Software]]></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/jcGVMaYBM7XvknNbUmJcxn-1920-80.jpg">
                                                            <media:credit><![CDATA[Nvidia]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia data center]]></media:description>                                                            <media:text><![CDATA[Nvidia data center]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia data center]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/jcGVMaYBM7XvknNbUmJcxn-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Who said those big AI companies have to get all the gear? If you had a cool $60 million hanging around yesterday, you could have picked up an AI supercomputer for yourself, complete with thousands of Nvidia A100 GPUs and AMD EPYC CPUs split over 300 racks. And if you went cheap, you could even get shipping for free. </p><p>Core 4 Solutions, a company that sells IT parts to companies like Amazon, Lucasfilm, Microsoft, Meta and even the US Department of Justice, <a href="https://www.ebay.com/itm/880041409723" target="_blank">listed the 300-rack cluster</a> on its page this week (via <a href="https://www.tomshardware.com/desktops/servers/it-vendor-lists-massive-usd60-million-ai-cluster-on-ebay-300x-racks-of-decommissioned-gpus-includes-9-600-nvidia-a100-gpus-and-4-200-amd-epyc-cpus-plus-free-shipping" target="_blank">Tom's Hardware</a>).</p><p>That listing says each rack includes four compute nodes, complete with eight Nvidia A100 40 GB GPUs, eight Nvidia Connect network interface cards, and two AMD EPYC 64-core CPUs. Each rack also comes with 1 TB of DDR4 memory and three 1U management nodes, complete with two EPYC CPUs. As pointed out by Tom's Hardware, this equates to 9,600 GPUs and 4200 CPUs. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>The Nvidia A100 GPU is a now-discontinued enterprise-level GPU built on the Ampere architecture, and it's specifically designed for AI use cases and data analytics. You are getting 6912 CUDA cores per GPU (A little more than the <a href="https://www.pcgamer.com/hardware/graphics-cards/nvidia-rtx-5070-founders-edition-review/" target="_blank">RTX 5070</a> has), though it's not something one would use for gaming. </p><p>The $59.7 million listing ended today, October 28, but it's not clear if the 300 racks were actually sold. If you happen to live in the United States, you could even get the racks sent free shipping if you chose the FedEx Ground or FedEx Home Delivery options. What a bargain. </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="zXmMtEa34q8c6PDMf8LjrC" name="C - 2026-10-29T131736.568" alt="A listing of a $59.7 million rack cluster on ebay from Core 4 Solutions" src="https://cdn.mos.cms.futurecdn.net/zXmMtEa34q8c6PDMf8LjrC-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: Core 4 Solutions on eBay)</span></figcaption></figure><p>Core 4 Solutions is selling some servers on <a href="https://www.core4solutions.com/" target="_blank">its website</a>, but the <a href="https://www.core4solutions.com/products/c880-m4-v3-8s-2tb-32gb-dimms" target="_blank">most expensive of these only fetches $87K</a>. The 300 racks on eBay are almost 700 times more expensive. </p><p>Impressively, the $59.7 million rack cluster has a whopping 1.4 petabytes of memory, which is enough for just under 90,000 relatively impressive gaming rigs (assuming <a href="https://www.pcgamer.com/hardware/memory/my-testing-shows-that-16-gb-of-system-memory-is-still-absolutely-fine-for-todays-pc-games-but-there-are-some-caveats-to-it-all/" target="_blank">16 GB is enough</a>). </p><p>So, if you're wondering why your RAM is so costly, you can thank AI servers (and AI companies, by extension) for sucking up all that sweet, sweet memory. It really puts into perspective just how much AI companies are spending on all their gear—<a href="https://www.pcgamer.com/software/ai/nvidia-and-amd-invest-billions-into-meta-as-companies-egg-each-other-on-to-bet-even-more-on-ai/" target="_blank">and each other</a>.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Over $12 million worth of AI chips seized by Malaysian authorities after suspected smuggling syndicate tries to sneak servers through customs under false pretenses ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Malaysian customs have shared this week that $12.11 million worth of AI chips were discovered during an inspection. A total of 30 server units, each featuring cutting edge AI chips, were seized from Kuala Lumpur ​International Airport on October 15.</p><p>The servers originated from and were to be exported to two different, undisclosed Asian countries, <a href="https://www.reuters.com/world/china/ai-chips-worth-121-million-seized-malaysia-airport-customs-authority-says-2026-10-28/" target="_blank">according to Reuters</a>. This should have required a trade permit, though the airport's customs director Aspalila Ag Tuah explained this week, "The ‌servers ⁠were falsely declared as electronic components... and shipped through Malaysia to ensure there would be no restrictions imposed while being exported to the next destination."</p><p>A Malaysian firm facilitating the movement of the servers has been called upon to assist in the investigation, though local authorities suspect this goes beyond them. This latest smuggling attempt is thought to be connected to at least five other similar cases involving nearly $25 million worth of chips in total.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>The most recent of these cases saw <a href="https://www.reuters.com/world/asia-pacific/malaysia-customs-seizes-ai-chips-worth-13-mln-kuala-lumpur-airport-2026-06-26/" target="_blank">$13 million worth of chips seized by Malaysian customs back in June</a>—these were also falsely declared as "computer components." Aspalila said that all of these smuggling attempts are suspected to have been carried out by the same syndicate though, as the investigation is still ongoing, they did not share further information.</p><p>To briefly recap, the US has restricted the export of AI chips to a number of global destinations since at least the Biden administration. That's translated to pressure for Malaysia to stop banned AI chips potentially entering China <a href="https://www.pcgamer.com/hardware/us-pressures-malaysia-to-stop-banned-ai-chips-potentially-entering-china-by-monitoring-every-shipment-that-comes-to-malaysia-when-it-involves-nvidia-chips/" target="_blank">by monitoring 'every shipment that comes to Malaysia when it involves Nvidia chips</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:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yWtDBKKwdV5uF9DXTMZWrG" name="GettyImages-2148113350" alt="A processed photo of a data center server room, showing racks of computers lit by overhead lights, reflecting off the ground." src="https://cdn.mos.cms.futurecdn.net/yWtDBKKwdV5uF9DXTMZWrG-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: quantic69 via Getty Images)</span></figcaption></figure><p>Simply put, if certain chips can't be directly exported to China, then smugglers will take a more circuitous route with pit stops throughout Asia. For instance last year, Singaporean authorities arrested three men for <a href="https://www.pcgamer.com/hardware/graphics-cards/group-allegedly-trying-to-smuggle-nvidia-blackwell-chips-stare-down-bail-set-at-over-usd1-million/" target="_blank">a separate smuggling attempt</a>, and earlier this year <a href="https://www.pcgamer.com/hardware/taiwanese-authorities-detain-nvidia-employee-for-alleged-attempt-to-smuggle-ai-chips-into-china/" target="_blank">Taiwanese authorities detained an Nvidia employee</a> for another alleged smuggling attempt. The US is also concerned that China might have a top-spec chipmaking machine despite export restrictions, <a href="https://www.pcgamer.com/hardware/the-us-is-worried-china-could-have-a-top-spec-chipmaking-machine-despite-export-restrictions-but-the-machine-maker-asml-denies-it/" target="_blank">but the machine maker ASML denies it</a>.</p><p>With big tech still betting big on AI, <a href="https://www.pcgamer.com/software/ai/nvidia-and-amd-invest-billions-into-meta-as-companies-egg-each-other-on-to-bet-even-more-on-ai/" target="_blank">often to the tune of even more multi-billion dollar investments</a>, it's unsurprising the hardware is in demand worldwide. In fact, more than <a href="https://www.pcgamer.com/software/ai/its-so-much-easier-to-steal-this-than-to-rob-a-bank-usd100-000-000-worth-of-ai-data-center-freight-reportedly-stolen-since-june/" target="_blank">$100,000,000 worth of AI data centre freight has been reportedly stolen</a> within the US alone since June. So long as data centre demand remains high, criminal activity may be likely to follow.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/ai/over-usd12-million-worth-of-ai-chips-seized-by-malaysian-authorities-after-suspected-smuggling-syndicate-tries-to-sneak-servers-through-customs-under-false-pretenses/</link>
                                                                            <description>
                            <![CDATA[ AI continues to be big business, and the impetus behind big crime. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">2iwSyvi2SzQL7PYpBkkwKe</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/uYyxmMrQ7Kcv3mRXyY2jUT-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 29 Oct 2026 12:49:29 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[Software]]></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/uYyxmMrQ7Kcv3mRXyY2jUT-1920-80.jpg">
                                                            <media:credit><![CDATA[Andriy Onufriyenko via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Digital generated image of data server.]]></media:description>                                                            <media:text><![CDATA[Digital generated image of data server.]]></media:text>
                                <media:title type="plain"><![CDATA[Digital generated image of data server.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/uYyxmMrQ7Kcv3mRXyY2jUT-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Malaysian customs have shared this week that $12.11 million worth of AI chips were discovered during an inspection. A total of 30 server units, each featuring cutting edge AI chips, were seized from Kuala Lumpur ​International Airport on October 15.</p><p>The servers originated from and were to be exported to two different, undisclosed Asian countries, <a href="https://www.reuters.com/world/china/ai-chips-worth-121-million-seized-malaysia-airport-customs-authority-says-2026-10-28/" target="_blank">according to Reuters</a>. This should have required a trade permit, though the airport's customs director Aspalila Ag Tuah explained this week, "The ‌servers ⁠were falsely declared as electronic components... and shipped through Malaysia to ensure there would be no restrictions imposed while being exported to the next destination."</p><p>A Malaysian firm facilitating the movement of the servers has been called upon to assist in the investigation, though local authorities suspect this goes beyond them. This latest smuggling attempt is thought to be connected to at least five other similar cases involving nearly $25 million worth of chips in total.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>The most recent of these cases saw <a href="https://www.reuters.com/world/asia-pacific/malaysia-customs-seizes-ai-chips-worth-13-mln-kuala-lumpur-airport-2026-06-26/" target="_blank">$13 million worth of chips seized by Malaysian customs back in June</a>—these were also falsely declared as "computer components." Aspalila said that all of these smuggling attempts are suspected to have been carried out by the same syndicate though, as the investigation is still ongoing, they did not share further information.</p><p>To briefly recap, the US has restricted the export of AI chips to a number of global destinations since at least the Biden administration. That's translated to pressure for Malaysia to stop banned AI chips potentially entering China <a href="https://www.pcgamer.com/hardware/us-pressures-malaysia-to-stop-banned-ai-chips-potentially-entering-china-by-monitoring-every-shipment-that-comes-to-malaysia-when-it-involves-nvidia-chips/" target="_blank">by monitoring 'every shipment that comes to Malaysia when it involves Nvidia chips</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:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yWtDBKKwdV5uF9DXTMZWrG" name="GettyImages-2148113350" alt="A processed photo of a data center server room, showing racks of computers lit by overhead lights, reflecting off the ground." src="https://cdn.mos.cms.futurecdn.net/yWtDBKKwdV5uF9DXTMZWrG-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: quantic69 via Getty Images)</span></figcaption></figure><p>Simply put, if certain chips can't be directly exported to China, then smugglers will take a more circuitous route with pit stops throughout Asia. For instance last year, Singaporean authorities arrested three men for <a href="https://www.pcgamer.com/hardware/graphics-cards/group-allegedly-trying-to-smuggle-nvidia-blackwell-chips-stare-down-bail-set-at-over-usd1-million/" target="_blank">a separate smuggling attempt</a>, and earlier this year <a href="https://www.pcgamer.com/hardware/taiwanese-authorities-detain-nvidia-employee-for-alleged-attempt-to-smuggle-ai-chips-into-china/" target="_blank">Taiwanese authorities detained an Nvidia employee</a> for another alleged smuggling attempt. The US is also concerned that China might have a top-spec chipmaking machine despite export restrictions, <a href="https://www.pcgamer.com/hardware/the-us-is-worried-china-could-have-a-top-spec-chipmaking-machine-despite-export-restrictions-but-the-machine-maker-asml-denies-it/" target="_blank">but the machine maker ASML denies it</a>.</p><p>With big tech still betting big on AI, <a href="https://www.pcgamer.com/software/ai/nvidia-and-amd-invest-billions-into-meta-as-companies-egg-each-other-on-to-bet-even-more-on-ai/" target="_blank">often to the tune of even more multi-billion dollar investments</a>, it's unsurprising the hardware is in demand worldwide. In fact, more than <a href="https://www.pcgamer.com/software/ai/its-so-much-easier-to-steal-this-than-to-rob-a-bank-usd100-000-000-worth-of-ai-data-center-freight-reportedly-stolen-since-june/" target="_blank">$100,000,000 worth of AI data centre freight has been reportedly stolen</a> within the US alone since June. So long as data centre demand remains high, criminal activity may be likely to follow.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'It’s so much easier to steal this than to rob a bank': $100,000,000+ worth of AI data center freight reportedly stolen since June ]]></title>
                                                                                                <dc:content><![CDATA[ <p>AI data centers are springing up across the US at an unprecedented rate, and with them comes a number of problems. Aside from the <a href="https://www.pcgamer.com/software/ai/ny-governor-orders-a-pause-on-large-ai-data-center-construction-to-ensure-that-when-companies-succeed-because-of-new-york-new-yorkers-succeed-too/" target="_blank">noise, disruption, and environmental concerns</a>, the vast infrastructure projects also require the transport of millions of dollars worth of equipment—and opportunistic thieves are cashing in.</p><p><a href="https://www.nbcnews.com/tech/security/grand-theft-ai-highway-thieves-are-stealing-millions-data-center-gear-rcna603733" target="_blank">An NBC News report</a> details two audacious data center equipment heists, both involving literal examples of highway robbery. A shipment carrying $13 million worth of server equipment travelling on a section of interstate through the Mojave Desert had its security escort rammed by a separate vehicle, forcing it to stop. The trailer carrying the equipment was later found at a truck yard in California, minus its valuable load.</p><p>"The accident was not an accident," says Gerado Pachucha, an ex-member of the LA Country Sheriff's Department cargo criminal apprehension team.  "The bad guys wanted that load, so they intentionally took out the escorts."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>A second incident, also involving a collision with a security vehicle, led to the loss of another trailer carrying an estimated $10 million worth of server rack components. NBC reports that, according to industry leaders, consultants, and investigators it's spoken to regarding the heists, thieves are estimated to have stolen more than $100 million worth of data center freight since June of this year.</p><p>Keith Lewis, head of operations of a cargo theft tracking team at Verisk CargoNet, says "It’s like stealing pure gold bars."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yWtDBKKwdV5uF9DXTMZWrG" name="GettyImages-2148113350" alt="A processed photo of a data center server room, showing racks of computers lit by overhead lights, reflecting off the ground." src="https://cdn.mos.cms.futurecdn.net/yWtDBKKwdV5uF9DXTMZWrG-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: quantic69 via Getty Images)</span></figcaption></figure><p>"We’ve seen some of these thefts go up into 30-plus million dollars for one particular shipment. It’s so much easier to steal this than to rob a bank."</p><p>Aside from the server racks themselves, data centers also require a vast amount of copper wires, fiber optic cables, RAM modules, storage drives, and various other high-value components that need to be transported to their destination by conventional means. </p><p>"Things that are precursors for the AI data centers: copper, server racks and RAM. Those are the things that are the precursors to build one, so that’s what we’re seeing the big increase in," says Lewis. "It’s the dollar value that’s getting the attention because the product they’re stealing costs so much more."</p><p>And despite the addition of security escorts, it seems some criminals are willing to go to increasingly sophisticated lengths to obtain such high-value items.</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="kNCDGE87fMuTymbxurAHYN" name="GettyImages-1269232851.jpg" alt="A stock photo of a hacker with computers in dark room. The devices are displaying computer code on the screens." src="https://cdn.mos.cms.futurecdn.net/kNCDGE87fMuTymbxurAHYN-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: boonchai wedmakawand via Getty Images)</span></figcaption></figure><p>The FBI issued a warning in April of this year regarding "<a href="https://www.ic3.gov/PSA/2026/PSA260430" target="_blank">cyber-enabled strategic cargo theft</a>," in which an online heist method is detailed. This involves spoofing broker's email addresses to gain access to cargo systems and bidding on loads, which are then said to be "cross-docked" or "transloaded" to complicit drivers, who then move the cargo to a separate location for resale.</p><p>However, while the two hit-and-run style thefts detailed above are seen as isolated incidents (in terms of their methods) for now, the experts NBC has spoken to view them as a potential escalation of violent tactics more commonly seen in other countries—and it's not just data center equipment that's at risk.</p><p>Scott Cornell, chair of the Transported Asset Protection Association, Americas, says: "These are extremely high-level organized rings that are operating from a dozen different countries, targeting freight in the United States supply chain. These are not unsophisticated crews just pulling off theft."</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="wGYg4gdNXtacCXqv7fc6xM" name="american truck sim rain ext.jpg" alt="Truckin' in the rain." src="https://cdn.mos.cms.futurecdn.net/wGYg4gdNXtacCXqv7fc6xM-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: SCS Software)</span></figcaption></figure><p>"They’re planned. They’re plotted. They’re strategic. They’re playing chess in the supply chain," says Cornell.</p><p>Meanwhile, states such as Arizona, California, Tennessee, and Illinois have established specialised cargo theft task forces to deal with the issue. Private security escort companies are seeing increasing demand from data center logistics providers, while <a href="https://www.congress.gov/bill/119th-congress/house-bill/2853" target="_blank">a new bill to combat wider organized retail crime</a> is currently being debated by US congress.</p><p>Where the money goes, I guess it's no surprise that organised crime will follow. And given the value of some of the data center freight now making its way across the US, it seems that opportunistic criminals have a new high-value target to consider.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/ai/its-so-much-easier-to-steal-this-than-to-rob-a-bank-usd100-000-000-worth-of-ai-data-center-freight-reportedly-stolen-since-june/</link>
                                                                            <description>
                            <![CDATA[ 'It’s like stealing pure gold bars.' ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">NDBYLHukcfPq6T4RB36upZ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/AF6Trq5u3J38euMTaJVNwk-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 29 Oct 2026 11:53:40 +0000</pubDate>                                                                                                                                <updated>Thu, 29 Oct 2026 17:36:41 +0000</updated>
                                                                                                                                            <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[Software]]></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/AF6Trq5u3J38euMTaJVNwk-1920-80.jpg">
                                                            <media:credit><![CDATA[Starbreeze]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Heist Escape Roguelike: Payday Experience trailer still - Payday clown mask guy holding big bags of cash]]></media:description>                                                            <media:text><![CDATA[Heist Escape Roguelike: Payday Experience trailer still - Payday clown mask guy holding big bags of cash]]></media:text>
                                <media:title type="plain"><![CDATA[Heist Escape Roguelike: Payday Experience trailer still - Payday clown mask guy holding big bags of cash]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/AF6Trq5u3J38euMTaJVNwk-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>AI data centers are springing up across the US at an unprecedented rate, and with them comes a number of problems. Aside from the <a href="https://www.pcgamer.com/software/ai/ny-governor-orders-a-pause-on-large-ai-data-center-construction-to-ensure-that-when-companies-succeed-because-of-new-york-new-yorkers-succeed-too/" target="_blank">noise, disruption, and environmental concerns</a>, the vast infrastructure projects also require the transport of millions of dollars worth of equipment—and opportunistic thieves are cashing in.</p><p><a href="https://www.nbcnews.com/tech/security/grand-theft-ai-highway-thieves-are-stealing-millions-data-center-gear-rcna603733" target="_blank">An NBC News report</a> details two audacious data center equipment heists, both involving literal examples of highway robbery. A shipment carrying $13 million worth of server equipment travelling on a section of interstate through the Mojave Desert had its security escort rammed by a separate vehicle, forcing it to stop. The trailer carrying the equipment was later found at a truck yard in California, minus its valuable load.</p><p>"The accident was not an accident," says Gerado Pachucha, an ex-member of the LA Country Sheriff's Department cargo criminal apprehension team.  "The bad guys wanted that load, so they intentionally took out the escorts."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>A second incident, also involving a collision with a security vehicle, led to the loss of another trailer carrying an estimated $10 million worth of server rack components. NBC reports that, according to industry leaders, consultants, and investigators it's spoken to regarding the heists, thieves are estimated to have stolen more than $100 million worth of data center freight since June of this year.</p><p>Keith Lewis, head of operations of a cargo theft tracking team at Verisk CargoNet, says "It’s like stealing pure gold bars."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yWtDBKKwdV5uF9DXTMZWrG" name="GettyImages-2148113350" alt="A processed photo of a data center server room, showing racks of computers lit by overhead lights, reflecting off the ground." src="https://cdn.mos.cms.futurecdn.net/yWtDBKKwdV5uF9DXTMZWrG-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: quantic69 via Getty Images)</span></figcaption></figure><p>"We’ve seen some of these thefts go up into 30-plus million dollars for one particular shipment. It’s so much easier to steal this than to rob a bank."</p><p>Aside from the server racks themselves, data centers also require a vast amount of copper wires, fiber optic cables, RAM modules, storage drives, and various other high-value components that need to be transported to their destination by conventional means. </p><p>"Things that are precursors for the AI data centers: copper, server racks and RAM. Those are the things that are the precursors to build one, so that’s what we’re seeing the big increase in," says Lewis. "It’s the dollar value that’s getting the attention because the product they’re stealing costs so much more."</p><p>And despite the addition of security escorts, it seems some criminals are willing to go to increasingly sophisticated lengths to obtain such high-value items.</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="kNCDGE87fMuTymbxurAHYN" name="GettyImages-1269232851.jpg" alt="A stock photo of a hacker with computers in dark room. The devices are displaying computer code on the screens." src="https://cdn.mos.cms.futurecdn.net/kNCDGE87fMuTymbxurAHYN-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: boonchai wedmakawand via Getty Images)</span></figcaption></figure><p>The FBI issued a warning in April of this year regarding "<a href="https://www.ic3.gov/PSA/2026/PSA260430" target="_blank">cyber-enabled strategic cargo theft</a>," in which an online heist method is detailed. This involves spoofing broker's email addresses to gain access to cargo systems and bidding on loads, which are then said to be "cross-docked" or "transloaded" to complicit drivers, who then move the cargo to a separate location for resale.</p><p>However, while the two hit-and-run style thefts detailed above are seen as isolated incidents (in terms of their methods) for now, the experts NBC has spoken to view them as a potential escalation of violent tactics more commonly seen in other countries—and it's not just data center equipment that's at risk.</p><p>Scott Cornell, chair of the Transported Asset Protection Association, Americas, says: "These are extremely high-level organized rings that are operating from a dozen different countries, targeting freight in the United States supply chain. These are not unsophisticated crews just pulling off theft."</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="wGYg4gdNXtacCXqv7fc6xM" name="american truck sim rain ext.jpg" alt="Truckin' in the rain." src="https://cdn.mos.cms.futurecdn.net/wGYg4gdNXtacCXqv7fc6xM-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: SCS Software)</span></figcaption></figure><p>"They’re planned. They’re plotted. They’re strategic. They’re playing chess in the supply chain," says Cornell.</p><p>Meanwhile, states such as Arizona, California, Tennessee, and Illinois have established specialised cargo theft task forces to deal with the issue. Private security escort companies are seeing increasing demand from data center logistics providers, while <a href="https://www.congress.gov/bill/119th-congress/house-bill/2853" target="_blank">a new bill to combat wider organized retail crime</a> is currently being debated by US congress.</p><p>Where the money goes, I guess it's no surprise that organised crime will follow. And given the value of some of the data center freight now making its way across the US, it seems that opportunistic criminals have a new high-value target to consider.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Phantom Blade Zero dev says don't get the latest Nvidia drivers ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.pcgamer.com/games/action/phantom-blade-zero-vs-onimusha-way-of-the-sword/" target="_blank">Phantom Blade Zero</a>, the highly anticipated wuxia action RPG, is finally out in the world, and if you're planning on playing it on an Nvidia graphics card, maybe consider skipping the latest Nvidia driver update. Yes, that's the opposite of developer <a href="https://www.pcgamer.com/hardware/phantom-blade-zero-devs-say-the-game-needs-300-gb-of-free-space-for-the-pre-load-process-alongside-updated-system-requirements/" target="_blank">S-Game's pre-launch advice</a>. </p><p>Today, the <a href="https://store.steampowered.com/news/app/4115450/view/698779962638860721" target="_blank">Phantom Blade Zero devs took to the Steam page </a>with a post titled "Reason and Madness" recounting the history of the dev team, previous works, and how Phantom Blade Zero came to be. This is followed up with three announcements: a recommendation to download the 5 GB day one patch, encouragement to try the game on handhelds and lower-end/mid-range PCs, and, finally, advice not to use the latest Nvidia driver, 621.01. </p><p>It says, "Based on our testing, version 617.42 currently offers the best experience in Phantom Blade Zero. If you’ve installed a driver newer than 617.42, we recommend rolling back to 617.42 and choosing the clean installation option. Please stay on this version until Nvidia releases its next driver update, which we expect to arrive soon."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>Game Ready Driver 621.01 launched on Wednesday, October 21, and, in addition to providing some bug fixes, it is intended to better support DLSS and RTX in games like Phantom Blade Zero, Call of Duty: Modern Warfare 4, and NBA 2K27. </p><p>The Phantom Blade Zero team does not elaborate on how the previous drivers are better than the current one, but the recommendation implies it's significant enough to negatively impact your experience. </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="HxHYfD2JnfBBDNmAPbsm6T" name="phantom-blade-zero" alt="Phantom Blade Zero - Dancing lion breathing fire" src="https://cdn.mos.cms.futurecdn.net/HxHYfD2JnfBBDNmAPbsm6T-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: S-Games Studios)</span></figcaption></figure><p>Luckily, it's very easy to roll back Nvidia drivers in the Nvidia App. Simply boot it up, click on 'Drivers', then scroll down to whatever previous driver you want to roll back to, click the three dots on the side, and then click to install. </p><p>If you don't want to install the Nvidia app, you can roll back drivers by opening up the Device Manager, clicking on "Display Adapters", then right-clicking on your GPU, hitting "Properties", navigating to the "Driver" tab and then rolling back drivers there. </p><p>We don't yet have a timeline on when Nvidia's next driver is due to be released, but S-Game seems to think it will be soon, so you can always hold out for that if you won't be playing the game in the near future. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/phantom-blade-zero-dev-says-dont-get-the-latest-nvidia-drivers/</link>
                                                                            <description>
                            <![CDATA[ Luckily, rolling back drivers is pretty easy. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">g96iteCiAbpidJxSsRYPJC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/9NgfHRH4G9SjYg3JJ7mozS-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 29 Oct 2026 11:36:07 +0000</pubDate>                                                                                                                                <updated>Thu, 29 Oct 2026 11:52:45 +0000</updated>
                                                                                                                                            <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/9NgfHRH4G9SjYg3JJ7mozS-1920-80.jpg">
                                                            <media:credit><![CDATA[S-Game Studios]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Phantom Blade Zero - Soul]]></media:description>                                                            <media:text><![CDATA[Phantom Blade Zero - Soul]]></media:text>
                                <media:title type="plain"><![CDATA[Phantom Blade Zero - Soul]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/9NgfHRH4G9SjYg3JJ7mozS-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.pcgamer.com/games/action/phantom-blade-zero-vs-onimusha-way-of-the-sword/" target="_blank">Phantom Blade Zero</a>, the highly anticipated wuxia action RPG, is finally out in the world, and if you're planning on playing it on an Nvidia graphics card, maybe consider skipping the latest Nvidia driver update. Yes, that's the opposite of developer <a href="https://www.pcgamer.com/hardware/phantom-blade-zero-devs-say-the-game-needs-300-gb-of-free-space-for-the-pre-load-process-alongside-updated-system-requirements/" target="_blank">S-Game's pre-launch advice</a>. </p><p>Today, the <a href="https://store.steampowered.com/news/app/4115450/view/698779962638860721" target="_blank">Phantom Blade Zero devs took to the Steam page </a>with a post titled "Reason and Madness" recounting the history of the dev team, previous works, and how Phantom Blade Zero came to be. This is followed up with three announcements: a recommendation to download the 5 GB day one patch, encouragement to try the game on handhelds and lower-end/mid-range PCs, and, finally, advice not to use the latest Nvidia driver, 621.01. </p><p>It says, "Based on our testing, version 617.42 currently offers the best experience in Phantom Blade Zero. If you’ve installed a driver newer than 617.42, we recommend rolling back to 617.42 and choosing the clean installation option. Please stay on this version until Nvidia releases its next driver update, which we expect to arrive soon."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>Game Ready Driver 621.01 launched on Wednesday, October 21, and, in addition to providing some bug fixes, it is intended to better support DLSS and RTX in games like Phantom Blade Zero, Call of Duty: Modern Warfare 4, and NBA 2K27. </p><p>The Phantom Blade Zero team does not elaborate on how the previous drivers are better than the current one, but the recommendation implies it's significant enough to negatively impact your experience. </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="HxHYfD2JnfBBDNmAPbsm6T" name="phantom-blade-zero" alt="Phantom Blade Zero - Dancing lion breathing fire" src="https://cdn.mos.cms.futurecdn.net/HxHYfD2JnfBBDNmAPbsm6T-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: S-Games Studios)</span></figcaption></figure><p>Luckily, it's very easy to roll back Nvidia drivers in the Nvidia App. Simply boot it up, click on 'Drivers', then scroll down to whatever previous driver you want to roll back to, click the three dots on the side, and then click to install. </p><p>If you don't want to install the Nvidia app, you can roll back drivers by opening up the Device Manager, clicking on "Display Adapters", then right-clicking on your GPU, hitting "Properties", navigating to the "Driver" tab and then rolling back drivers there. </p><p>We don't yet have a timeline on when Nvidia's next driver is due to be released, but S-Game seems to think it will be soon, so you can always hold out for that if you won't be playing the game in the near future. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ For the second time this year, Galax says it's not closing down: Palit-owned graphics card brand 'continues to operate as usual' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Galax has come out in defence of its continued existence for the second time this year, following a report that incorrectly claimed the graphics card brand was closing down its factory.</p><p>In a report by El Chapuzas Informatico, citing industry sources, Palit was claimed to be closing the Galax factory. This is said to be occurring at the same time as a major reorganisation of the Galax and KFA2 brands. </p><p>Galax, a subsidiary brand of Palit, has expressly denied this claim. In, the company says its business operations are "continuing as normal". </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>"Galax continues to operate as usual," a statement under both Palit and Galax letterheads, published on the <a href="https://galax.com/en/news/official-statement-regarding-galaxs-business-operations/" target="_blank">Galax website</a>, says. "No manufacturing facilities have been shut down, and Galax products remain available through our sales channels in both domestic and international markets.</p><p>That bit about internal reorganising of the Galax and KFA2 brands has some truth to it. We know that from Palit's previous statement on a rumoured Galax closure. Yep, Galax has been rumoured for chop before, and not too long ago. <a href="https://www.pcgamer.com/hardware/graphics-cards/despite-recent-reports-galax-reassures-customers-that-it-has-not-pulled-an-evga-and-exited-the-graphics-card-market/" target="_blank">It last happened in April, 2026</a>.</p><p>Back then, it was speculated that Galax was shuttering and Palit was taking over. Palit said no, Galax is still operating and we've already taken over (Palit has owned Galax since before it was officially called Galax, buying the company then named Galaxy in 2008); however, Palit did note at the time that it was integrating management of the brand, alongside KFA2 and HOF, under Palit's HQ.</p><p>So, the reports of Galax's death are greatly exaggerated, but the ones about putting it under new centralised management are closer to the mark. Importantly, the brand's cards are still on the shelves, including the brand-new <a href="https://www.pcgamer.com/hardware/graphics-cards/i-have-neither-the-budget-nor-the-inclination-for-a-crystal-encrusted-rtx-5090-but-galax-is-releasing-one-anyway/" target="_blank">Galax RTX 5080 HOF Extreme encrusted with Swarovski crystals</a>.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/graphics-cards/for-the-second-time-this-year-galax-says-its-not-closing-down-palit-owned-graphics-card-brand-continues-to-operate-as-usual/</link>
                                                                            <description>
                            <![CDATA[ Reports of the brand's death have been greatly exaggerated. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ZjV68X95gcbwJ3hQpxx7zU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/NGaF45ZBzit4cYz93MhAMg-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 29 Oct 2026 10:29:32 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Graphics Cards]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&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/NGaF45ZBzit4cYz93MhAMg-1920-80.jpg">
                                                            <media:credit><![CDATA[Galax]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Galax GPU on a white background.]]></media:description>                                                            <media:text><![CDATA[Galax GPU on a white background.]]></media:text>
                                <media:title type="plain"><![CDATA[Galax GPU on a white background.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/NGaF45ZBzit4cYz93MhAMg-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Galax has come out in defence of its continued existence for the second time this year, following a report that incorrectly claimed the graphics card brand was closing down its factory.</p><p>In a report by El Chapuzas Informatico, citing industry sources, Palit was claimed to be closing the Galax factory. This is said to be occurring at the same time as a major reorganisation of the Galax and KFA2 brands. </p><p>Galax, a subsidiary brand of Palit, has expressly denied this claim. In, the company says its business operations are "continuing as normal". </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>"Galax continues to operate as usual," a statement under both Palit and Galax letterheads, published on the <a href="https://galax.com/en/news/official-statement-regarding-galaxs-business-operations/" target="_blank">Galax website</a>, says. "No manufacturing facilities have been shut down, and Galax products remain available through our sales channels in both domestic and international markets.</p><p>That bit about internal reorganising of the Galax and KFA2 brands has some truth to it. We know that from Palit's previous statement on a rumoured Galax closure. Yep, Galax has been rumoured for chop before, and not too long ago. <a href="https://www.pcgamer.com/hardware/graphics-cards/despite-recent-reports-galax-reassures-customers-that-it-has-not-pulled-an-evga-and-exited-the-graphics-card-market/" target="_blank">It last happened in April, 2026</a>.</p><p>Back then, it was speculated that Galax was shuttering and Palit was taking over. Palit said no, Galax is still operating and we've already taken over (Palit has owned Galax since before it was officially called Galax, buying the company then named Galaxy in 2008); however, Palit did note at the time that it was integrating management of the brand, alongside KFA2 and HOF, under Palit's HQ.</p><p>So, the reports of Galax's death are greatly exaggerated, but the ones about putting it under new centralised management are closer to the mark. Importantly, the brand's cards are still on the shelves, including the brand-new <a href="https://www.pcgamer.com/hardware/graphics-cards/i-have-neither-the-budget-nor-the-inclination-for-a-crystal-encrusted-rtx-5090-but-galax-is-releasing-one-anyway/" target="_blank">Galax RTX 5080 HOF Extreme encrusted with Swarovski crystals</a>.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ GTA 6's PS5 install size is so big you could store 3500 copies of Balatro inside ]]></title>
                                                                                                <dc:content><![CDATA[ <p>While Grand Theft Auto 6 doesn't have a confirmed PC release date yet, we do know it's coming to PS5 and Xbox Series X &amp; S on November 19. Now, we also know that the game file console gamers will need to download is going to be a very big boy indeed, boasting a file size even bigger than <a href="https://www.pcgamer.com/red-dead-redemption-2-review/" target="_blank">Red Dead Redemption 2</a>.</p><p>Reportedly, Grand Theft Auto VI will clock in at a total of 210 GB on PlayStation 5. That's <a href="https://x.com/PlaystationSize/status/2115129198851522905" target="_blank">according to PlayStation Game Size on X</a>, who unearths file sizes for upcoming console releases by snooping around the PS Store's backend. I'm sparing a thought for anyone with a creaky internet connection (though at least you can pre-load the game on consoles from November 12, one week earlier).</p><p>That 210 GB figure is enough to make your head spin, even if the fully downloaded game doesn't actually end up taking quite that much space on your SSD. That said, a game spread out more than a fifth of a 1 TB drive's total capacity definitely stings during <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">the memory supply crisis</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>For comparison's sake, GTA 6's download size is markedly bigger than the 115 GB of available space <a href="https://www.pcgamer.com/games/call-of-duty/call-of-duty-modern-warfare-4-review/#section-dmz" target="_blank">Call of Duty: Modern Warfare 4</a> required at launch. You won't find me tearing through DMZ, but I'm likely still going to have to do some SSD spring cleaning in the not too distant future if those <a href="https://www.pcgamer.com/games/grand-theft-auto/report-claims-grand-theft-auto-6-will-launch-on-pc-sooner-than-anyone-expected/" target="_blank">rumours about a Q1 2027 PC release</a> for GTA VI are to be believed (Personally, I think <a href="https://www.pcgamer.com/games/grand-theft-auto/gta-6-pc-release-date/" target="_blank">Lauren's prediction that we'll be waiting until at least November next year</a> is more likely).</p><p>Currently on PC, Steam says you'll need 105 GB of available space for predecessor GTA V Enhanced. That same game takes up 105.3 GB on PS5. As for Red Dead Redemption 2, Steam recommends 150 GB of space, while the PS store recommends a minimum of 89.20 GB. Obviously, file sizes can fluctuate significantly between updates and bundled-in online modes. But still, based on these two examples alone, I may have to dig deep to find space on my PC for GTA 6.</p><p>The biggest game on my rig right now is <a href="https://www.pcgamer.com/games/horror/silent-hill-townfall-review/" target="_blank">Silent Hill: Townfall</a> at 73.55 GB, while the biggest game on my Steam Deck is <a href="https://www.pcgamer.com/baldur-s-gate-3/" target="_blank">Baldur's Gate 3</a> at 148.24 GB. Beyond that, I'm much more one for indie darlings—which is just as well because James pointed out to me that GTA 6's file size is roughly equivalent to 3500 copies of <a href="https://www.pcgamer.com/balatro/" target="_blank">Balatro</a>, and 6000 copies of <a href="https://www.pcgamer.com/games/puzzle/animal-well-review/" target="_blank">Animal Well</a>. I dread to think just how many times those indie projects' production budgets Rockstar spent developing GTA 6…</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/games/grand-theft-auto/gta-6s-ps5-install-size-is-so-big-you-could-store-3500-copies-of-balatro-inside/</link>
                                                                            <description>
                            <![CDATA[ That's a lot of space to ask for in the midst of the memory crisis. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Tgf5AH963iSFGKp4crh7rc</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/5CzH6eeVgfUqFSuqvAYEfn-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 28 Oct 2026 15:52:11 +0000</pubDate>                                                                                                                                <updated>Wed, 28 Oct 2026 15:52:18 +0000</updated>
                                                                                                                                            <category><![CDATA[Grand Theft Auto]]></category>
                                                    <category><![CDATA[Games]]></category>
                                                    <category><![CDATA[Action]]></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/5CzH6eeVgfUqFSuqvAYEfn-1920-80.jpg">
                                                            <media:credit><![CDATA[Rockstar]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up of a masked man and woman holding guns as they enter a convenience store during a robbery]]></media:description>                                                            <media:text><![CDATA[Close-up of a masked man and woman holding guns as they enter a convenience store during a robbery]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up of a masked man and woman holding guns as they enter a convenience store during a robbery]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/5CzH6eeVgfUqFSuqvAYEfn-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>While Grand Theft Auto 6 doesn't have a confirmed PC release date yet, we do know it's coming to PS5 and Xbox Series X &amp; S on November 19. Now, we also know that the game file console gamers will need to download is going to be a very big boy indeed, boasting a file size even bigger than <a href="https://www.pcgamer.com/red-dead-redemption-2-review/" target="_blank">Red Dead Redemption 2</a>.</p><p>Reportedly, Grand Theft Auto VI will clock in at a total of 210 GB on PlayStation 5. That's <a href="https://x.com/PlaystationSize/status/2115129198851522905" target="_blank">according to PlayStation Game Size on X</a>, who unearths file sizes for upcoming console releases by snooping around the PS Store's backend. I'm sparing a thought for anyone with a creaky internet connection (though at least you can pre-load the game on consoles from November 12, one week earlier).</p><p>That 210 GB figure is enough to make your head spin, even if the fully downloaded game doesn't actually end up taking quite that much space on your SSD. That said, a game spread out more than a fifth of a 1 TB drive's total capacity definitely stings during <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">the memory supply crisis</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>For comparison's sake, GTA 6's download size is markedly bigger than the 115 GB of available space <a href="https://www.pcgamer.com/games/call-of-duty/call-of-duty-modern-warfare-4-review/#section-dmz" target="_blank">Call of Duty: Modern Warfare 4</a> required at launch. You won't find me tearing through DMZ, but I'm likely still going to have to do some SSD spring cleaning in the not too distant future if those <a href="https://www.pcgamer.com/games/grand-theft-auto/report-claims-grand-theft-auto-6-will-launch-on-pc-sooner-than-anyone-expected/" target="_blank">rumours about a Q1 2027 PC release</a> for GTA VI are to be believed (Personally, I think <a href="https://www.pcgamer.com/games/grand-theft-auto/gta-6-pc-release-date/" target="_blank">Lauren's prediction that we'll be waiting until at least November next year</a> is more likely).</p><p>Currently on PC, Steam says you'll need 105 GB of available space for predecessor GTA V Enhanced. That same game takes up 105.3 GB on PS5. As for Red Dead Redemption 2, Steam recommends 150 GB of space, while the PS store recommends a minimum of 89.20 GB. Obviously, file sizes can fluctuate significantly between updates and bundled-in online modes. But still, based on these two examples alone, I may have to dig deep to find space on my PC for GTA 6.</p><p>The biggest game on my rig right now is <a href="https://www.pcgamer.com/games/horror/silent-hill-townfall-review/" target="_blank">Silent Hill: Townfall</a> at 73.55 GB, while the biggest game on my Steam Deck is <a href="https://www.pcgamer.com/baldur-s-gate-3/" target="_blank">Baldur's Gate 3</a> at 148.24 GB. Beyond that, I'm much more one for indie darlings—which is just as well because James pointed out to me that GTA 6's file size is roughly equivalent to 3500 copies of <a href="https://www.pcgamer.com/balatro/" target="_blank">Balatro</a>, and 6000 copies of <a href="https://www.pcgamer.com/games/puzzle/animal-well-review/" target="_blank">Animal Well</a>. I dread to think just how many times those indie projects' production budgets Rockstar spent developing GTA 6…</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Elon Musk says 'robot RAM needs will exceed everything else on Earth' but only assuming we throw all the data centers into space ]]></title>
                                                                                                <dc:content><![CDATA[ <p>We've been in a <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 shortage</a> for about a year now, causing many of our systems and PC parts to drastically increase in price. Since then, it's very much been a guessing game how long it will all go on for. The primary cause of the shortage has been the insatiable demand of AI data centres, so we've naturally assumed if that dies down or if memory production can match it, all will be well again.</p><p>We might worry that <a href="https://x.com/elonmusk/status/2114772074438988256" target="_blank">the Tesla and SpaceX CEO's proclamation</a> that "Robot RAM needs will exceed everything else on Earth" will prevent this. But it's not something we should worry about for a very long time, as even if the amount of RAM robots use increases and we start producing way more robots, they will still demand far, far less than AI data centres currently do.</p><p>There's an element of flippancy to Musk's comments, of course, given he's saying that AI data centers will be housed in space and therefore robots will be the biggest guzzlers of RAM on the planet—this doesn't imply that robots will require more RAM than AI. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>In the context of what Musk is replying to on X, it's nevertheless clear he's saying they will demand a lot. Musk's comments are a defence of some Counterpoint research that <a href="https://x.com/wallstengine/status/2114649550321561960" target="_blank">reportedly claims</a> that by 2030, humanoid robots will demand 20x more DRAM than they do right now. </p><p>P Equity Research has <a href="https://x.com/pequityresearch/status/2109362648886231157" target="_blank">shared a chart from Counterpoint</a> which lays out this predicted increase in demand. Apparently, the current 8,300 Tb worth of DRAM demanded by "humanoid robot brains" will increase to 172,000 Tb by 2030.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2114772074438988256"><p lang="en" dir="ltr">@zephyr_z9 Silly analysis. Robot RAM needs will exceed everything else on Earth, as you need the robots to be on physical substates in order to shape atoms.  Super intelligence needs will vastly exceed that, but ~100% of SI will be deep space compute. Obviously.<a href="https://twitter.com/cantworkitout/status/2114772074438988256">October 26, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Aside from the obvious fear of a Skynet future, the worry here is that this is another thing that could put severe strain on the memory market and keep the price of our PC components sky-high. There were already predictions that <a href="https://www.pcgamer.com/hardware/memory/researchers-predict-a-memory-demand-shortfall-so-large-that-half-of-this-years-actual-global-dram-capacity-wouldnt-cover-the-extra-needed/" target="_blank">memory supply will still fall short of demand into 2030</a> and <a href="https://www.pcgamer.com/hardware/memory/customer-demand-will-remain-higher-than-our-supply-capacity-even-beyond-2030-sk-hynix-ceo-predicts-memory-supply-crisis-may-run-even-longer-than-we-feared/" target="_blank">even beyond</a>, so adding a potential 20-fold increase in demand from humanoid robots into the mix can't bode well, right?</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="vBmXsjc3QREUbruoi85Kqm" name="(38) Selectramatronics - YouTube - 0-12-33" alt="A screenshot of a lip-syncing robot from a YouTube video" src="https://cdn.mos.cms.futurecdn.net/vBmXsjc3QREUbruoi85Kqm-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: Ancient)</span></figcaption></figure><p>Well, let's not be so hasty. The <a href="https://www.ctee.com.tw/news/20251226700135-439901" target="_blank">current global DRAM capacity is estimated</a> to sit at about 40 exabytes (EB). One exabyte is equal to 1,000,000 terabytes (TB), which is equal to 8,000,000 terabits (Tb). 40 EB is 320,000,000 Terabits. </p><p>So, when Counterpoint predicts robots will demand 172,000 Tb of DRAM by 2030, it's predicting that robots will demand about 0.05% of the current global DRAM capacity. That's a miniscule sliver of what AI currently demands and what memory makers actually produce. By 2030, the sliver will seem even smaller.</p><p>So, I'd say moving our data centres to space would pretty much have to be the requirement for such humanoid robots to have any meaningful impact on the memory shortage. The ball is still firmly in the court of the AI bubble and how that all pans out.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/memory/elon-musk-says-robot-ram-needs-will-exceed-everything-else-on-earth-but-only-assuming-we-throw-all-the-data-centers-into-space/</link>
                                                                            <description>
                            <![CDATA[ Humanoid robots will still consume only a sliver of the RAM AI does. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Cp4HP9AidbQv3pHQkx7etC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/D9FjQch5XWEdvFGiaWZEPQ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 28 Oct 2026 14:56:17 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Memory]]></category>
                                                    <category><![CDATA[Hardware]]></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/D9FjQch5XWEdvFGiaWZEPQ-1920-80.jpg">
                                                            <media:credit><![CDATA[Getty Images / ANGELA WEISS / AFP]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Tesla and SpaceX CEO Elon Musk speaks at a rally for former US President and Republican presidential candidate Donald Trump at Madison Square Garden in New York, October 27, 2024. (Photo by ANGELA WEISS / AFP) (Photo by ANGELA WEISS/AFP via Getty Images)]]></media:description>                                                            <media:text><![CDATA[Tesla and SpaceX CEO Elon Musk speaks at a rally for former US President and Republican presidential candidate Donald Trump at Madison Square Garden in New York, October 27, 2024. (Photo by ANGELA WEISS / AFP) (Photo by ANGELA WEISS/AFP via Getty Images)]]></media:text>
                                <media:title type="plain"><![CDATA[Tesla and SpaceX CEO Elon Musk speaks at a rally for former US President and Republican presidential candidate Donald Trump at Madison Square Garden in New York, October 27, 2024. (Photo by ANGELA WEISS / AFP) (Photo by ANGELA WEISS/AFP via Getty Images)]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/D9FjQch5XWEdvFGiaWZEPQ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>We've been in a <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 shortage</a> for about a year now, causing many of our systems and PC parts to drastically increase in price. Since then, it's very much been a guessing game how long it will all go on for. The primary cause of the shortage has been the insatiable demand of AI data centres, so we've naturally assumed if that dies down or if memory production can match it, all will be well again.</p><p>We might worry that <a href="https://x.com/elonmusk/status/2114772074438988256" target="_blank">the Tesla and SpaceX CEO's proclamation</a> that "Robot RAM needs will exceed everything else on Earth" will prevent this. But it's not something we should worry about for a very long time, as even if the amount of RAM robots use increases and we start producing way more robots, they will still demand far, far less than AI data centres currently do.</p><p>There's an element of flippancy to Musk's comments, of course, given he's saying that AI data centers will be housed in space and therefore robots will be the biggest guzzlers of RAM on the planet—this doesn't imply that robots will require more RAM than AI. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>In the context of what Musk is replying to on X, it's nevertheless clear he's saying they will demand a lot. Musk's comments are a defence of some Counterpoint research that <a href="https://x.com/wallstengine/status/2114649550321561960" target="_blank">reportedly claims</a> that by 2030, humanoid robots will demand 20x more DRAM than they do right now. </p><p>P Equity Research has <a href="https://x.com/pequityresearch/status/2109362648886231157" target="_blank">shared a chart from Counterpoint</a> which lays out this predicted increase in demand. Apparently, the current 8,300 Tb worth of DRAM demanded by "humanoid robot brains" will increase to 172,000 Tb by 2030.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2114772074438988256"><p lang="en" dir="ltr">@zephyr_z9 Silly analysis. Robot RAM needs will exceed everything else on Earth, as you need the robots to be on physical substates in order to shape atoms.  Super intelligence needs will vastly exceed that, but ~100% of SI will be deep space compute. Obviously.<a href="https://twitter.com/cantworkitout/status/2114772074438988256">October 26, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Aside from the obvious fear of a Skynet future, the worry here is that this is another thing that could put severe strain on the memory market and keep the price of our PC components sky-high. There were already predictions that <a href="https://www.pcgamer.com/hardware/memory/researchers-predict-a-memory-demand-shortfall-so-large-that-half-of-this-years-actual-global-dram-capacity-wouldnt-cover-the-extra-needed/" target="_blank">memory supply will still fall short of demand into 2030</a> and <a href="https://www.pcgamer.com/hardware/memory/customer-demand-will-remain-higher-than-our-supply-capacity-even-beyond-2030-sk-hynix-ceo-predicts-memory-supply-crisis-may-run-even-longer-than-we-feared/" target="_blank">even beyond</a>, so adding a potential 20-fold increase in demand from humanoid robots into the mix can't bode well, right?</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="vBmXsjc3QREUbruoi85Kqm" name="(38) Selectramatronics - YouTube - 0-12-33" alt="A screenshot of a lip-syncing robot from a YouTube video" src="https://cdn.mos.cms.futurecdn.net/vBmXsjc3QREUbruoi85Kqm-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: Ancient)</span></figcaption></figure><p>Well, let's not be so hasty. The <a href="https://www.ctee.com.tw/news/20251226700135-439901" target="_blank">current global DRAM capacity is estimated</a> to sit at about 40 exabytes (EB). One exabyte is equal to 1,000,000 terabytes (TB), which is equal to 8,000,000 terabits (Tb). 40 EB is 320,000,000 Terabits. </p><p>So, when Counterpoint predicts robots will demand 172,000 Tb of DRAM by 2030, it's predicting that robots will demand about 0.05% of the current global DRAM capacity. That's a miniscule sliver of what AI currently demands and what memory makers actually produce. By 2030, the sliver will seem even smaller.</p><p>So, I'd say moving our data centres to space would pretty much have to be the requirement for such humanoid robots to have any meaningful impact on the memory shortage. The ball is still firmly in the court of the AI bubble and how that all pans out.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'Yes, we are vibe-coding things': Epic confirms it's using AI tools to code Unreal Engine 6, Fortnite, and more ]]></title>
                                                                                                <dc:content><![CDATA[ <p>You won't catch me venturing deep into the coding mines, but even so, thinking about the comment-less form AI-assisted code can often take still gives me a stress headache. So you can imagine my reaction when <a href="https://x.com/TimSweeneyEpic/status/2114498822328242445?s=20" target="_blank">Tim Sweeney recently confirmed via X</a>, "Yes, we are now using AI tools to develop code for Unreal Engine."</p><p>This is unsurprising given that, in <a href="https://www.unrealengine.com/news/the-road-to-ue-6" target="_blank">an Unreal Engine 6 blog post</a> back in June, Epic’s executive VP of development Marcus Wassmer wrote that the company had "opened up pretty broad usage for code generation and AI analysis across our backend, engine, and game development engineering teams." More recently, Wassmer <a href="https://thisweekinvideogames.com/news/epic-games-confirms-ai-is-being-used-to-develop-code-for-unreal-engine/" target="_blank">offered a follow-up statement to This Week in Videogames</a>, saying, "We are more concerned about the risks of moving too slowly than we are about AI skepticism."</p><p>"Yes, we are vibe-coding things," Wassmer elaborates in his most recent statement, "That means our engineers are no longer writing the bulk of the code, but they are still guiding the tools to get the architectural result we want. We’re not ‘one-shotting’ the engine; we’re iterating with AI to ship features developers want and keep the engine within the memory, performance, and scalability envelopes."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>This all follows comments made by Sweeney earlier this week, in which he came out against Steam's AI disclosure statements, claiming that they are "<a href="https://www.pcgamer.com/gaming-industry/steam-week-in-review-ai-disclosures-enter-the-discourse-again-as-epic-ceo-calls-them-just-as-partisan-as-mandatory-political-essays/" target="_blank">just as partisan as mandatory political essays</a>." The week before, Epic had announced an AI game jam (<a href="https://www.pcgamer.com/software/ai/epic-announces-game-jam-where-you-have-to-use-ai/" target="_blank">shortly before walking back the AI requirement</a>), and the week before that the company said it had "<a href="https://www.pcgamer.com/hardware/epic-said-its-game-launcher-was-faster-than-steam-on-the-same-day-steam-got-a-speed-boost-so-ive-put-both-to-the-test/" target="_blank">vibe coded the Epic Games Launcher to be faster than the other guy</a>."</p><p>Wassmer added in his statement yesterday, "As we mentioned <a href="https://www.pcgamer.com/software/it-is-going-to-change-a-lot-about-how-games-are-made-epic-merges-unreal-engine-5-with-unreal-engine-for-fortnite-to-give-game-devs-around-the-world-unreal-engine-6/" target="_blank">back at Unreal Fest in Chicago on stage and in interviews</a>, we are definitely using AI to develop code and features for Unreal Engine. Almost all development happening right now is being done in the dev streams attached to <a href="https://www.pcgamer.com/fortnite/" target="_blank">Fortnite</a>, [Unreal Editor for Fortnite], and UE6.”</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2113639717690638483"><p lang="en" dir="ltr">@mattworkman Forcing developers to write a political statement to be used against them by the hate mob they’re helping organize is abhorrent.<a href="https://twitter.com/cantworkitout/status/2113639717690638483">October 23, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Epic is using a number of AI tools, though Wassmer specifically mentions Claude Code and Codex. "[These tools are] helping across a broad spectrum of development, with some particularly big recent wins being almost the complete elimination of non-deterministic cooking bugs which we’ve been fighting for a decade and an acceleration of work related to compressing shaders which both significantly reduce patch sizes," Wassmer says, "[Other wins include] a rewrite of a significant portion of the D3D12 rendering layer (which I estimated as needing three to six weeks of work for a single engineer, but the work was actually completed in about one week with a nice win on CPU time and fewer bugs)."</p><p>Throughout his full statement, Wassmer repeatedly touts the efficacy and efficiency gains Epic has made by using AI tools. He also argues that this is simply the shape of things to come for game and software development, adding that "The best way to counter any [AI] skepticism is through the quality of the games and tools we’re able to deliver."</p><p>"We don’t think it’s viable to take a halfway approach to AI in development," He concludes, "We think it’s best to just be up front with what we’re doing, share best practices with other developers, and make the best UE6 we can with the best tools available at any given time."</p><p>Tim Sweeney may not care for Steam's AI disclosures, arguing that these force "<a href="https://x.com/TimSweeneyEpic/status/2113639717690638483" target="_blank">developers to write a political statement to be used against them by the hate mob</a>." Still, there's perhaps something to be said for the company's candour when it comes to its use of AI tools more broadly. Disclosing 'vibe-coding' allows PC gamers to make their own decision about whether to engage with a game or not. Armed with this information, I myself have one more reason to venture into the 'not' camp.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/ai/yes-we-are-vibe-coding-things-epic-confirms-its-using-ai-tools-to-code-unreal-engine-6-fortnite-and-more/</link>
                                                                            <description>
                            <![CDATA[ 'We are more concerned about the risks of moving too slowly than we are about AI skepticism.' ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Sf5Qmwi9omNdrB8zFzGBpd</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ZoNnbwEE9xr6vSMNfPbQVN-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 28 Oct 2026 13:58:17 +0000</pubDate>                                                                                                                                <updated>Wed, 28 Oct 2026 21:40:10 +0000</updated>
                                                                                                                                            <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[Software]]></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/ZoNnbwEE9xr6vSMNfPbQVN-1920-80.jpg">
                                                            <media:credit><![CDATA[Epic Games]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[An Epic Games logo on the left, with Fortnite character Jonesy looking shocked on a phone on the right.]]></media:description>                                                            <media:text><![CDATA[An Epic Games logo on the left, with Fortnite character Jonesy looking shocked on a phone on the right.]]></media:text>
                                <media:title type="plain"><![CDATA[An Epic Games logo on the left, with Fortnite character Jonesy looking shocked on a phone on the right.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ZoNnbwEE9xr6vSMNfPbQVN-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>You won't catch me venturing deep into the coding mines, but even so, thinking about the comment-less form AI-assisted code can often take still gives me a stress headache. So you can imagine my reaction when <a href="https://x.com/TimSweeneyEpic/status/2114498822328242445?s=20" target="_blank">Tim Sweeney recently confirmed via X</a>, "Yes, we are now using AI tools to develop code for Unreal Engine."</p><p>This is unsurprising given that, in <a href="https://www.unrealengine.com/news/the-road-to-ue-6" target="_blank">an Unreal Engine 6 blog post</a> back in June, Epic’s executive VP of development Marcus Wassmer wrote that the company had "opened up pretty broad usage for code generation and AI analysis across our backend, engine, and game development engineering teams." More recently, Wassmer <a href="https://thisweekinvideogames.com/news/epic-games-confirms-ai-is-being-used-to-develop-code-for-unreal-engine/" target="_blank">offered a follow-up statement to This Week in Videogames</a>, saying, "We are more concerned about the risks of moving too slowly than we are about AI skepticism."</p><p>"Yes, we are vibe-coding things," Wassmer elaborates in his most recent statement, "That means our engineers are no longer writing the bulk of the code, but they are still guiding the tools to get the architectural result we want. We’re not ‘one-shotting’ the engine; we’re iterating with AI to ship features developers want and keep the engine within the memory, performance, and scalability envelopes."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>This all follows comments made by Sweeney earlier this week, in which he came out against Steam's AI disclosure statements, claiming that they are "<a href="https://www.pcgamer.com/gaming-industry/steam-week-in-review-ai-disclosures-enter-the-discourse-again-as-epic-ceo-calls-them-just-as-partisan-as-mandatory-political-essays/" target="_blank">just as partisan as mandatory political essays</a>." The week before, Epic had announced an AI game jam (<a href="https://www.pcgamer.com/software/ai/epic-announces-game-jam-where-you-have-to-use-ai/" target="_blank">shortly before walking back the AI requirement</a>), and the week before that the company said it had "<a href="https://www.pcgamer.com/hardware/epic-said-its-game-launcher-was-faster-than-steam-on-the-same-day-steam-got-a-speed-boost-so-ive-put-both-to-the-test/" target="_blank">vibe coded the Epic Games Launcher to be faster than the other guy</a>."</p><p>Wassmer added in his statement yesterday, "As we mentioned <a href="https://www.pcgamer.com/software/it-is-going-to-change-a-lot-about-how-games-are-made-epic-merges-unreal-engine-5-with-unreal-engine-for-fortnite-to-give-game-devs-around-the-world-unreal-engine-6/" target="_blank">back at Unreal Fest in Chicago on stage and in interviews</a>, we are definitely using AI to develop code and features for Unreal Engine. Almost all development happening right now is being done in the dev streams attached to <a href="https://www.pcgamer.com/fortnite/" target="_blank">Fortnite</a>, [Unreal Editor for Fortnite], and UE6.”</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2113639717690638483"><p lang="en" dir="ltr">@mattworkman Forcing developers to write a political statement to be used against them by the hate mob they’re helping organize is abhorrent.<a href="https://twitter.com/cantworkitout/status/2113639717690638483">October 23, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Epic is using a number of AI tools, though Wassmer specifically mentions Claude Code and Codex. "[These tools are] helping across a broad spectrum of development, with some particularly big recent wins being almost the complete elimination of non-deterministic cooking bugs which we’ve been fighting for a decade and an acceleration of work related to compressing shaders which both significantly reduce patch sizes," Wassmer says, "[Other wins include] a rewrite of a significant portion of the D3D12 rendering layer (which I estimated as needing three to six weeks of work for a single engineer, but the work was actually completed in about one week with a nice win on CPU time and fewer bugs)."</p><p>Throughout his full statement, Wassmer repeatedly touts the efficacy and efficiency gains Epic has made by using AI tools. He also argues that this is simply the shape of things to come for game and software development, adding that "The best way to counter any [AI] skepticism is through the quality of the games and tools we’re able to deliver."</p><p>"We don’t think it’s viable to take a halfway approach to AI in development," He concludes, "We think it’s best to just be up front with what we’re doing, share best practices with other developers, and make the best UE6 we can with the best tools available at any given time."</p><p>Tim Sweeney may not care for Steam's AI disclosures, arguing that these force "<a href="https://x.com/TimSweeneyEpic/status/2113639717690638483" target="_blank">developers to write a political statement to be used against them by the hate mob</a>." Still, there's perhaps something to be said for the company's candour when it comes to its use of AI tools more broadly. Disclosing 'vibe-coding' allows PC gamers to make their own decision about whether to engage with a game or not. Armed with this information, I myself have one more reason to venture into the 'not' camp.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Nvidia and AMD invest billions into Meta as companies egg each other on to bet even more on AI ]]></title>
                                                                                                <dc:content><![CDATA[ <p>This week both AMD and Nvidia have announced partnerships with Meta, securing both collabs and billions of dollars. All three companies are heavily invested in AI, and these deals are only more fuel for the fire.</p><p><a href="https://nvidianews.nvidia.com/news/nvidia-and-meta-to-expand-collaboration-on-muse-and-muse-family-of-models-amid-robust-growth" target="_blank">Nvidia just announced its deal</a> with Meta to "expand their partnership on Muse and the Muse family of models", and Meta, in turn, will expand Vera Rubin and Vera CPU deployment, as well as deploy Nvidia's Spectrum X Ethernet networking and BlueField-4 DPUs. Though Meta was probably buying all that stuff anyways, right?</p><p>Nvidia also said it was "considering other technological collaborations, including Nvidia OpenShell Reference Architecture to strengthen agency security and Nvidia Sentry for monitoring, structured, unstructured and graph data processing."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>Importantly, Nvidia is also investing $3 billion into Meta. Money that may go elsewhere in Meta under a wholly different account book, but ultimately, Meta is spending a large amount of money on AI hardware from Nvidia. You see what's happening here? Both companies are spending big with one another. </p><p>One day after this announcement, <a href="https://ir.amd.com/news-events/press-releases/detail/1302/amd-and-meta-advance-strategic-partnership-to-power-metas-superintelligence-infrastructure" target="_blank">AMD too declared its partnership</a> with Meta, saying that it would be collaborating on CPU, GPU, networking, systems, and software for Meta's AI infrastructure. AMD also announced that its Helio rackscale solution would be powering Meta's "leading frontier models and services" and that AMD is the "compute engine of choice for Muse and AMD technologies provide Day-0 support for leading Meta models".</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="kjtquRwKv5dLr2fqHMkE3A" name="C - 2026-10-27T162451.251" alt="An image from Nvdia of an AI generated representation of Meta's AI mascot and Jensen Huang next to each other" src="https://cdn.mos.cms.futurecdn.net/kjtquRwKv5dLr2fqHMkE3A-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: Meta / Nvidia)</span></figcaption></figure><p>To top this off, AMD is investing $1 billion in Meta. </p><p>In total, that's $4 billion from both companies into Meta, with Meta announcing how it would be spending its money on each respective company. </p><p>AI is huge for all three companies, with <a href="https://www.pcgamer.com/hardware/graphics-cards/nvidia-is-the-worlds-first-usd5-trillion-company-but-ceo-jensen-huangs-nifty-narrative-about-accelerated-computing-and-the-remarkable-foresight-that-led-to-todays-ai-revolution-doesnt-quite-add-up/" target="_blank">Nvidia becoming the world's first $5 trillion company</a> thanks to the technology, and all three companies will want to perpetuate the growth of AI for that reason. </p><p>The AI bubble hasn't burst yet, but it did see a <a href="https://www.pcgamer.com/software/ai/the-ai-bubble-may-not-have-burst-yet-but-usd1-trillion-worth-of-air-appears-to-have-escaped/" target="_blank">$1 trillion decline</a> just a few weeks ago, and the <a href="https://www.theguardian.com/world/2026/oct/27/chinese-markets-lose-trillions-ai-race-beijing" target="_blank">Chinese AI market lost trillions</a> just this week. One could read further investment as a way to keep the bubble floating for a while longer, or just one in a line of many steps from all three companies to get a foot in the door once the AI boom settles. A bubble popping could help gamers eventually get lower-priced memory, but so much of the world's economy is wrapped up in it that it's hard to say just how wide the reverberations would be, for these three companies or the rest of the world. It won't be good.</p><p>The <a href="https://www.wsj.com/economy/the-ai-build-out-is-becoming-the-biggest-economic-bet-in-u-s-history-c60716dd" target="_blank">Wall Street Journal </a>argues AI is "becoming the biggest economic bet in US history". It shows AI spending is significantly bigger, as a percentage of annual infrastructure spending, than telecom and fiber, highways, electric, railroads, and even canals way back in the 1800s. One has to wonder what would happen if that investment suddenly lost its value. </p><p>And even now, the negative impacts of AI is hitting gamers with 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>, where AI is sucking up so much memory that the average gamer has to pay more and more for less capacious memory. And it doesn't just stop at memory. Graphics cards and SSDs have only gotten worse in the pricing department over the last year, and as long as the AI buildout continues, and memory struggles to keep up, that's unlikely to change soon. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/ai/nvidia-and-amd-invest-billions-into-meta-as-companies-egg-each-other-on-to-bet-even-more-on-ai/</link>
                                                                            <description>
                            <![CDATA[ What's $3 billion to a trillion-dollar company? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">jMnJDp85NxiFsuNXLTZazD</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/2W3UP8hvAdpRFHhXqoLnk6-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 27 Oct 2026 16:34:31 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[Software]]></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/2W3UP8hvAdpRFHhXqoLnk6-1920-80.jpg">
                                                            <media:credit><![CDATA[Meta]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Meta + Nvidia&#039;s super computer]]></media:description>                                                            <media:text><![CDATA[Meta + Nvidia&#039;s super computer]]></media:text>
                                <media:title type="plain"><![CDATA[Meta + Nvidia&#039;s super computer]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/2W3UP8hvAdpRFHhXqoLnk6-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>This week both AMD and Nvidia have announced partnerships with Meta, securing both collabs and billions of dollars. All three companies are heavily invested in AI, and these deals are only more fuel for the fire.</p><p><a href="https://nvidianews.nvidia.com/news/nvidia-and-meta-to-expand-collaboration-on-muse-and-muse-family-of-models-amid-robust-growth" target="_blank">Nvidia just announced its deal</a> with Meta to "expand their partnership on Muse and the Muse family of models", and Meta, in turn, will expand Vera Rubin and Vera CPU deployment, as well as deploy Nvidia's Spectrum X Ethernet networking and BlueField-4 DPUs. Though Meta was probably buying all that stuff anyways, right?</p><p>Nvidia also said it was "considering other technological collaborations, including Nvidia OpenShell Reference Architecture to strengthen agency security and Nvidia Sentry for monitoring, structured, unstructured and graph data processing."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>Importantly, Nvidia is also investing $3 billion into Meta. Money that may go elsewhere in Meta under a wholly different account book, but ultimately, Meta is spending a large amount of money on AI hardware from Nvidia. You see what's happening here? Both companies are spending big with one another. </p><p>One day after this announcement, <a href="https://ir.amd.com/news-events/press-releases/detail/1302/amd-and-meta-advance-strategic-partnership-to-power-metas-superintelligence-infrastructure" target="_blank">AMD too declared its partnership</a> with Meta, saying that it would be collaborating on CPU, GPU, networking, systems, and software for Meta's AI infrastructure. AMD also announced that its Helio rackscale solution would be powering Meta's "leading frontier models and services" and that AMD is the "compute engine of choice for Muse and AMD technologies provide Day-0 support for leading Meta models".</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="kjtquRwKv5dLr2fqHMkE3A" name="C - 2026-10-27T162451.251" alt="An image from Nvdia of an AI generated representation of Meta's AI mascot and Jensen Huang next to each other" src="https://cdn.mos.cms.futurecdn.net/kjtquRwKv5dLr2fqHMkE3A-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: Meta / Nvidia)</span></figcaption></figure><p>To top this off, AMD is investing $1 billion in Meta. </p><p>In total, that's $4 billion from both companies into Meta, with Meta announcing how it would be spending its money on each respective company. </p><p>AI is huge for all three companies, with <a href="https://www.pcgamer.com/hardware/graphics-cards/nvidia-is-the-worlds-first-usd5-trillion-company-but-ceo-jensen-huangs-nifty-narrative-about-accelerated-computing-and-the-remarkable-foresight-that-led-to-todays-ai-revolution-doesnt-quite-add-up/" target="_blank">Nvidia becoming the world's first $5 trillion company</a> thanks to the technology, and all three companies will want to perpetuate the growth of AI for that reason. </p><p>The AI bubble hasn't burst yet, but it did see a <a href="https://www.pcgamer.com/software/ai/the-ai-bubble-may-not-have-burst-yet-but-usd1-trillion-worth-of-air-appears-to-have-escaped/" target="_blank">$1 trillion decline</a> just a few weeks ago, and the <a href="https://www.theguardian.com/world/2026/oct/27/chinese-markets-lose-trillions-ai-race-beijing" target="_blank">Chinese AI market lost trillions</a> just this week. One could read further investment as a way to keep the bubble floating for a while longer, or just one in a line of many steps from all three companies to get a foot in the door once the AI boom settles. A bubble popping could help gamers eventually get lower-priced memory, but so much of the world's economy is wrapped up in it that it's hard to say just how wide the reverberations would be, for these three companies or the rest of the world. It won't be good.</p><p>The <a href="https://www.wsj.com/economy/the-ai-build-out-is-becoming-the-biggest-economic-bet-in-u-s-history-c60716dd" target="_blank">Wall Street Journal </a>argues AI is "becoming the biggest economic bet in US history". It shows AI spending is significantly bigger, as a percentage of annual infrastructure spending, than telecom and fiber, highways, electric, railroads, and even canals way back in the 1800s. One has to wonder what would happen if that investment suddenly lost its value. </p><p>And even now, the negative impacts of AI is hitting gamers with 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>, where AI is sucking up so much memory that the average gamer has to pay more and more for less capacious memory. And it doesn't just stop at memory. Graphics cards and SSDs have only gotten worse in the pricing department over the last year, and as long as the AI buildout continues, and memory struggles to keep up, that's unlikely to change soon. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Nvidia may not have discontinued the RTX 5090, but one AIB partner says it can't get hold of the parts required to make the card ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Nvidia's RTX 5090 has been a subject of much speculation recently, as it was rumoured to be discontinued last month when it vanished from the company's official marketplace, <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">only for Nvidia to confirm it wasn't discontinued</a>. The plot has thickened, though, as AIB partners—the companies actually designing and manufacturing RTX 50 series graphics cards—suggest even they can't get their hands on the parts required to make the card. </p><p>This is according to an Nvidia AIB partner who spoke to YouTuber <a href="https://www.youtube.com/watch?v=0t_VkWAD5dU" target="_blank">Der8auer</a>. They say, "No, Nvidia did not inform us that RTX 5090 is EOL. But currently we cannot purchase GB202 [the GPU] together with 32 GB GDDR7 as [a] complete set, and we also don't know if ordering will be possible again in the future."</p><p>The unnamed board partner clarifies that in previous shortages, they could place backorders with Nvidia, but this is "currently not possible anymore."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>This is all to say that this AIB partner is unable to get the GPU and memory required to make the RTX 5090, and doesn't know when that supply issue will be fixed. Though this isn't the card being discontinued, for many partners, not getting the GPU and VRAM is as good as doing so. </p><p>Whether it's the GPU or the memory that's causing the biggest headache isn't specified, though in the current context, one can assume it's likely both to some degree.</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:3216px;"><p class="vanilla-image-block" style="padding-top:56.22%;"><img id="dMHeoyF85ptrkZLthKfisE" name="nvidia-rtx-5090-07" alt="Nvidia RTX 5090 Founders Edition graphics card on different backgrounds" src="https://cdn.mos.cms.futurecdn.net/dMHeoyF85ptrkZLthKfisE-1920-80.jpg" mos="" align="middle" fullscreen="" width="3216" height="1808" 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 of right now, companies are reliant on GPU and VRAM bundles from Nvidia before they can make their own cards. There have previously been r<a href="https://www.pcgamer.com/hardware/graphics-cards/great-new-leak-reveals-nvidia-might-stop-bundling-vram-with-its-gpus-because-who-cares-about-cheap-graphics-cards/" target="_blank">umours that Nvidia would stop bundling its GPUs and VRAM together</a>, but even if it did that, this would only partly solve the issue of the memory crisis for Nvidia. Those who might have been able to buy just the GPU would still be subject to a price squeeze on the VRAM when trying to source it direct from one of the major memory manufacturers.</p><p>Der8auer also spoke to an RTX 5090 cooler manufacturer who said, "Two of our partners already reduced quite much the order forecast for RTX 5090 based heatsinks in Q1 2027, when compare[d] with Q3 2026." </p><p>"For Q2 2027, until now we still did not receive any order for RTX 5090 model heatsinks from our partners."</p><p>Nvidia still remains steadfast in saying the card has not been discontinued, though it acknowledges that limited supply chain capacity has led to a "somewhat constrained" output. Its German branch says, "Nvidia will continue to ship it, and this is very important."</p><p>The RTX 5090 (an already expensive card at its previous MSRP of $2,000) has been prohibitively expensive for months. It's so pricey, in fact, that we stopped tracking it in our <a href="https://www.pcgamer.com/hardware/graphics-cards/graphics-card-price-watch-deals/" target="_blank">graphics card price watch</a>. It has been incredibly difficult to find any of the cards available from reputable sellers at even reasonable prices (with some listed for upwards of <a href="https://www.bestbuy.com/product/asus-rog-astral-nvidia-geforce-rtx-5090-32gb-gddr7-pci-express-5-0-graphics-card-black/JJGGLHJVSV" target="_blank">$8,000 right now</a>) and therefore we could never recommend actually picking one up. Though it may not be officially discontinued, it seems like the likelihood of picking one up soon at a decent price is getting slimmer and slimmer by the day. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/graphics-cards/nvidia-may-not-have-discontinued-the-rtx-5090-but-one-aib-partner-says-it-cant-get-hold-of-the-parts-required-to-make-the-card/</link>
                                                                            <description>
                            <![CDATA[ And RTX 5090s weren't cheap before. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">NhfVXzyrUop7XuvyF76gAV</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/rhWu44sDqYPTAiiJjUGKsE-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 27 Oct 2026 14:22:56 +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/rhWu44sDqYPTAiiJjUGKsE-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia RTX 5090 Founders Edition graphics card on different backgrounds]]></media:description>                                                            <media:text><![CDATA[Nvidia RTX 5090 Founders Edition graphics card on different backgrounds]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia RTX 5090 Founders Edition graphics card on different backgrounds]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/rhWu44sDqYPTAiiJjUGKsE-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Nvidia's RTX 5090 has been a subject of much speculation recently, as it was rumoured to be discontinued last month when it vanished from the company's official marketplace, <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">only for Nvidia to confirm it wasn't discontinued</a>. The plot has thickened, though, as AIB partners—the companies actually designing and manufacturing RTX 50 series graphics cards—suggest even they can't get their hands on the parts required to make the card. </p><p>This is according to an Nvidia AIB partner who spoke to YouTuber <a href="https://www.youtube.com/watch?v=0t_VkWAD5dU" target="_blank">Der8auer</a>. They say, "No, Nvidia did not inform us that RTX 5090 is EOL. But currently we cannot purchase GB202 [the GPU] together with 32 GB GDDR7 as [a] complete set, and we also don't know if ordering will be possible again in the future."</p><p>The unnamed board partner clarifies that in previous shortages, they could place backorders with Nvidia, but this is "currently not possible anymore."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>This is all to say that this AIB partner is unable to get the GPU and memory required to make the RTX 5090, and doesn't know when that supply issue will be fixed. Though this isn't the card being discontinued, for many partners, not getting the GPU and VRAM is as good as doing so. </p><p>Whether it's the GPU or the memory that's causing the biggest headache isn't specified, though in the current context, one can assume it's likely both to some degree.</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:3216px;"><p class="vanilla-image-block" style="padding-top:56.22%;"><img id="dMHeoyF85ptrkZLthKfisE" name="nvidia-rtx-5090-07" alt="Nvidia RTX 5090 Founders Edition graphics card on different backgrounds" src="https://cdn.mos.cms.futurecdn.net/dMHeoyF85ptrkZLthKfisE-1920-80.jpg" mos="" align="middle" fullscreen="" width="3216" height="1808" 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 of right now, companies are reliant on GPU and VRAM bundles from Nvidia before they can make their own cards. There have previously been r<a href="https://www.pcgamer.com/hardware/graphics-cards/great-new-leak-reveals-nvidia-might-stop-bundling-vram-with-its-gpus-because-who-cares-about-cheap-graphics-cards/" target="_blank">umours that Nvidia would stop bundling its GPUs and VRAM together</a>, but even if it did that, this would only partly solve the issue of the memory crisis for Nvidia. Those who might have been able to buy just the GPU would still be subject to a price squeeze on the VRAM when trying to source it direct from one of the major memory manufacturers.</p><p>Der8auer also spoke to an RTX 5090 cooler manufacturer who said, "Two of our partners already reduced quite much the order forecast for RTX 5090 based heatsinks in Q1 2027, when compare[d] with Q3 2026." </p><p>"For Q2 2027, until now we still did not receive any order for RTX 5090 model heatsinks from our partners."</p><p>Nvidia still remains steadfast in saying the card has not been discontinued, though it acknowledges that limited supply chain capacity has led to a "somewhat constrained" output. Its German branch says, "Nvidia will continue to ship it, and this is very important."</p><p>The RTX 5090 (an already expensive card at its previous MSRP of $2,000) has been prohibitively expensive for months. It's so pricey, in fact, that we stopped tracking it in our <a href="https://www.pcgamer.com/hardware/graphics-cards/graphics-card-price-watch-deals/" target="_blank">graphics card price watch</a>. It has been incredibly difficult to find any of the cards available from reputable sellers at even reasonable prices (with some listed for upwards of <a href="https://www.bestbuy.com/product/asus-rog-astral-nvidia-geforce-rtx-5090-32gb-gddr7-pci-express-5-0-graphics-card-black/JJGGLHJVSV" target="_blank">$8,000 right now</a>) and therefore we could never recommend actually picking one up. Though it may not be officially discontinued, it seems like the likelihood of picking one up soon at a decent price is getting slimmer and slimmer by the day. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Bassist plays Halloween gig wearing a Steam Frame: 'Interestingly, only one guy asked me about the Frame' ]]></title>
                                                                                                <dc:content><![CDATA[ <figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/SteamFrame/comments/1xc0jet/playing_a_show_while_wearing_the_frame">Playing a show while wearing the Frame</a><figcaption><cite> from <a href="https://www.reddit.com/r/SteamFrame">r/SteamFrame</a></cite></figcaption></blockquote></figure><script async="" src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p>If you've ever wanted to know what it's like to be a bassist in a band, one Redditor has shared a video recording from their <a href="https://www.pcgamer.com/hardware/vr-hardware/valve-steam-frame-review/" target="_blank">Steam Frame</a>, and it turns out it's purple and filled with strange costumes. Yeah, bassists live strange lives. </p><p>Shared to the <a href="https://www.reddit.com/r/SteamFrame/comments/1xc0jet/playing_a_show_while_wearing_the_frame/?share_id=VrDAwu7r8CZ_716FFmwZW&amp;utm_content=share_button&amp;utm_medium=web3x&amp;utm_name=web3xcss&amp;utm_source=share&amp;utm_term=1" target="_blank">Steam Frame subreddit</a>, user midtech took a 28-second clip of them playing Them Changes by Thundercat at a live gig. They reportedly wore Valve's latest VR headset for a full 45-minute show, with a power bank tucked into their left pocket to keep it charged. </p><p>Midtech says, "Interestingly, only one guy asked me about the Frame."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>The bassist says it was a <a href="https://www.reddit.com/r/SteamFrame/comments/1xc0jet/comment/19rhokf5stygw/?context=3&amp;utm_source=share&amp;utm_medium=web3x&amp;utm_name=web3xcss&amp;utm_term=1&amp;utm_content=share_button" target="_blank">Halloween-themed gig</a>, which probably explains why one member of the band appears to be wearing a onesie, and another is wearing wings. I suppose in that lineup, a Steam Frame on the head likely gives more of a Daft Punk vibe.</p><p>If you're wondering how midtech got colour passthrough on their Steam Frame, they have the Arcturus Vision Camera, a plug-and-play passthrough accessory attached to the headset. The Frame itself is in performance mode, with a 144 Hz refresh rate, and the camera is recording at full resolution at 60 fps. </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="vY4ztJVBw6dNr9Zr4sVMMT" name="IMG_7180" alt="The Steam Frame on the Steam Frame box." src="https://cdn.mos.cms.futurecdn.net/vY4ztJVBw6dNr9Zr4sVMMT-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: Future)</span></figcaption></figure><p>Midtech says, "I really enjoyed how light the Frame was, I barely noticed it when I was playing. The FOV was great when recording my bandmates, but I did have to look down more to see the frets on my bass." They continue, "The Frame itself does get pretty warm while and after recording (but not uncomfortable)."</p><p>As for the purpose of taking a Frame onstage, they say, "I thought it was a neat way to document my band's performance, plus it was a lower stake gig." They say in a different comment that it also means they get to experience it spatially later. </p><p>Midtech also says they like the idea of having tabs, lyrics or a score on the display in the headset, "instead of flipping through them on a music stand (I definitely knocked my iPad off the stand too many times)".</p><p>I can't see this becoming a trend given the battery life of the Steam Frame, and the general uncomfortability of wearing a headset on stage, but it is a fun oddity, and a neat way of viewing life through the eyes of a bassist. We just have to see it from the crowd's point of view next. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/vr-hardware/bassist-plays-halloween-gig-wearing-a-steam-frame-interestingly-only-one-guy-asked-me-about-the-frame/</link>
                                                                            <description>
                            <![CDATA[ Even wearing a VR headset couldn't get anyone to talk to the bassist. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">xchSzjxDSQMVi3CrwHPQGe</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/jiLHdzoc73jVnA2e3xB92N-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 27 Oct 2026 11:46:33 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[VR Hardware]]></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/jiLHdzoc73jVnA2e3xB92N-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Jacob Ridley, Managing Editor for Hardware at PC Gamer, wearing the Steam Frame on his head.]]></media:description>                                                            <media:text><![CDATA[Jacob Ridley, Managing Editor for Hardware at PC Gamer, wearing the Steam Frame on his head.]]></media:text>
                                <media:title type="plain"><![CDATA[Jacob Ridley, Managing Editor for Hardware at PC Gamer, wearing the Steam Frame on his head.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/jiLHdzoc73jVnA2e3xB92N-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/SteamFrame/comments/1xc0jet/playing_a_show_while_wearing_the_frame">Playing a show while wearing the Frame</a><figcaption><cite> from <a href="https://www.reddit.com/r/SteamFrame">r/SteamFrame</a></cite></figcaption></blockquote></figure><script async="" src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p>If you've ever wanted to know what it's like to be a bassist in a band, one Redditor has shared a video recording from their <a href="https://www.pcgamer.com/hardware/vr-hardware/valve-steam-frame-review/" target="_blank">Steam Frame</a>, and it turns out it's purple and filled with strange costumes. Yeah, bassists live strange lives. </p><p>Shared to the <a href="https://www.reddit.com/r/SteamFrame/comments/1xc0jet/playing_a_show_while_wearing_the_frame/?share_id=VrDAwu7r8CZ_716FFmwZW&amp;utm_content=share_button&amp;utm_medium=web3x&amp;utm_name=web3xcss&amp;utm_source=share&amp;utm_term=1" target="_blank">Steam Frame subreddit</a>, user midtech took a 28-second clip of them playing Them Changes by Thundercat at a live gig. They reportedly wore Valve's latest VR headset for a full 45-minute show, with a power bank tucked into their left pocket to keep it charged. </p><p>Midtech says, "Interestingly, only one guy asked me about the Frame."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyGme"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyGme.js" async=""></script><p>The bassist says it was a <a href="https://www.reddit.com/r/SteamFrame/comments/1xc0jet/comment/19rhokf5stygw/?context=3&amp;utm_source=share&amp;utm_medium=web3x&amp;utm_name=web3xcss&amp;utm_term=1&amp;utm_content=share_button" target="_blank">Halloween-themed gig</a>, which probably explains why one member of the band appears to be wearing a onesie, and another is wearing wings. I suppose in that lineup, a Steam Frame on the head likely gives more of a Daft Punk vibe.</p><p>If you're wondering how midtech got colour passthrough on their Steam Frame, they have the Arcturus Vision Camera, a plug-and-play passthrough accessory attached to the headset. The Frame itself is in performance mode, with a 144 Hz refresh rate, and the camera is recording at full resolution at 60 fps. </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="vY4ztJVBw6dNr9Zr4sVMMT" name="IMG_7180" alt="The Steam Frame on the Steam Frame box." src="https://cdn.mos.cms.futurecdn.net/vY4ztJVBw6dNr9Zr4sVMMT-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: Future)</span></figcaption></figure><p>Midtech says, "I really enjoyed how light the Frame was, I barely noticed it when I was playing. The FOV was great when recording my bandmates, but I did have to look down more to see the frets on my bass." They continue, "The Frame itself does get pretty warm while and after recording (but not uncomfortable)."</p><p>As for the purpose of taking a Frame onstage, they say, "I thought it was a neat way to document my band's performance, plus it was a lower stake gig." They say in a different comment that it also means they get to experience it spatially later. </p><p>Midtech also says they like the idea of having tabs, lyrics or a score on the display in the headset, "instead of flipping through them on a music stand (I definitely knocked my iPad off the stand too many times)".</p><p>I can't see this becoming a trend given the battery life of the Steam Frame, and the general uncomfortability of wearing a headset on stage, but it is a fun oddity, and a neat way of viewing life through the eyes of a bassist. We just have to see it from the crowd's point of view next. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Half-Life: Alyx patch adds foveated rendering support a mere 6 years after the game's release ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Half-Life: Alyx appeared to be all done and dusted, with no major updates or patches since 2022. Then along came the <a href="https://www.pcgamer.com/hardware/vr-hardware/valve-steam-frame-review/" target="_blank">Steam Frame</a> and we've a whole new port of the game for its Snapdragon processor. The good news is that you don't need a Steam Frame to benefit from this recent flurry of activity either, as foveated rendering support has now been added to the PC version of the game for a bunch of PCVR headsets.</p><p>In the latest patch, Valve has added the option to toggle foveated rendering within the settings menu of the PC version of <a href="https://www.pcgamer.com/half-life-alyx/" target="_blank">Half-Life: Alyx</a>. </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>"Add a setting under Advanced Performance to enable Foveated Rendering on desktop for supported hardware (for DirectX: Nvidia GTX 16XX+, RTX 20XX+; AMD requires launching with -vulkan). Can increase rendering performance. Enable eye-tracking on your headset for best results. <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=3822057317&amp;snr=___" target="_blank">More information here</a>."</p><p>As Valve notes in the linked documentation, you can technically enable foveated rendering on any virtual reality headset; however, it is best applied in conjunction with eye tracking. Here are some of the headsets noted, including some that require third-party drivers:</p><ul><li>Steam Frame</li><li>Meta Quest Pro</li><li>Bigscreen Beyond 2e</li><li>Apple Vision Pro</li><li>PS VR2</li><li>Pimax Dream Air</li><li>Pimax Crystal series</li><li>Varjo Aero</li><li>And "probably more that we don't know about!"</li></ul><p>Foveated rendering works by rendering the peripheral edge of an image at a lower quality to the centre, thus lowering system demands. Add eye tracking into the mix, and theoretically no matter where the user is focusing their gaze, it's always going to be rendered at the highest quality right there, right in front of the fovea (the central part of the eye with the clearest vision, hence 'foveated').</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="jh9gqV3Jgj5XExGqgodFPT" name="IMG_7116" alt="The Steam Frame's pancake lenses on display." src="https://cdn.mos.cms.futurecdn.net/jh9gqV3Jgj5XExGqgodFPT-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: Future)</span></figcaption></figure><p>This technique is already in use within the Half-Life: Alyx ported to the Frame's Snapdragon chip. That plucky li'l chip needs all the help it can get. </p><p>Contrary to foveated streaming, which is the technology used to do something similar but reduce bandwidth requirements for wireless gaming on the Steam Frame, the foveated rendering implementation is more noticeable in my experience. You can catch the edges of the high- and low-quality areas as you move your eyes around. </p><p></p><p>Still, it's pretty good, and this update is sure to help anyone out that is struggling to play the game at a decent frame rate on a high-resolution headset.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/vr-hardware/half-life-alyx-patch-adds-foveated-rendering-support-a-mere-6-years-after-the-games-release/</link>
                                                                            <description>
                            <![CDATA[ Just took launching a VR headset with eye tracking for Valve to add it. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">vXYLWGSPp9vctN7ZLcvzMR</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/dtkCJbAMguyKDwv9dMQ6ab-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 27 Oct 2026 11:13:22 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[VR Hardware]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&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/dtkCJbAMguyKDwv9dMQ6ab-1920-80.jpg">
                                                            <media:credit><![CDATA[Valve]]></media:credit>
                                                                                                                                                                                                                                                                                                                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/dtkCJbAMguyKDwv9dMQ6ab-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Half-Life: Alyx appeared to be all done and dusted, with no major updates or patches since 2022. Then along came the <a href="https://www.pcgamer.com/hardware/vr-hardware/valve-steam-frame-review/" target="_blank">Steam Frame</a> and we've a whole new port of the game for its Snapdragon processor. The good news is that you don't need a Steam Frame to benefit from this recent flurry of activity either, as foveated rendering support has now been added to the PC version of the game for a bunch of PCVR headsets.</p><p>In the latest patch, Valve has added the option to toggle foveated rendering within the settings menu of the PC version of <a href="https://www.pcgamer.com/half-life-alyx/" target="_blank">Half-Life: Alyx</a>. </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>"Add a setting under Advanced Performance to enable Foveated Rendering on desktop for supported hardware (for DirectX: Nvidia GTX 16XX+, RTX 20XX+; AMD requires launching with -vulkan). Can increase rendering performance. Enable eye-tracking on your headset for best results. <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=3822057317&amp;snr=___" target="_blank">More information here</a>."</p><p>As Valve notes in the linked documentation, you can technically enable foveated rendering on any virtual reality headset; however, it is best applied in conjunction with eye tracking. Here are some of the headsets noted, including some that require third-party drivers:</p><ul><li>Steam Frame</li><li>Meta Quest Pro</li><li>Bigscreen Beyond 2e</li><li>Apple Vision Pro</li><li>PS VR2</li><li>Pimax Dream Air</li><li>Pimax Crystal series</li><li>Varjo Aero</li><li>And "probably more that we don't know about!"</li></ul><p>Foveated rendering works by rendering the peripheral edge of an image at a lower quality to the centre, thus lowering system demands. Add eye tracking into the mix, and theoretically no matter where the user is focusing their gaze, it's always going to be rendered at the highest quality right there, right in front of the fovea (the central part of the eye with the clearest vision, hence 'foveated').</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="jh9gqV3Jgj5XExGqgodFPT" name="IMG_7116" alt="The Steam Frame's pancake lenses on display." src="https://cdn.mos.cms.futurecdn.net/jh9gqV3Jgj5XExGqgodFPT-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: Future)</span></figcaption></figure><p>This technique is already in use within the Half-Life: Alyx ported to the Frame's Snapdragon chip. That plucky li'l chip needs all the help it can get. </p><p>Contrary to foveated streaming, which is the technology used to do something similar but reduce bandwidth requirements for wireless gaming on the Steam Frame, the foveated rendering implementation is more noticeable in my experience. You can catch the edges of the high- and low-quality areas as you move your eyes around. </p><p></p><p>Still, it's pretty good, and this update is sure to help anyone out that is struggling to play the game at a decent frame rate on a high-resolution headset.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ New Windows 11 Insider Experimental build adds the ability to check your internet speed without a browser ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you are part of the Windows 11 Insider program, you may have finally received the option to test your internet speed directly from Quick Settings in the latest experimental build. That means no more going to a browser to see if your new broadband package is as speedy as advertised. </p><p>Those using <a href="https://learn.microsoft.com/en-us/windows-insider/release-notes/experimental/preview-build-26340-9767" target="_blank">Insider Experimental build 26340.9767</a> can simply click on Quick Settings and scroll down to see a speed test button (via <a href="https://www.windowslatest.com/2026/10/24/microsoft-was-using-windows-11s-speed-test-to-push-bing-now-its-quietly-backing-down/" target="_blank">Windows Latest</a>). You can also find the network icon in the system tray, right-click it, and then select "Test internet speed". This will give you your download and upload speeds. </p><p>Up until now, Windows 11 users have been able to access an internet speed test from Windows settings, but clicking on it redirects you to a browser and then runs the test via Bing. It's a small barrier but still an annoying hurdle to get to a fairly simple tool. </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>Alongside this, Preview Build 26340.9767 adds feature flags (so you can filter your machine by which options are enabled / disabled), Quick Settings now gives access to mobile phones, it adds a Magnifier keyboard shortcut, it gives an easier way to access your Microsoft 365 subscription, and a few other things. </p><p>If you'd like to get access to the latest Insider Preview Builds, you can simply <a href="https://www.microsoft.com/en-us/windowsinsider/getting-started" target="_blank">register to become an insider</a>, then go into your Windows update settings, and select the latest option. Naturally, there's some risk with trying out developing tech, and the experience likely won't be as smooth as the traditional Windows build, but you do get access to some new features early. </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="yEMK6QNhtXcquwrZJYVkoB" name="Windowsupdate" alt="A photo of a gaming monitor displaying queued Windows updates" src="https://cdn.mos.cms.futurecdn.net/yEMK6QNhtXcquwrZJYVkoB-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: Future)</span></figcaption></figure><p>As well as this, there's technically no guarantee that any Insider updates will actually come to the stable build of Windows 11. Insiders are sort of like beta testers for Windows software, and if enough feedback suggests the implementation is poor, Microsoft could listen to that and remove it from future updates. </p><p>Still, being able to check your internet connection speed without accessing a browser feels like an uncontroversial update. Skipping any barriers to get that information quicker feels beneficial to the end user, and I can certainly see myself using it next time I need to test it. Or, most likely, if I want to complain about how slow my speed is going on a given day. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/windows/new-windows-11-insider-experimental-build-adds-the-ability-to-check-your-internet-speed-without-a-browser/</link>
                                                                            <description>
                            <![CDATA[ A small change, but a handy one. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">zp5NGxDwGHPUhTKtQkQtpR</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/XPNunYuTzxJd3VH9mGq7tR-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 26 Oct 2026 17:29:05 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Windows]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></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/XPNunYuTzxJd3VH9mGq7tR-1920-80.jpg">
                                                            <media:credit><![CDATA[Microsoft]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Microsoft&#039;s Internet speed test, in Bing]]></media:description>                                                            <media:text><![CDATA[Microsoft&#039;s Internet speed test, in Bing]]></media:text>
                                <media:title type="plain"><![CDATA[Microsoft&#039;s Internet speed test, in Bing]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/XPNunYuTzxJd3VH9mGq7tR-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you are part of the Windows 11 Insider program, you may have finally received the option to test your internet speed directly from Quick Settings in the latest experimental build. That means no more going to a browser to see if your new broadband package is as speedy as advertised. </p><p>Those using <a href="https://learn.microsoft.com/en-us/windows-insider/release-notes/experimental/preview-build-26340-9767" target="_blank">Insider Experimental build 26340.9767</a> can simply click on Quick Settings and scroll down to see a speed test button (via <a href="https://www.windowslatest.com/2026/10/24/microsoft-was-using-windows-11s-speed-test-to-push-bing-now-its-quietly-backing-down/" target="_blank">Windows Latest</a>). You can also find the network icon in the system tray, right-click it, and then select "Test internet speed". This will give you your download and upload speeds. </p><p>Up until now, Windows 11 users have been able to access an internet speed test from Windows settings, but clicking on it redirects you to a browser and then runs the test via Bing. It's a small barrier but still an annoying hurdle to get to a fairly simple tool. </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>Alongside this, Preview Build 26340.9767 adds feature flags (so you can filter your machine by which options are enabled / disabled), Quick Settings now gives access to mobile phones, it adds a Magnifier keyboard shortcut, it gives an easier way to access your Microsoft 365 subscription, and a few other things. </p><p>If you'd like to get access to the latest Insider Preview Builds, you can simply <a href="https://www.microsoft.com/en-us/windowsinsider/getting-started" target="_blank">register to become an insider</a>, then go into your Windows update settings, and select the latest option. Naturally, there's some risk with trying out developing tech, and the experience likely won't be as smooth as the traditional Windows build, but you do get access to some new features early. </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="yEMK6QNhtXcquwrZJYVkoB" name="Windowsupdate" alt="A photo of a gaming monitor displaying queued Windows updates" src="https://cdn.mos.cms.futurecdn.net/yEMK6QNhtXcquwrZJYVkoB-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: Future)</span></figcaption></figure><p>As well as this, there's technically no guarantee that any Insider updates will actually come to the stable build of Windows 11. Insiders are sort of like beta testers for Windows software, and if enough feedback suggests the implementation is poor, Microsoft could listen to that and remove it from future updates. </p><p>Still, being able to check your internet connection speed without accessing a browser feels like an uncontroversial update. Skipping any barriers to get that information quicker feels beneficial to the end user, and I can certainly see myself using it next time I need to test it. Or, most likely, if I want to complain about how slow my speed is going on a given day. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ A whole host of Steam PC games can now run locally on a jailbroken PlayStation 5, including Portal, Left 4 Dead 2, and many more ]]></title>
                                                                                                <dc:content><![CDATA[ <p>What a time to be alive. Gamers are starting to play Steam games locally on jailbroken PlayStation 5 consoles, thanks to several projects that aim to bring PC gaming to the Sony-loving masses. One such project is <a href="https://github.com/leolobato/playden-ps5" target="_blank">Playden for PS5</a>, which was made publicly available earlier this month.</p><p>The program functions as a Steam launcher, but also creates a private Windows environment via prospero-win, a port of Wine for PlayStation 5 (via <a href="https://videocardz.com/newz/gamers-are-now-playing-steam-games-directly-on-playstation-5-no-streaming-required" target="_blank">Videocardz</a>). The software has support for up to Direct3D 11 through DXVK and Direct3D 12 games through VKD3D-Proton, and includes a separate runtime kit for the graphics drivers, along with specific app shells for the games themselves.</p><p>"It downloads a game, prepares it, and hands it to a separate PS5 app made for that game. That app starts Wine with the game's settings," says the readme on the project's GitHub page. "Because each game is its own app, it has its own tile on the PS5 Home screen, and it is isolated: its files, settings and crashes stay inside it."</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>Reddit user Cevap has <a href="https://www.reddit.com/r/PS5_Jailbreak/comments/1x53iry/testing_steam_games_on_playden/" target="_blank">posted a video of their jailbroken PS5 playing Portal locally</a>. "Game runs as you expect," says Cevap. "Only issue being you can’t use a mouse cursor, nor can you press ESC to go to the options. Otherwise basic controls work. What an amazing project, thank you!"</p><p>In the case of Playden for PS5, the GitHub page stresses that the software is in an early alpha state, so it's probably best not to expect too much from it at this stage. The <a href="https://github.com/leolobato/playden-ps5/blob/main/COMPATIBILITY.md" target="_blank">compatible games</a> list is pretty chonky, though, including some pretty big hitters. Just be prepared for crashes if you give it a go yourself.</p><figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/PS5_Jailbreak/comments/1x53iry/testing_steam_games_on_playden">Testing Steam games on Playden!</a><figcaption><cite> from <a href="https://www.reddit.com/r/PS5_Jailbreak">r/PS5_Jailbreak</a></cite></figcaption></blockquote></figure><script async="" src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p>It must also be mentioned that, aside from the risks of jailbreaking a PS5 in the first place, users also need to log in to their official Steam accounts to use the software. "Valve does not support third-party clients," say the devs "We know of no account problems from this, but the risk is yours to accept."</p><p>It's also quite an involved process to get it working by the looks of things, so this is probably one for advanced users. Still, I guess I can chalk this up as "things I thought I'd never see." An increasingly long list in 2026, it seems.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/a-whole-host-of-steam-pc-games-can-now-run-locally-on-a-jailbroken-playstation-5-including-portal-left-4-dead-2-and-many-more/</link>
                                                                            <description>
                            <![CDATA[ I never thought I'd see the day. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">bN3ob95CnxuMaBeNDEELKk</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ZknvaoNEWA5JE3dS92VY77-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 26 Oct 2026 16:56:44 +0000</pubDate>                                                                                                                                <updated>Mon, 26 Oct 2026 16:57:08 +0000</updated>
                                                                                                                                            <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/ZknvaoNEWA5JE3dS92VY77-1920-80.jpg">
                                                            <media:credit><![CDATA[Valve/Sony]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A split image of a screenshot from the game Portal, and a PlayStation 5 console]]></media:description>                                                            <media:text><![CDATA[A split image of a screenshot from the game Portal, and a PlayStation 5 console]]></media:text>
                                <media:title type="plain"><![CDATA[A split image of a screenshot from the game Portal, and a PlayStation 5 console]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ZknvaoNEWA5JE3dS92VY77-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>What a time to be alive. Gamers are starting to play Steam games locally on jailbroken PlayStation 5 consoles, thanks to several projects that aim to bring PC gaming to the Sony-loving masses. One such project is <a href="https://github.com/leolobato/playden-ps5" target="_blank">Playden for PS5</a>, which was made publicly available earlier this month.</p><p>The program functions as a Steam launcher, but also creates a private Windows environment via prospero-win, a port of Wine for PlayStation 5 (via <a href="https://videocardz.com/newz/gamers-are-now-playing-steam-games-directly-on-playstation-5-no-streaming-required" target="_blank">Videocardz</a>). The software has support for up to Direct3D 11 through DXVK and Direct3D 12 games through VKD3D-Proton, and includes a separate runtime kit for the graphics drivers, along with specific app shells for the games themselves.</p><p>"It downloads a game, prepares it, and hands it to a separate PS5 app made for that game. That app starts Wine with the game's settings," says the readme on the project's GitHub page. "Because each game is its own app, it has its own tile on the PS5 Home screen, and it is isolated: its files, settings and crashes stay inside it."</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>Reddit user Cevap has <a href="https://www.reddit.com/r/PS5_Jailbreak/comments/1x53iry/testing_steam_games_on_playden/" target="_blank">posted a video of their jailbroken PS5 playing Portal locally</a>. "Game runs as you expect," says Cevap. "Only issue being you can’t use a mouse cursor, nor can you press ESC to go to the options. Otherwise basic controls work. What an amazing project, thank you!"</p><p>In the case of Playden for PS5, the GitHub page stresses that the software is in an early alpha state, so it's probably best not to expect too much from it at this stage. The <a href="https://github.com/leolobato/playden-ps5/blob/main/COMPATIBILITY.md" target="_blank">compatible games</a> list is pretty chonky, though, including some pretty big hitters. Just be prepared for crashes if you give it a go yourself.</p><figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/PS5_Jailbreak/comments/1x53iry/testing_steam_games_on_playden">Testing Steam games on Playden!</a><figcaption><cite> from <a href="https://www.reddit.com/r/PS5_Jailbreak">r/PS5_Jailbreak</a></cite></figcaption></blockquote></figure><script async="" src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p>It must also be mentioned that, aside from the risks of jailbreaking a PS5 in the first place, users also need to log in to their official Steam accounts to use the software. "Valve does not support third-party clients," say the devs "We know of no account problems from this, but the risk is yours to accept."</p><p>It's also quite an involved process to get it working by the looks of things, so this is probably one for advanced users. Still, I guess I can chalk this up as "things I thought I'd never see." An increasingly long list in 2026, it seems.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Valve adds CD-ROM support to Steam Frame kernel less than ten minutes after saying it would look into it ]]></title>
                                                                                                <dc:content><![CDATA[ <p>You can truly never anticipate how one might use their tech. After a <a href="https://steamcommunity.com/app/4165890/discussions/0/571552431431751057/" target="_blank">Steam Frame owner asked why the VR headset didn't work with their detachable disc drive</a>, Valve developer gaberow said they were looking into it—and patched in kernel support mere minutes later.</p><p>As spotted by <a href="https://www.tomshardware.com/virtual-reality/valve-adds-cd-rom-drive-support-to-steam-frame-kernel-took-less-than-ten-minutes-update-comes-one-day-after-user-requests-for-capability-in-the-steam-community-forum" target="_blank">Tom's Hardware</a>, AiodensGhost asked for the feature on October 18, gaberowe responded on October 19, then made the <a href="https://github.com/evlaV/deckard-linux-no-oopsies/commit/b68e4a18b07b527336e8e42db5381d84f82daab0" target="_blank">commit to the Steam Frame kernel</a> in less than ten minutes.</p><p>If you're wondering why someone would  want CD-ROM support, AiodensGhost says, "I wanted to use my Steam Frame to be able to watch a movie on the road, and thought it was no big deal to use the detachable disc drive I had on my computer."</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>They continue, "Turns out that the Frame cannot power the player and even if it could it lacks the drivers to read a disc. Valve, this not only killed my ability to watch a movie, IT KILLED MY ABILITY TO INSTALL MY ABANDONWARE FROM 2006. You don't sell NFS Carbon anymore."</p><p>The mention of Need for Speed Carbon is interesting here, as it suggests one might opt to boot up a game on the Steam Frame from a CD-ROM drive, rather than streaming one from a library. Carbon is not officially on Steam (or any legal digital storefronts as far as I can see), so the only way to legally play some games on the Steam Frame would be via an old disc.</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="vY4ztJVBw6dNr9Zr4sVMMT" name="IMG_7180" alt="The Steam Frame on the Steam Frame box." src="https://cdn.mos.cms.futurecdn.net/vY4ztJVBw6dNr9Zr4sVMMT-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: Future)</span></figcaption></figure><p>The Steam Frame does seem primarily built for use in VR games, but given its comfort and screen, it would make sense why one might enjoy it for 2D games and movies. CD-ROM support would make the device a little more versatile. </p><p>One thing that is worth noting here is that kernel-level support doesn't mean that all Steam Frame units will officially gain the feature. It means Valve could implement the change in a future Steam Frame update should it want to. Given the public reply from a developer and the kernel change, my money is on official support arriving in the future, but Valve could always opt not to do so. </p><p>Should you want to add it yourself, you can install the kernel on your device via the '<a href="https://github.com/evlaV/deckard-linux-no-oopsies/commit/b68e4a18b07b527336e8e42db5381d84f82daab0" target="_blank">Deckard Linux no oopsies</a>' repo, instead of waiting for any sort of official update. But I'd hazard a guess that those looking for disc drive support are fairly few in the first place. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/vr-hardware/valve-adds-cd-rom-support-to-steam-frame-kernel-less-than-ten-minutes-after-saying-it-would-look-into-it/</link>
                                                                            <description>
                            <![CDATA[ That was fast. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">qSjhCr6mr4PnxVHC59zR4S</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Jxk6NCA9KSnag5KwJx3fQT-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 26 Oct 2026 16:11:08 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[VR Hardware]]></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/Jxk6NCA9KSnag5KwJx3fQT-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The left and right Steam Frame controllers on the Steam Frame box.]]></media:description>                                                            <media:text><![CDATA[The left and right Steam Frame controllers on the Steam Frame box.]]></media:text>
                                <media:title type="plain"><![CDATA[The left and right Steam Frame controllers on the Steam Frame box.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Jxk6NCA9KSnag5KwJx3fQT-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>You can truly never anticipate how one might use their tech. After a <a href="https://steamcommunity.com/app/4165890/discussions/0/571552431431751057/" target="_blank">Steam Frame owner asked why the VR headset didn't work with their detachable disc drive</a>, Valve developer gaberow said they were looking into it—and patched in kernel support mere minutes later.</p><p>As spotted by <a href="https://www.tomshardware.com/virtual-reality/valve-adds-cd-rom-drive-support-to-steam-frame-kernel-took-less-than-ten-minutes-update-comes-one-day-after-user-requests-for-capability-in-the-steam-community-forum" target="_blank">Tom's Hardware</a>, AiodensGhost asked for the feature on October 18, gaberowe responded on October 19, then made the <a href="https://github.com/evlaV/deckard-linux-no-oopsies/commit/b68e4a18b07b527336e8e42db5381d84f82daab0" target="_blank">commit to the Steam Frame kernel</a> in less than ten minutes.</p><p>If you're wondering why someone would  want CD-ROM support, AiodensGhost says, "I wanted to use my Steam Frame to be able to watch a movie on the road, and thought it was no big deal to use the detachable disc drive I had on my computer."</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>They continue, "Turns out that the Frame cannot power the player and even if it could it lacks the drivers to read a disc. Valve, this not only killed my ability to watch a movie, IT KILLED MY ABILITY TO INSTALL MY ABANDONWARE FROM 2006. You don't sell NFS Carbon anymore."</p><p>The mention of Need for Speed Carbon is interesting here, as it suggests one might opt to boot up a game on the Steam Frame from a CD-ROM drive, rather than streaming one from a library. Carbon is not officially on Steam (or any legal digital storefronts as far as I can see), so the only way to legally play some games on the Steam Frame would be via an old disc.</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="vY4ztJVBw6dNr9Zr4sVMMT" name="IMG_7180" alt="The Steam Frame on the Steam Frame box." src="https://cdn.mos.cms.futurecdn.net/vY4ztJVBw6dNr9Zr4sVMMT-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: Future)</span></figcaption></figure><p>The Steam Frame does seem primarily built for use in VR games, but given its comfort and screen, it would make sense why one might enjoy it for 2D games and movies. CD-ROM support would make the device a little more versatile. </p><p>One thing that is worth noting here is that kernel-level support doesn't mean that all Steam Frame units will officially gain the feature. It means Valve could implement the change in a future Steam Frame update should it want to. Given the public reply from a developer and the kernel change, my money is on official support arriving in the future, but Valve could always opt not to do so. </p><p>Should you want to add it yourself, you can install the kernel on your device via the '<a href="https://github.com/evlaV/deckard-linux-no-oopsies/commit/b68e4a18b07b527336e8e42db5381d84f82daab0" target="_blank">Deckard Linux no oopsies</a>' repo, instead of waiting for any sort of official update. But I'd hazard a guess that those looking for disc drive support are fairly few in the first place. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'I no longer think we’re going to be able to patch all bugs' says AI Pandora's box opener Sam Altman: 'We're going to have to completely switch the defense model' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you've watched as many Sam Altman interviews as I have, you'll know he's not shy when it comes to recounting a previously held opinion. <a href="https://www.youtube.com/watch?v=anAmTGcewX8" target="_blank">Speaking at the Stanford Graduate School of Business last week</a>, the OpenAI CEO spoke about AI safety, particularly in regards to cybersecurity.</p><p>"The cybersecurity..." Altman begins, before pausing. "I don't even know a dramatic enough word to use...  but the problem coming towards us is still something that we have not, as organizational leaders, or countries, or individuals taken seriously."</p><p>"There was a moment earlier this year where... it was like the Mythos freak out, or whatever people called it, and I think things did get somewhat better. Like, people definitely patched some bugs," the OpenAI CEO continues. "But it was another one of these cases where people didn't really intuit the exponential."</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>"I don't think most people said, okay, the models are going to get much smarter," says Altman. "They can probably find bugs, like crazy bugs, you know, bugs that are outside of the normal threat model of what we think a hacker can do. Largely speaking, I think most organizational leaders have somewhat moved on, and the models have kept going."</p><p>"And I I no longer think we're going to be able to just patch all the bugs. I think we're going to have to completely switch the defense model to using the same technology for a new kind of defense shield."</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:3830px;"><p class="vanilla-image-block" style="padding-top:56.42%;"><img id="WxALC8fwhZcpyi3icDHT4g" name="GettyImages-2236544326" alt="Sam Altman, chief executive officer of OpenAI Inc., during a media tour of the Stargate AI data center in Abilene, Texas, US, on Tuesday, Sept. 23, 2025." src="https://cdn.mos.cms.futurecdn.net/WxALC8fwhZcpyi3icDHT4g-1920-80.jpg" mos="" align="middle" fullscreen="" width="3830" height="2161" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Kyle Grillot/Bloomberg via Getty Images)</span></figcaption></figure><p>"I think it's a huge safety and security issue, and I am somewhat astonished at how relatively little attention it's getting," he concludes.</p><p>Certainly, Anthropic's Claude Mythos model created an eye-opening moment upon its release earlier this year, with the model supposedly finding thousands of vulnerabilities in "<a href="https://www.pcgamer.com/software/ai/anthropics-new-claude-mythos-ai-model-has-apparently-found-thousands-of-vulnerabilities-in-every-major-operating-system-and-every-major-web-browser-along-with-a-range-of-other-important-pieces-of-software/" target="_blank">every major operating system and every major web browser</a>," among others. </p><p>And after the <a href="https://www.pcgamer.com/software/security/we-expect-mass-attacks-to-start-within-15-minutes-of-the-release-web-admins-braced-for-emergency-php-updates-to-plug-leaked-high-severity-holes/" target="_blank">PHP vulnerability reveal</a> last week, in which web admins scrambled to update website code to fix two critical security vulnerabilities discovered by AI, the suggestion that some sort of AI-based defense system might be of more use than a standard patching procedure certainly seems timely.</p><p>But the idea that AI itself could solve the cybersecurity problem really does feel like a snake eating its own tail. Especially coming from the CEO of a company that hit the headlines earlier this year after its own <a href="https://www.pcgamer.com/software/ai/openai-admits-several-of-its-ai-models-breached-testing-and-hacked-into-a-startups-network-by-themselves-calling-it-an-unprecedented-cyber-incident/" target="_blank">AI agents hacked their way into an outside organisation</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:1152px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WRRAUXqbGsgDwwb93woGtg" name="OpenAIlogo" alt="A smart phone lies screen up on an integrated laptop keyboard. The phone screen displays the OpenAI logo in white. Moody purple lighting colours the scene." src="https://cdn.mos.cms.futurecdn.net/WRRAUXqbGsgDwwb93woGtg-1920-80.jpg" mos="" align="middle" fullscreen="" width="1152" height="648" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jaque Silva/NurPhoto via Getty Images)</span></figcaption></figure><p>It's also entirely unsurprising to see one of the chief architects of the AI revolution suggest that the technology is advancing at such a rapid rate that the only thing powerful enough to keep up with it might be AI itself. </p><p>2026 has been a scary year for those of us concerned with the state of cybersecurity. Bad actors seem to be <a href="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/" target="_blank">continually leveraging AI tech to further their nefarious goals</a>, and while AI models exposing vulnerabilities to be fixed might seem like a net gain, we seem to increasingly find ourselves caught in a battle between the forces of AI good, and the forces of AI evil.</p><p>All of which is to say, here's hoping the "good guys" win. Whoever they are at this point. It's becoming increasingly harder to tell, don't you think?</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/software/ai/i-no-longer-think-were-going-to-be-able-to-patch-all-bugs-says-ai-pandoras-box-opener-sam-altman-were-going-to-have-to-completely-switch-the-defense-model/</link>
                                                                            <description>
                            <![CDATA[ Cool, I'll get right on it. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">5uxDepLxyPJVq6qn8wiCw8</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vz5qBaqfd6NbMao4igEKVN-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 26 Oct 2026 15:24:27 +0000</pubDate>                                                                                                                                <updated>Mon, 26 Oct 2026 20:41:59 +0000</updated>
                                                                                                                                            <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[Software]]></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/vz5qBaqfd6NbMao4igEKVN-1920-80.jpg">
                                                            <media:credit><![CDATA[Stanford Graduate School of Business]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A still from a YouTube video of OpenAI CEO Sam Altman speaking at the Standford Graduate School of Business]]></media:description>                                                            <media:text><![CDATA[A still from a YouTube video of OpenAI CEO Sam Altman speaking at the Standford Graduate School of Business]]></media:text>
                                <media:title type="plain"><![CDATA[A still from a YouTube video of OpenAI CEO Sam Altman speaking at the Standford Graduate School of Business]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vz5qBaqfd6NbMao4igEKVN-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you've watched as many Sam Altman interviews as I have, you'll know he's not shy when it comes to recounting a previously held opinion. <a href="https://www.youtube.com/watch?v=anAmTGcewX8" target="_blank">Speaking at the Stanford Graduate School of Business last week</a>, the OpenAI CEO spoke about AI safety, particularly in regards to cybersecurity.</p><p>"The cybersecurity..." Altman begins, before pausing. "I don't even know a dramatic enough word to use...  but the problem coming towards us is still something that we have not, as organizational leaders, or countries, or individuals taken seriously."</p><p>"There was a moment earlier this year where... it was like the Mythos freak out, or whatever people called it, and I think things did get somewhat better. Like, people definitely patched some bugs," the OpenAI CEO continues. "But it was another one of these cases where people didn't really intuit the exponential."</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>"I don't think most people said, okay, the models are going to get much smarter," says Altman. "They can probably find bugs, like crazy bugs, you know, bugs that are outside of the normal threat model of what we think a hacker can do. Largely speaking, I think most organizational leaders have somewhat moved on, and the models have kept going."</p><p>"And I I no longer think we're going to be able to just patch all the bugs. I think we're going to have to completely switch the defense model to using the same technology for a new kind of defense shield."</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:3830px;"><p class="vanilla-image-block" style="padding-top:56.42%;"><img id="WxALC8fwhZcpyi3icDHT4g" name="GettyImages-2236544326" alt="Sam Altman, chief executive officer of OpenAI Inc., during a media tour of the Stargate AI data center in Abilene, Texas, US, on Tuesday, Sept. 23, 2025." src="https://cdn.mos.cms.futurecdn.net/WxALC8fwhZcpyi3icDHT4g-1920-80.jpg" mos="" align="middle" fullscreen="" width="3830" height="2161" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Kyle Grillot/Bloomberg via Getty Images)</span></figcaption></figure><p>"I think it's a huge safety and security issue, and I am somewhat astonished at how relatively little attention it's getting," he concludes.</p><p>Certainly, Anthropic's Claude Mythos model created an eye-opening moment upon its release earlier this year, with the model supposedly finding thousands of vulnerabilities in "<a href="https://www.pcgamer.com/software/ai/anthropics-new-claude-mythos-ai-model-has-apparently-found-thousands-of-vulnerabilities-in-every-major-operating-system-and-every-major-web-browser-along-with-a-range-of-other-important-pieces-of-software/" target="_blank">every major operating system and every major web browser</a>," among others. </p><p>And after the <a href="https://www.pcgamer.com/software/security/we-expect-mass-attacks-to-start-within-15-minutes-of-the-release-web-admins-braced-for-emergency-php-updates-to-plug-leaked-high-severity-holes/" target="_blank">PHP vulnerability reveal</a> last week, in which web admins scrambled to update website code to fix two critical security vulnerabilities discovered by AI, the suggestion that some sort of AI-based defense system might be of more use than a standard patching procedure certainly seems timely.</p><p>But the idea that AI itself could solve the cybersecurity problem really does feel like a snake eating its own tail. Especially coming from the CEO of a company that hit the headlines earlier this year after its own <a href="https://www.pcgamer.com/software/ai/openai-admits-several-of-its-ai-models-breached-testing-and-hacked-into-a-startups-network-by-themselves-calling-it-an-unprecedented-cyber-incident/" target="_blank">AI agents hacked their way into an outside organisation</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:1152px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WRRAUXqbGsgDwwb93woGtg" name="OpenAIlogo" alt="A smart phone lies screen up on an integrated laptop keyboard. The phone screen displays the OpenAI logo in white. Moody purple lighting colours the scene." src="https://cdn.mos.cms.futurecdn.net/WRRAUXqbGsgDwwb93woGtg-1920-80.jpg" mos="" align="middle" fullscreen="" width="1152" height="648" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jaque Silva/NurPhoto via Getty Images)</span></figcaption></figure><p>It's also entirely unsurprising to see one of the chief architects of the AI revolution suggest that the technology is advancing at such a rapid rate that the only thing powerful enough to keep up with it might be AI itself. </p><p>2026 has been a scary year for those of us concerned with the state of cybersecurity. Bad actors seem to be <a href="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/" target="_blank">continually leveraging AI tech to further their nefarious goals</a>, and while AI models exposing vulnerabilities to be fixed might seem like a net gain, we seem to increasingly find ourselves caught in a battle between the forces of AI good, and the forces of AI evil.</p><p>All of which is to say, here's hoping the "good guys" win. Whoever they are at this point. It's becoming increasingly harder to tell, don't you think?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Phantom Blade Zero devs say the game needs 300 GB of free space for the pre-load process, alongside updated system requirements ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.pcgamer.com/phantom-blade-zero/" target="_blank">Phantom Blade Zero</a>, the upcoming action RPG from Chinese studio S-Game, is looking mighty impressive, and the Unreal Engine 5 game even has fairly modest system requirements too. Yet, according to the latest update from the devs, you will need quite a lot of room on your SSD if you plan on playing it. </p><p>Taking to its <a href="https://x.com/pbzero_official/status/2114401628191441135/photo/2" target="_blank">X account,</a> Phantom Blade Zero's developer gave some information before the launch date, October 28. The studio clarifies the game is a whopping 145 GB once installed, and you will need "at least 300 GB of free disk space for the pre-load process."</p><p>That is a hefty install size, and a hefty amount of temporary space to keep free for the preload decompression, too. The studio also clarifies you need an SSD to play the game, and instructs users to download the latest graphics drivers ahead of the big day. The pre-load process starts on October 26. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async=""></script><div ><table><caption>Phantom Blade Zero system requirements</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Minimum</strong></p></td><td  ><p><strong>Recommended</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Processor</strong></p></td><td  ><p><a href="https://www.pcgamer.com/intels-8th-gen-processors-deliver-a-huge-jump-in-performance/" target="_blank">Intel Core i7 8700K</a> / AMD Ryzen 5 3600</p></td><td  ><p><a href="https://www.pcgamer.com/intel-core-i5-10600k-review-benchmarks-gaming-performance/" target="_blank">Intel Core i5 10600K</a> / <a href="https://www.pcgamer.com/amd-ryzen-5-5600x-review-benchmarks/" target="_blank">AMD Ryzen 5 5600X</a></p></td></tr><tr><td class="firstcol " ><p><strong>Memory</strong></p></td><td  ><p>16 GB</p></td><td  ><p>16 GB</p></td></tr><tr><td class="firstcol " ><p><strong>Graphics card</strong></p></td><td  ><p><a href="https://www.pcgamer.com/nvidia-geforce-gtx-1660-review/" target="_blank">Nvidia GeForce GTX 1660 6 GB</a> / <a href="https://www.pcgamer.com/amd-radeon-rx-5500-xt-4gb-review/" target="_blank">AMD Radeon RX 5500 XT</a> 8 GB</p></td><td  ><p><a href="https://www.pcgamer.com/nvidia-rtx-3060-ti-review-benchmarks-performance/" target="_blank">Nvidia GeForce RTX 3060 Ti 8 GB</a> / <a href="https://www.pcgamer.com/amd-radeon-rx-6700-xt-review-benchmarks/" target="_blank">AMD Radeon RX 6700 XT 12 GB </a></p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>145 GB (SSD required)</p></td><td  ><p>145 GB (SSD required)</p></td></tr><tr><td class="firstcol " ><p><strong>Notes</strong></p></td><td  ><p>Ray tracing and path tracing disabled / 1080p 30 fps with upscaling</p></td><td  ><p>Ray tracing and path tracing disabled / 1440p 60 fps with upscaling</p></td></tr></tbody></table></div><p>The other system requirements aren't too bad, with an Intel Core i7 8700K or AMD Ryzen 5 3600 paired with an Nvidia GeForce GTX 1660 or AMD Radeon RX 5500 XT needed to run the game on Minimum settings. </p><p>Minimum in this case, however, means getting 30 fps at 1080p resolution, presumably on the lowest graphical settings with upscaling enabled. We don't yet know what kind of upscaling is being used for this requirement. </p><p>To play the game at its recommended settings (1440p at 60 fps), you will need an Intel Core i5 10600K or AMD Ryzen 5 5600X with an Nvidia GeForce RTX 3060 Ti or an AMD Radeon RX 6700 XT. </p><p>These specs don't seem too bad for an Unreal Engine 5 game, though we don't know exactly which graphical settings or upscaling settings are being used to get this figure. </p><p>Still, for many, the biggest problem will be that monstrous preload and install size. I know I personally don't have a single game on my SSD as big as Phantom Blade Zero, and I'd want to make some room before the big day. 145 GB could fit around 2,400 copies of Balatro, so I've just got to hope it's worth it. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/phantom-blade-zero-devs-say-the-game-needs-300-gb-of-free-space-for-the-pre-load-process-alongside-updated-system-requirements/</link>
                                                                            <description>
                            <![CDATA[ You might need to make some space. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">o8kzGna7o9HjSiXK8MeFMA</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/bWxx5zX7KNQdQJjhwE8fYd-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 26 Oct 2026 14:21:32 +0000</pubDate>                                                                                                                                                                                                                                <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/bWxx5zX7KNQdQJjhwE8fYd-1920-80.jpg">
                                                            <media:credit><![CDATA[S-Game]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Phantom Blade Zero kungfupunk action]]></media:description>                                                            <media:text><![CDATA[Phantom Blade Zero kungfupunk action]]></media:text>
                                <media:title type="plain"><![CDATA[Phantom Blade Zero kungfupunk action]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/bWxx5zX7KNQdQJjhwE8fYd-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.pcgamer.com/phantom-blade-zero/" target="_blank">Phantom Blade Zero</a>, the upcoming action RPG from Chinese studio S-Game, is looking mighty impressive, and the Unreal Engine 5 game even has fairly modest system requirements too. Yet, according to the latest update from the devs, you will need quite a lot of room on your SSD if you plan on playing it. </p><p>Taking to its <a href="https://x.com/pbzero_official/status/2114401628191441135/photo/2" target="_blank">X account,</a> Phantom Blade Zero's developer gave some information before the launch date, October 28. The studio clarifies the game is a whopping 145 GB once installed, and you will need "at least 300 GB of free disk space for the pre-load process."</p><p>That is a hefty install size, and a hefty amount of temporary space to keep free for the preload decompression, too. The studio also clarifies you need an SSD to play the game, and instructs users to download the latest graphics drivers ahead of the big day. The pre-load process starts on October 26. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async=""></script><div ><table><caption>Phantom Blade Zero system requirements</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Minimum</strong></p></td><td  ><p><strong>Recommended</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Processor</strong></p></td><td  ><p><a href="https://www.pcgamer.com/intels-8th-gen-processors-deliver-a-huge-jump-in-performance/" target="_blank">Intel Core i7 8700K</a> / AMD Ryzen 5 3600</p></td><td  ><p><a href="https://www.pcgamer.com/intel-core-i5-10600k-review-benchmarks-gaming-performance/" target="_blank">Intel Core i5 10600K</a> / <a href="https://www.pcgamer.com/amd-ryzen-5-5600x-review-benchmarks/" target="_blank">AMD Ryzen 5 5600X</a></p></td></tr><tr><td class="firstcol " ><p><strong>Memory</strong></p></td><td  ><p>16 GB</p></td><td  ><p>16 GB</p></td></tr><tr><td class="firstcol " ><p><strong>Graphics card</strong></p></td><td  ><p><a href="https://www.pcgamer.com/nvidia-geforce-gtx-1660-review/" target="_blank">Nvidia GeForce GTX 1660 6 GB</a> / <a href="https://www.pcgamer.com/amd-radeon-rx-5500-xt-4gb-review/" target="_blank">AMD Radeon RX 5500 XT</a> 8 GB</p></td><td  ><p><a href="https://www.pcgamer.com/nvidia-rtx-3060-ti-review-benchmarks-performance/" target="_blank">Nvidia GeForce RTX 3060 Ti 8 GB</a> / <a href="https://www.pcgamer.com/amd-radeon-rx-6700-xt-review-benchmarks/" target="_blank">AMD Radeon RX 6700 XT 12 GB </a></p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>145 GB (SSD required)</p></td><td  ><p>145 GB (SSD required)</p></td></tr><tr><td class="firstcol " ><p><strong>Notes</strong></p></td><td  ><p>Ray tracing and path tracing disabled / 1080p 30 fps with upscaling</p></td><td  ><p>Ray tracing and path tracing disabled / 1440p 60 fps with upscaling</p></td></tr></tbody></table></div><p>The other system requirements aren't too bad, with an Intel Core i7 8700K or AMD Ryzen 5 3600 paired with an Nvidia GeForce GTX 1660 or AMD Radeon RX 5500 XT needed to run the game on Minimum settings. </p><p>Minimum in this case, however, means getting 30 fps at 1080p resolution, presumably on the lowest graphical settings with upscaling enabled. We don't yet know what kind of upscaling is being used for this requirement. </p><p>To play the game at its recommended settings (1440p at 60 fps), you will need an Intel Core i5 10600K or AMD Ryzen 5 5600X with an Nvidia GeForce RTX 3060 Ti or an AMD Radeon RX 6700 XT. </p><p>These specs don't seem too bad for an Unreal Engine 5 game, though we don't know exactly which graphical settings or upscaling settings are being used to get this figure. </p><p>Still, for many, the biggest problem will be that monstrous preload and install size. I know I personally don't have a single game on my SSD as big as Phantom Blade Zero, and I'd want to make some room before the big day. 145 GB could fit around 2,400 copies of Balatro, so I've just got to hope it's worth it. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Leaked video shows hundreds, possibly thousands of brand-new RTX 5090s being dismantled for AI server usage in Chinese factory ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Consumer RTX 5090 stock in the US (and many other countries) seems to be virtually non-existent at the moment, despite <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">Nvidia's claims that production is still ongoing</a>. So, what's happening to all those brand new consumer cards?</p><p>A leaked video reportedly taken from inside a Chinese factory may have the answer. <a href="https://x.com/hkepcmedia/status/2113602817244242037" target="_blank">Posted by HKEPC on X</a>, the footage shows what appears to be a huge number of consumer RTX 5090 cards being dismantled en masse for AI server conversion (via <a href="https://www.tomshardware.com/pc-components/gpus/leaked-video-exposes-how-chinese-factories-are-stripping-rtx-5090s-to-fuel-ai-custom-partner-cards-to-nvidia-founders-editions-on-the-chopping-block" target="_blank">Tom's Hardware</a>). </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2113602817244242037"><p lang="en" dir="ltr">【太精彩了吧 😱】近日，社交媒體 X 上流出多段顯示卡改裝工場內部影片，可以看到大量 GeForce RTX 5090 頂級遊戲顯示卡並未流向一般消費級零售市場，而是被整批運往大型改裝工廠。廠內工人在具備完整流水線的作業環境下，進行大規模拆解與改裝，將原本針對電競設計的三風扇散熱架構全數替換為 Dual Slot 渦輪散熱器，以符合 AI 伺服器機箱的高密度排列需求。 https://t.co/2wzPmweU3s從曝光的工廠現場畫面可見，流水線工作枱上堆滿了來自各大廠商的 GeForce RTX 5090 零售彩盒包裝與全新裸卡，甚至連 NVIDIA 自家 GeForce RTX 5090 FE 也有。工人正以熟練的工序，迅速卸除原廠龐大的風扇與散熱鰭片模組，將完整的 PCB 電路板分離出來。隨後，GPU 與 VRAM 會被「吹」出來移植至另一片 PCB 上，再統一換裝上厚度僅有 2-Slot 的厚銅底座渦輪鼓風散熱系統。 改裝完畢後，廠方隨即將顯示卡送往專門的測試檢驗產線。在多組相連的開放式測試平台上，數十張已換裝渦輪散熱器的顯示卡正同步運行圖形效能負載與穩定性跑分測試，確保每張改裝後的繪圖卡皆能正常運作。通過嚴格檢測的顯示卡將被分層整齊陳列並重新裝箱，準備直接交付給相關客戶，流程非常專業。 傳統消費級高階顯示卡通常採用三風扇大型散熱設計，厚度普遍佔用 3 至 4 個插槽，且出風方向為機箱內部側吹，難以在 4U 伺服器或多卡並聯環境中並排安裝。換裝雙槽渦輪散熱系統後，散熱器能利用鼓風風扇將廢熱直接排出機箱後方，大幅提升多卡伺服器內部的散熱效率與空間相容性。 面對 AI 運算需求持續殷切，在算力緊缺的情況下，GeForce RTX 5090 遊戲顯示卡依然是 AI 算力市場的熱門替代品。目前，GeForce RTX 5090 售價已經被炒上接近一萬美元水平，這個價位遊戲玩家根本無力負擔。<a href="https://twitter.com/cantworkitout/status/2113602817244242037">October 23, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Workers are shown dismantling the GPUs, removing their three-fan coolers and heatsinks, and stacking the PCBs for conversion to dual-slot cooler configurations suitable for AI server racks. The scale of the operation looks truly vast, with what looks to be hundreds, possibly thousands, of GPUs getting the chop shop treatment.</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>According to HKEPC, the GPU and VRAM are desoldered and transplanted to a separate PCB ready for cooler transplant. Once converted into an AI server-suitable form factor, the GPUs are then tested on vast arrays of benchmarking rigs, ready to begin their new lives as AI workhorses rather than consumer graphics crunchers.</p><p>The horror, the horror, etc. These "grey market" facilities are said to be scattered throughout the country, despite the RTX 5090 not officially being available for sale in China. Nevertheless, this facility looks to be stuffed full of the highly prized GPUs, with skilled technicians pulling them apart for repurposing.</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:3392px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="nZAQu9r9L63cUZYG8y4hsE" name="nvidia-rtx-5090-10" alt="Nvidia RTX 5090 Founders Edition graphics card on different backgrounds" src="https://cdn.mos.cms.futurecdn.net/nZAQu9r9L63cUZYG8y4hsE-1920-80.jpg" mos="" align="middle" fullscreen="" width="3392" height="1908" 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>Reports of this sort of activity are nothing new, but this footage showing the scale of a single operation is still unsettling. If facilities like this are hoovering up GPUs and converting them at this sort of rate, it's perhaps no surprise that RTX 5090 consumer cards have become so difficult to find elsewhere.</p><p>We've stopped tracking the GPU in recent months on our <a href="https://www.pcgamer.com/hardware/graphics-cards/graphics-card-price-watch-deals/" target="_blank">GPU price watch</a> page, as the only US listings we can find are from third-party sellers for vastly inflated prices. A gaming GPU for $8,000+ simply makes no sense at all, even if it happens to be Nvidia's top-level card for this generation. </p><p>And to see them being converted for, shock horror, AI crunching instead of good old gaming purposes? Well, chalk up another way <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">AI server demand is making 2026 a year to forget</a> for consumer PC hardware.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/graphics-cards/leaked-video-shows-hundreds-possibly-thousands-of-brand-new-rtx-5090s-being-dismantled-for-ai-server-usage-in-chinese-factory/</link>
                                                                            <description>
                            <![CDATA[ So that's where they're going. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ctbi8D3cRfZyji7dnpkniR</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Ttr285rsKsf9FVGqV7Nvv6-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 26 Oct 2026 12:28:15 +0000</pubDate>                                                                                                                                <updated>Mon, 26 Oct 2026 12:28:39 +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/Ttr285rsKsf9FVGqV7Nvv6-1920-80.jpg">
                                                            <media:credit><![CDATA[Maxis, Electronic Arts/Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A split image of a character from The Sims looking shocked opposite a close up of the RTX 5090 text on a graphics card]]></media:description>                                                            <media:text><![CDATA[A split image of a character from The Sims looking shocked opposite a close up of the RTX 5090 text on a graphics card]]></media:text>
                                <media:title type="plain"><![CDATA[A split image of a character from The Sims looking shocked opposite a close up of the RTX 5090 text on a graphics card]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Ttr285rsKsf9FVGqV7Nvv6-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Consumer RTX 5090 stock in the US (and many other countries) seems to be virtually non-existent at the moment, despite <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">Nvidia's claims that production is still ongoing</a>. So, what's happening to all those brand new consumer cards?</p><p>A leaked video reportedly taken from inside a Chinese factory may have the answer. <a href="https://x.com/hkepcmedia/status/2113602817244242037" target="_blank">Posted by HKEPC on X</a>, the footage shows what appears to be a huge number of consumer RTX 5090 cards being dismantled en masse for AI server conversion (via <a href="https://www.tomshardware.com/pc-components/gpus/leaked-video-exposes-how-chinese-factories-are-stripping-rtx-5090s-to-fuel-ai-custom-partner-cards-to-nvidia-founders-editions-on-the-chopping-block" target="_blank">Tom's Hardware</a>). </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2113602817244242037"><p lang="en" dir="ltr">【太精彩了吧 😱】近日，社交媒體 X 上流出多段顯示卡改裝工場內部影片，可以看到大量 GeForce RTX 5090 頂級遊戲顯示卡並未流向一般消費級零售市場，而是被整批運往大型改裝工廠。廠內工人在具備完整流水線的作業環境下，進行大規模拆解與改裝，將原本針對電競設計的三風扇散熱架構全數替換為 Dual Slot 渦輪散熱器，以符合 AI 伺服器機箱的高密度排列需求。 https://t.co/2wzPmweU3s從曝光的工廠現場畫面可見，流水線工作枱上堆滿了來自各大廠商的 GeForce RTX 5090 零售彩盒包裝與全新裸卡，甚至連 NVIDIA 自家 GeForce RTX 5090 FE 也有。工人正以熟練的工序，迅速卸除原廠龐大的風扇與散熱鰭片模組，將完整的 PCB 電路板分離出來。隨後，GPU 與 VRAM 會被「吹」出來移植至另一片 PCB 上，再統一換裝上厚度僅有 2-Slot 的厚銅底座渦輪鼓風散熱系統。 改裝完畢後，廠方隨即將顯示卡送往專門的測試檢驗產線。在多組相連的開放式測試平台上，數十張已換裝渦輪散熱器的顯示卡正同步運行圖形效能負載與穩定性跑分測試，確保每張改裝後的繪圖卡皆能正常運作。通過嚴格檢測的顯示卡將被分層整齊陳列並重新裝箱，準備直接交付給相關客戶，流程非常專業。 傳統消費級高階顯示卡通常採用三風扇大型散熱設計，厚度普遍佔用 3 至 4 個插槽，且出風方向為機箱內部側吹，難以在 4U 伺服器或多卡並聯環境中並排安裝。換裝雙槽渦輪散熱系統後，散熱器能利用鼓風風扇將廢熱直接排出機箱後方，大幅提升多卡伺服器內部的散熱效率與空間相容性。 面對 AI 運算需求持續殷切，在算力緊缺的情況下，GeForce RTX 5090 遊戲顯示卡依然是 AI 算力市場的熱門替代品。目前，GeForce RTX 5090 售價已經被炒上接近一萬美元水平，這個價位遊戲玩家根本無力負擔。<a href="https://twitter.com/cantworkitout/status/2113602817244242037">October 23, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Workers are shown dismantling the GPUs, removing their three-fan coolers and heatsinks, and stacking the PCBs for conversion to dual-slot cooler configurations suitable for AI server racks. The scale of the operation looks truly vast, with what looks to be hundreds, possibly thousands, of GPUs getting the chop shop treatment.</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>According to HKEPC, the GPU and VRAM are desoldered and transplanted to a separate PCB ready for cooler transplant. Once converted into an AI server-suitable form factor, the GPUs are then tested on vast arrays of benchmarking rigs, ready to begin their new lives as AI workhorses rather than consumer graphics crunchers.</p><p>The horror, the horror, etc. These "grey market" facilities are said to be scattered throughout the country, despite the RTX 5090 not officially being available for sale in China. Nevertheless, this facility looks to be stuffed full of the highly prized GPUs, with skilled technicians pulling them apart for repurposing.</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:3392px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="nZAQu9r9L63cUZYG8y4hsE" name="nvidia-rtx-5090-10" alt="Nvidia RTX 5090 Founders Edition graphics card on different backgrounds" src="https://cdn.mos.cms.futurecdn.net/nZAQu9r9L63cUZYG8y4hsE-1920-80.jpg" mos="" align="middle" fullscreen="" width="3392" height="1908" 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>Reports of this sort of activity are nothing new, but this footage showing the scale of a single operation is still unsettling. If facilities like this are hoovering up GPUs and converting them at this sort of rate, it's perhaps no surprise that RTX 5090 consumer cards have become so difficult to find elsewhere.</p><p>We've stopped tracking the GPU in recent months on our <a href="https://www.pcgamer.com/hardware/graphics-cards/graphics-card-price-watch-deals/" target="_blank">GPU price watch</a> page, as the only US listings we can find are from third-party sellers for vastly inflated prices. A gaming GPU for $8,000+ simply makes no sense at all, even if it happens to be Nvidia's top-level card for this generation. </p><p>And to see them being converted for, shock horror, AI crunching instead of good old gaming purposes? Well, chalk up another way <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">AI server demand is making 2026 a year to forget</a> for consumer PC hardware.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Korean police arrest cyberhacking gang reportedly led by self-taught hacker, who allegedly used AI to breach 60 firms and received a mere $210 in ransom ]]></title>
                                                                                                <dc:content><![CDATA[ <p>As AI continues to get smarter, the schemes using it have often become more successful. However, one South Korean cyberhacking gang, reportedly led by a self-taught hacker using AI tools, doesn't seem to have made off with a king's ransom. </p><p>Despite allegedly obtaining 8.2 million records and demanding 360,000,000 Won (around $271.77K) from victims, the gang is said to have ended up receiving 300,000 Won (around $210). This is according to <a href="https://en.yna.co.kr/view/AEN20261026005800315" target="_blank">Yonhap News Agency</a>, <a href="https://en.sedaily.com/society/2026/10/26/self-taught-hacker-used-ai-to-steal-82-million-records" target="_blank">Seoul Economic Daily</a>, and <a href="https://www.chosun.com/english/national-en/2026/10/26/O5G6E63B2JAFREUULLMFJONGOY/" target="_blank">The Chosun Daily</a>, which corroborate reports. </p><p>Altogether, the gang reportedly accessed files from over 90 firms, but 60 successful hits came from hacks using AI tools (a mixture of AI coding and an autonomous penetration testing system). The stolen data is said to have included customer information like names, registration numbers, phone numbers, and addresses. </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 cyberhacking gang is also said to have sent threatening emails to those affected, saying, "If the data breach becomes public, the company’s reputation will be damaged, and government fines may be imposed." Payment info was not caught up in these breaches, and South Korean police say stolen data has not yet made it onto the dark web. </p><p>As noted by The Chosun Daily, police got to the ring fast, which might explain why only one small business appears to have paid the ransom fee. Police received a complaint from an affected company in June of this year, but the investigation officially started in August, leading to the arrest of seven individuals between July and September, including the 32-year-old alleged ringleader. </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:6998px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="dcBbYJeH9xN4gK6jiyhNNm" name="hacker-green-code" alt="Hacker, IT and person with code on computer, programming and phishing scam with malware or virus." src="https://cdn.mos.cms.futurecdn.net/dcBbYJeH9xN4gK6jiyhNNm-1920-80.jpg" mos="" align="middle" fullscreen="" width="6998" height="3937" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: seksan Mongkhonkhamsao @ Getty Images)</span></figcaption></figure><p>Reportedly, the ringleader majored in arts and physical education with no IT background, but learned about hacking via YouTube videos and other unnamed sources. The police believe the individuals worked on simulated hacking at a security firm between 2019 and 2022. </p><p>38 of the affected firms reportedly suffered losses, though no total monetary figure has been declared for how big those losses might be. </p><p>Still, the fact that a gang led by someone with little hacking experience managed to use AI tools to get access to secure data is certainly a worrying use case for the budding technology. And it's not the first time we've seen AI tools used in such a way. At the start of the year, <a href="https://www.pcgamer.com/software/ai/google-has-published-a-list-of-ways-ai-is-currently-being-used-by-threat-actors-to-more-efficiently-hack-you/" target="_blank">Google published a list </a>of ways AI is being used by threat actors to more efficiently hack businesses and individuals. </p><p>As AI continues to advance, this sort of activity appears to be becoming increasingly common. Although if the gains are sometimes as small as those reported here, perhaps it's an indication that cybercrime isn't always as lucrative as some might hope.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/korean-police-arrest-cyberhacking-gang-reportedly-led-by-self-taught-hacker-who-allegedly-used-ai-to-breach-60-firms-and-received-a-mere-usd210-in-ransom/</link>
                                                                            <description>
                            <![CDATA[ In this case, crime really didn't pay. Much. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">BEo2dXKTnfUqofc3s8Si4d</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/tv5e8eVbT7uQcLL7Dtt3bZ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 26 Oct 2026 12:00:52 +0000</pubDate>                                                                                                                                                                                                                                <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/tv5e8eVbT7uQcLL7Dtt3bZ-1920-80.jpg">
                                                            <media:credit><![CDATA[Westend61]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Person typing on a laptop with red and blue lighting]]></media:description>                                                            <media:text><![CDATA[Person typing on a laptop with red and blue lighting]]></media:text>
                                <media:title type="plain"><![CDATA[Person typing on a laptop with red and blue lighting]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/tv5e8eVbT7uQcLL7Dtt3bZ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>As AI continues to get smarter, the schemes using it have often become more successful. However, one South Korean cyberhacking gang, reportedly led by a self-taught hacker using AI tools, doesn't seem to have made off with a king's ransom. </p><p>Despite allegedly obtaining 8.2 million records and demanding 360,000,000 Won (around $271.77K) from victims, the gang is said to have ended up receiving 300,000 Won (around $210). This is according to <a href="https://en.yna.co.kr/view/AEN20261026005800315" target="_blank">Yonhap News Agency</a>, <a href="https://en.sedaily.com/society/2026/10/26/self-taught-hacker-used-ai-to-steal-82-million-records" target="_blank">Seoul Economic Daily</a>, and <a href="https://www.chosun.com/english/national-en/2026/10/26/O5G6E63B2JAFREUULLMFJONGOY/" target="_blank">The Chosun Daily</a>, which corroborate reports. </p><p>Altogether, the gang reportedly accessed files from over 90 firms, but 60 successful hits came from hacks using AI tools (a mixture of AI coding and an autonomous penetration testing system). The stolen data is said to have included customer information like names, registration numbers, phone numbers, and addresses. </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 cyberhacking gang is also said to have sent threatening emails to those affected, saying, "If the data breach becomes public, the company’s reputation will be damaged, and government fines may be imposed." Payment info was not caught up in these breaches, and South Korean police say stolen data has not yet made it onto the dark web. </p><p>As noted by The Chosun Daily, police got to the ring fast, which might explain why only one small business appears to have paid the ransom fee. Police received a complaint from an affected company in June of this year, but the investigation officially started in August, leading to the arrest of seven individuals between July and September, including the 32-year-old alleged ringleader. </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:6998px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="dcBbYJeH9xN4gK6jiyhNNm" name="hacker-green-code" alt="Hacker, IT and person with code on computer, programming and phishing scam with malware or virus." src="https://cdn.mos.cms.futurecdn.net/dcBbYJeH9xN4gK6jiyhNNm-1920-80.jpg" mos="" align="middle" fullscreen="" width="6998" height="3937" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: seksan Mongkhonkhamsao @ Getty Images)</span></figcaption></figure><p>Reportedly, the ringleader majored in arts and physical education with no IT background, but learned about hacking via YouTube videos and other unnamed sources. The police believe the individuals worked on simulated hacking at a security firm between 2019 and 2022. </p><p>38 of the affected firms reportedly suffered losses, though no total monetary figure has been declared for how big those losses might be. </p><p>Still, the fact that a gang led by someone with little hacking experience managed to use AI tools to get access to secure data is certainly a worrying use case for the budding technology. And it's not the first time we've seen AI tools used in such a way. At the start of the year, <a href="https://www.pcgamer.com/software/ai/google-has-published-a-list-of-ways-ai-is-currently-being-used-by-threat-actors-to-more-efficiently-hack-you/" target="_blank">Google published a list </a>of ways AI is being used by threat actors to more efficiently hack businesses and individuals. </p><p>As AI continues to advance, this sort of activity appears to be becoming increasingly common. Although if the gains are sometimes as small as those reported here, perhaps it's an indication that cybercrime isn't always as lucrative as some might hope.</p>
                                                            </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>
            </channel>
</rss>