<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="https://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"
>
    <channel>
                    <atom:link rel="alternate" hreflang="en-GB"
                       href="https://www.pcgamer.com/uk/feeds/tag/game-pads/"
                       type="application/rss+xml"/>
                            <title><![CDATA[ Latest from PC Gamer UK in Game-pads ]]></title>
                <link>https://www.pcgamer.com/uk/hardware/controllers/game-pads</link>
        <description><![CDATA[ All the latest game-pads content from the PC Gamer  UK team ]]></description>
                                    <lastBuildDate>Fri, 19 Jun 2026 01:26:31 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ Steam Controller demand is so high that new reservations won't be fulfilled until 2027 ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/steam-controller-demand-is-so-high-that-new-reservations-wont-be-fulfilled-until-2027/</link>
                                                                            <description>
                            <![CDATA[ The queue system has been tweaked to give more useful shipping estimations, but they're not encouraging. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Q9R7Hac6FzTD35qhkGqoQP</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/eodU4CmU7kSxoUnAF2T6HY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 19 Jun 2026 01:26:31 +0000</pubDate>                                                                                                                                <updated>Fri, 19 Jun 2026 09:00:26 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/eodU4CmU7kSxoUnAF2T6HY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/eodU4CmU7kSxoUnAF2T6HY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Valve is struggling to meet demand for its <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a>. The trackpad-equipped gamepad <a href="https://www.pcgamer.com/hardware/controllers/valve-says-steam-controller-sold-out-faster-than-we-anticipated-but-previously-told-us-it-has-knobs-it-can-turn-to-get-more">quickly sold out</a> when it released in early May, and ever since there's been a reservation system similar to the one once used for Steam Deck. </p><p>And people have been using it, to such an extent that Valve has needed to upgrade the system to manage expectations regarding when you'll actually get one. "When we launched Steam Controller last month, we quickly saw that initial demand exceeded our expectations," Valve writes in <a href="https://store.steampowered.com/news/group/45479024/view/697641379212297809" target="_blank">an update</a>. </p><p>"We have no plans to stop making Steam Controller. But as we look at the current demand compared to how many we know we can make by the end of the year, we want to manage expectations as much as we can with regards to when folks can expect to receive their order."</p><p>To get to the point: if you're not in the queue already you probably won't get a Steam Controller until 2027. One of my colleagues based in the United States joined the queue today and their "estimated order availability" is 2027. It's the same for me in Australia.</p><p>According to Valve the reservation page now shows one of three estimated shipping windows, including "by September 2026", "by December 2026", and "in 2027", with more specific timing for the latter to come later. If you joined the queue already you can <a href="https://store.steampowered.com/hardware/steamcontroller">revisit the page</a> and it'll show you which of those three categories you fit in.</p><p>Still, I do wonder how many of those in the queue have decided they're <em>definitely </em>going to buy a Steam Controller. It's possible to reserve your place without placing a deposit, so there's really no harm in registering your interest even if you're not committed to making the purchase. When something is in such hot demand, it's probably smarter to make the reservation than to not, because what if you change your mind between now and next year? What if the Steam Machine proves so mindblowing that the Steam Controller becomes an essential piece of kit? </p><p>Whatever the case, once your ticket is called you have 72 hours to make the purchase before you lose your place in the queue. With Steam Machine and Steam Frame seemingly imminent, I'd be very surprised if we don't see the same situation with those.</p><div class="product"><a data-dimension112="4be7c8ea-2c7b-4913-93e5-39a9b98bb90a" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="4be7c8ea-2c7b-4913-93e5-39a9b98bb90a" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Hear the Steam Controller sing whole songs with haptics, including the Wii Store soundtrack, Still Alive, and even attempt a Rick Roll ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/hear-the-steam-controller-sing-whole-songs-with-haptics-including-the-wii-store-soundtrack-still-alive-and-even-attempt-a-rick-roll/</link>
                                                                            <description>
                            <![CDATA[ This was a triumph. I'm making a note here, 'huge success'. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">yw3oLW8un3JcQr3SGBzNoA</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vkFPQdKBSBXq7oQu3T6JKY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 15 May 2026 13:23:51 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/vkFPQdKBSBXq7oQu3T6JKY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk in front of a Steam Deck.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk in front of a Steam Deck.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk in front of a Steam Deck.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vkFPQdKBSBXq7oQu3T6JKY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> is full of surprises. It screams when you drop it and it even sings songs if you program it to. You don't have to program it yourself, however, just drop a MIDI track into this software on Github and it'll do its best to to sing its little heart out.</p><p>It's called <a href="https://github.com/CrazyCritic89/SteamHapticsSinger" target="_blank">SteamHapticsSinger</a> and it's been recently published by CrazyCritic89. Though it's a fork of previous iterations of the same software originally created 10 years ago for the Steam Controller (2015), from <a href="https://gitlab.com/Pilatomic/SteamControllerSinger" target="_blank">Pila</a> and <a href="https://github.com/Roboron3042/SteamControllerSinger" target="_blank">Roboron3042</a>, this time with fixes and upgrades for the new Steam device.</p><p>Here's the application in action, using a MIDI file of Portal's 'Still Alive' included with the package.</p><iframe src="https://content.jwplatform.com/players/3HLoXsqj.html" id="3HLoXsqj" title="Steam Controller Songs" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>I also gave it a go with the Wii Shop Soundtrack, which was musical perfection in rumble form.</p><iframe src="https://content.jwplatform.com/players/eKXyKGDO.html" id="eKXyKGDO" title="Wii Song" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>And another absolute smash-hit.</p><iframe src="https://content.jwplatform.com/players/l2USK1C6.html" id="l2USK1C6" title="Astley" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>Alright, so it couldn't quite pull off a Rick Roll, nor match the musical genius of Rick Astley. But it's still hella impressive. </p><p>You can throw a bunch of MIDI files at the software and see what sounds good. You just drag and drop onto the exe file. You do need <a href="https://github.com/daynix/usbdk/releases" target="_blank">USBDK</a> to get the software working in the first instance, however, but it should also work with the <a href="https://www.pcgamer.com/steam-deck-review/" target="_blank">Steam Deck</a> and original <a href="https://www.pcgamer.com/hardware/controllers/steam-controller-re-review-a-fresh-look-at-valves-flawed-but-influential-10-year-old-controller/" target="_blank">Steam Controller</a> too. I'm just waiting for someone to lash 20 of these things together and start an orchestra. Though maybe once that reservation queue is a little lower, yeah?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Steam Controllers to come back in stock with reprise of Steam Deck reservation system ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/steam-controllers-to-come-back-in-stock-with-reprise-of-steam-deck-reservation-system/</link>
                                                                            <description>
                            <![CDATA[ I shall have my revenge. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">KA2h2KumLg2gEGYFQhpXsC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/rJZF2ynFyLsqQj769NLLTY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 07 May 2026 18:32:04 +0000</pubDate>                                                                                                                                <updated>Fri, 08 May 2026 10:59:08 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ ted.litchfield@futurenet.com (Ted Litchfield) ]]></author>                    <dc:creator><![CDATA[ Ted Litchfield ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/8DyQVBz7FCynDY9QiJyH9D.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/rJZF2ynFyLsqQj769NLLTY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/rJZF2ynFyLsqQj769NLLTY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://store.steampowered.com/news/group/45479024/view/702141174212725149" target="_blank">Valve has announced</a> that the next wave of <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controllers</a> will only be purchasable through a reservation system similar to the one used early in the Steam Deck's life cycle. The announcement post does not specify when, exactly, this next round of controllers will make it into customers' hands, but reservations are set to open tomorrow, May 8, at 10 AM Pacific / 1 PM Central / 6 PM BST.</p><p>Valve will open a "reservation queue" at that time. "Once you reserve, your place in line will be saved," the company wrote in its <a href="https://store.steampowered.com/news/group/45479024/view/702141174212725149" target="_blank">announcement post</a>. "When we go back in stock, order emails will be sent in the same order that reservations were made."</p><p>Valve is at least as unhappy as we are to see how quickly Steam Controller orders <a href="https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/" target="_blank">started turning around on eBay</a>, so in addition to the queue, the company is bringing back familiar restrictions to who can reserve a Steam Controller order:</p><ul><li>Only one per customer.</li><li>You get three days to act on your reservation once the controller's back in stock.</li><li>If you already bought a Steam Controller, you can't make a reservation.</li><li>Your Steam account has to be "in good standing" and have made a purchase prior to April 27.</li></ul><p>Reservation priority is going to the US and Canada first, with initial reservation fulfillment—when you can actually place your order, basically— starting the week of May 11, while the UK, Europe, and Australia will see their reservations fulfilled "in the following weeks." </p><p>The first round of orders initially had three to five day shipping estimates, increasing to six to ten days as demand surged⁠—it's unclear what final delivery timetables will look like with round two.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XkGmNX"></div>                            </div>                            <script src="https://kwizly.com/embed/XkGmNX.js" async></script><p>This seems like a smart move after the <a href="https://www.pcgamer.com/hardware/controllers/the-steam-controller-sold-out-in-30-minutes-utterly-breaking-steam-in-the-process/" target="_blank">first wave of Steam Controllers sold out in just 30 minutes</a>, causing payment processing errors across the Steam Store in the process. This is basically the same system Valve used at the beginning of the Steam Deck's availability, and I gotta say I find it preferable to the law of the jungle. Even if you're waiting a long time regardless, at least it feels fair and there's a process to trust.</p><p>That Valve didn't opt for reservations in the first wave speaks to how much it was <a href="https://www.pcgamer.com/hardware/controllers/valve-says-steam-controller-sold-out-faster-than-we-anticipated-but-previously-told-us-it-has-knobs-it-can-turn-to-get-more/" target="_blank">genuinely caught off-guard</a> by the Steam Controller's popularity. If I had to hazard a guess, I would assume that Valve was planning on reservations for Steam Machines and open season for Steam Controllers. With its hardware launches now hindered by AI-related component shortages, consumer demand only has the Steam Controller to focus on.</p><div class="product"><a data-dimension112="dc9b8ba2-5956-40bb-9905-2abdcf61e454" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="dc9b8ba2-5956-40bb-9905-2abdcf61e454" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ eBay resellers are turning a tidy profit on Steam Controllers ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/</link>
                                                                            <description>
                            <![CDATA[ Valve's new Steam Controller sold out quickly, creating an opportunity for tech scalpers. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Z7Xh7g6gCt8YKiLpNkFhUR</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/N5LjdCUeFRwxbkLri6SyKY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 04 May 2026 22:03:19 +0000</pubDate>                                                                                                                                <updated>Mon, 04 May 2026 23:03:11 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ tyler@pcgamer.com (Tyler Wilde) ]]></author>                    <dc:creator><![CDATA[ Tyler Wilde ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/rGvfSUkSBEPzBAVS3jRh9E.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/N5LjdCUeFRwxbkLri6SyKY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/N5LjdCUeFRwxbkLri6SyKY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It only took 30 minutes for Valve's first stock of <a href="https://www.pcgamer.com/hardware/controllers/the-steam-controller-sold-out-in-30-minutes-utterly-breaking-steam-in-the-process/">new Steam Controllers to sell out</a>. Some of us at PC Gamer managed to order them, while others were turned away by Steam errors and will have to wait for a restock.</p><p>For impatient people with money to burn, confirmed orders of the controllers <a href="https://www.ebay.com/sch/i.html?_nkw=steam+controller&_sacat=0&_from=R40&_sop=10" target="_blank">immediately hit eBay</a>, where they're successfully selling for as much as $300. That's a 200% markup on the $99 that Valve is offering them for. (One person is asking for $735,889.32, but unsurprisingly, no one is biting.)</p><p>Measures like order quantity limits have helped curb the reselling of in-demand tech, but there doesn't seem to be any way to completely prevent the unpopular behavior aside from having a stock surplus. It's too late for that in this case, though we might not have to wait too long for that $99 order button to light up again. Prior to today's launch, Valve said that it was prepared to ramp up production if needed.</p><p>"We do think we'll have a good amount of stock around the world for the launch," Valve designer Lawrence Yang <a href="https://www.pcgamer.com/hardware/game-pads/valve-is-bullish-on-global-steam-controller-availability-we-have-knobs-we-can-turn-to-try-to-get-things-to-people-faster/">told PC Gamer</a> in April. "So and then, at the factory, if we're like, 'Oh, we actually probably need to make more,' then we can turn that knob up and have them producing more."</p><p>The original Steam Controller from 2015 <a href="https://www.pcgamer.com/hardware/controllers/steam-controller-re-review-a-fresh-look-at-valves-flawed-but-influential-10-year-old-controller/">was a curiosity </a>that could never quite be described as popular, but "second time's the charm," Jacob wrote in his 83% <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/">review of the 2026 Steam Controller</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XkGmNX"></div>                            </div>                            <script src="https://kwizly.com/embed/XkGmNX.js" async></script><p>So it's a good controller, but the hunger for it may partially be down to anticipation for Valve's other new hardware, particularly its new Steam Machine, which has been delayed due to speculative AI investing <a href="https://www.pcgamer.com/hardware/memory/this-is-the-first-time-where-im-seeing-no-light-at-the-end-of-the-tunnel-how-the-memory-crisis-is-hitting-pc-builders/">driving up RAM prices</a>. </p><p>I've asked Valve for more info on when we can expect Steam Controllers to be back in stock, and will update this post when we learn more.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Raspberry Pi-based homebrew dongle enables full wireless Sony DualSense controller functionality on the PC including haptics ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/raspberry-pi-based-homebrew-dongle-enables-full-wireless-sony-dualsense-controller-functionality-on-the-pc-including-haptics/</link>
                                                                            <description>
                            <![CDATA[ With better latency than a generic Bluetooth dongle, too? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">N9aktUyZKnRUeNgh5vy4CN</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vgKouqgShXDP5GU3scWqsU-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 30 Apr 2026 15:56:51 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jeremy Laird ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/yAFomvQ2kRS39NDfXHRP7G.jpeg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/vgKouqgShXDP5GU3scWqsU-1280-80.jpg">
                                                            <media:credit><![CDATA[null]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Image of the DualSense controller from the front on in situ.]]></media:description>                                                            <media:text><![CDATA[Image of the DualSense controller from the front on in situ.]]></media:text>
                                <media:title type="plain"><![CDATA[Image of the DualSense controller from the front on in situ.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vgKouqgShXDP5GU3scWqsU-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Fancy the full PS5 controller experience on PC? Right now, it's not possible wirelessly. That's because you lose the <a href="https://www.pcgamer.com/ps5-dualsense-controller-on-pc/" target="_blank">Sony DualSense's</a> full haptic functionality over Bluetooth on the PC. Or at least you did until this homebrew solution turned up based on a Raspberry Pi Pico 2W acting as a dongle.</p><p><a href="https://www.reddit.com/r/pcmasterrace/comments/1sz3l97/psa_since_sony_wont_make_a_pc_dongle_for_the/" target="_blank">Spotted on Reddit</a>, this <a href="https://github.com/awalol/DS5Dongle" target="_blank">GitHub project</a> essentially allows you to connect a DualSense controller to your PC wirelessly, but keep your PC thinking it's a wired interface.</p><p>The problem, as I understand it, with the DualSense on PC over Bluetooth is that Windows' Bluetooth interface doesn't support Sony's proprietary version of Bluetooth that essentially repurposes the A2DP audio channels for the haptic data. And the GitHub project apparently fixes that.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xp4ZAX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xp4ZAX.js" async></script><p>One immediate concern regarding this kind of homebrew solution is latency. Enabling the haptics at the cost of significant added latency wouldn't be much of a win. But apparently, this isn't necessarily a concern.</p><p>This is all a little outside my wheelhouse, but in the Reddit comments the general consensus is that this Raspberry Pi-based solution should actually be better than a generic dongle because, as one commenter puts it, "the software can be tuned to only poll the controllers, and do it very predictably and precisely, just like a real PS5. Avoiding generic bluetooth and the Windows/Linux/Android bluetooth stack is actually a feature here."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2532px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="XWNjJi82FwforiWV9uVMbj" name="dualsense large.jpg" alt="DualSense triggers" src="https://cdn.mos.cms.futurecdn.net/XWNjJi82FwforiWV9uVMbj.jpg" mos="" align="middle" fullscreen="" width="2532" height="1424" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Enabling haptics over Bluetooth is what this is all about. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Sony)</span></figcaption></figure><p>There may be issues around the lack of support for interrupt transfers (which PC peripherals like mice have to ensure rapid and consistent response) causing inconsistent response. But then I haven't dug into the GitHub project fully—maybe it includes setting up the Pico 2W as a USB HID device using interrupt transfers.</p><p>Anywho, if enabling wireless DS5 gaming on a PC with full haptic functionality is your bag and you don't mind getting your hands dirty with some homebrew Raspberry Pi action, the GitHub project is surely worth a look.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Valve on the $99 Steam Controller: 'I do know price has gone up from where we originally wanted it to be' ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/valve-on-the-usd99-steam-controller-i-do-know-price-has-gone-up-from-where-we-originally-wanted-it-to-be/</link>
                                                                            <description>
                            <![CDATA[ Almost inevitably, Valve's new PC pad is pricier than we'd all hoped. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">XhnPH2aeDNDMEiQA5i9BZa</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/U2L63LGauar8GHYxqyyhNY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 27 Apr 2026 19:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ dave.james@futurenet.com (Dave James) ]]></author>                    <dc:creator><![CDATA[ Dave James ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/U2L63LGauar8GHYxqyyhNY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/U2L63LGauar8GHYxqyyhNY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It was always going to be like this. Pricing was conspicuous by its absence when we first got a taste of the new Valve hardware in Bellevue back in November last year, and as soon as all the RAMpocalypse stuff started we knew that whatever we wanted them to be, the <a href="https://www.pcgamer.com/hardware/gaming-pcs/steam-machine-specs-availability/" target="_blank">Steam Machine</a> and <a href="https://www.pcgamer.com/hardware/vr-hardware/hands-on-steam-frame-impressions/" target="_blank">Steam Frame</a> were always going to cost more than if they'd been launched in 2025.</p><p>But, without a ton of expensive RAM inside them, I was still hopeful that the <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review" target="_blank">Steam Controller</a> wouldn't be a victim of the PC pricing catastrophe that has been 2026 so far. When I first got my hands on the pad and started it up plumbed into my home PC, I was thinking 'yeah, at $60 I'd be happy, and I could probably go for $80.'</p><p>How naive I was. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm4jRO"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm4jRO.js" async></script><p>Though maybe not really<em> that</em> naive because it sounds like Valve itself was aiming for pricing more along those lines, too. But events outside of its control have contrived to make it more expensive than planned.</p><p>"I'm not the expert on this," Valve designer, Lawrence Yang tells me during a chat ahead of launch, "I do know price has gone up from where we originally wanted it to be.</p><p>"Also, you may have noticed in the price list that we sent you, there are some variants across regions. So depending on where a customer is going to buy it—because of imports and tariffs and duties, etc.—the price is going to vary depending on where you're purchasing it. That is something that has changed a bit over time, too."</p><p>With the Steam Controller now launching at $99 next week, with <a href="https://www.pcgamer.com/hardware/controllers/valves-new-steam-controller-goes-on-sale-next-week" target="_blank">add-to-basket availability kicking off on May 4</a>, the price has been one of the very few things we've not been so enamoured with about the new Valve pad. To be clear, that pricing is not punitive, and does mean it sits kinda in the middle of the premium and budget PC pads. But when you can get Hall effect sticks in a wireless pad with a charging dock that costs less than $30 you've got to <em>really</em> want the extras the Steam Controller offers.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/rJZF2ynFyLsqQj769NLLTY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CN8yNXAATyWufbSaBiHSPY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CQBcT69Jk2BETepZCCbcQY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>But it does offer a hell of a lot of PC functionality even if the pad itself isn't necessarily what you would call a premium offering. There isn't a controller out there that can offer what the Steam Controller does, and while maybe the majority of PC gamers aren't always going to need that level of utility in a pad, there are still going to be a lot of folk who want to take a look.</p><p>And in taking a look they might well fall down the rabbit hole of nested settings screens that really offer up all the power Valve's new pad has built inside it. I know I wouldn't have thought about using gyro control on my PC if it hadn't been for having a Steam Controller.</p><p>I'm also going to say I don't think that pricing is going to have any appreciable effect on the volume of Steam Controllers that fly off Valve's digital shelves. I'm expecting to see this thing topping Steam's Top Sellers list for a long time to come, especially if it is <a href="https://www.pcgamer.com/hardware/game-pads/valve-is-bullish-on-global-steam-controller-availability-we-have-knobs-we-can-turn-to-try-to-get-things-to-people-faster" target="_blank">able to turn those factory knobs it's promising </a>to keep stock rolling.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Valve is bullish on global Steam Controller availability: 'We have knobs we can turn to try to get things to people faster' ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/valve-is-bullish-on-global-steam-controller-availability-we-have-knobs-we-can-turn-to-try-to-get-things-to-people-faster/</link>
                                                                            <description>
                            <![CDATA[ "We'll have a good amount of stock around the world for the launch." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Rw7Gp4VNeFbKutcUJZbgEm</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vkFPQdKBSBXq7oQu3T6JKY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 27 Apr 2026 18:00:00 +0000</pubDate>                                                                                                                                <updated>Fri, 01 May 2026 14:09:54 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ dave.james@futurenet.com (Dave James) ]]></author>                    <dc:creator><![CDATA[ Dave James ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/vkFPQdKBSBXq7oQu3T6JKY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vkFPQdKBSBXq7oQu3T6JKY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>"So we have built up a good supply," Valve engineer Steve Cardinali tells me just ahead the launch of the <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review" target="_blank">Steam Controller</a>. Which is good news, because I've got a feeling this is a pad that's going to be super popular with PC gamers and I've got to believe there is going to be some serious pressure on stock levels around the world.</p><p>Because that's the thing here, this is a very different launch to the original Steam Deck, where availability was staggered globally. The Steam Controller is going on sale everywhere, all at once. </p><p>"We hope that a lot of people around the world really, really like it, and we sell a bunch of them," Lawrence Yang, a designer at Valve tells me. "That's our hope. We're optimistic. I'm optimistic."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm4jRO"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm4jRO.js" async></script><p>And having spent time with my own Steam Controller I can see why he is. There is so much to the Steam Controller, from its standard PC pad capabilities, to its haptics, to its gyro control, to its battery life, repairability, and of course, those trackpads. There's also the fact the delayed Steam Machine has been so hyped and folk are so desperate to get their hands on some new Valve hardware, I can see people wanting to even just get a piece of the new techie triumvirate of Steam Controller, Steam Machine, and Steam Frame as soon as they can.</p><p>"We have built up a good supply of this," Cardinali says when I ask about Valve's ability to maintain stock levels for the Controller. "But it's based on what we <em>anticipate</em> supply to be. And supply could be much larger than we anticipate. In which case our production has a finite limit on how much we can make. And we'll do our best to keep up with demand if it greatly exceeds our expectations."</p><p>"We have knobs," interjects Yang.</p><p>"We have knobs we can turn to try to get things to people faster," says Cardinali. "It's complicated and you know the mass production machine is a big machine with a lot of momentum. So, depending on how it goes for the first chunk of time, if we have high demand and it stays high demand, there are things we can do to help alleviate that down the road."</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/lSxebH_xYew" allowfullscreen></iframe></div></div><p>And what are those knobs?</p><p>"We do think we'll have a good amount of stock around the world for the launch," says Yang. "So and then, at the factory, if we're like, 'oh, we actually probably need to make more' then we can turn that knob up and have them producing more."</p><p>As ever with PC gaming, however, there is always the shadowy figure of lag getting in the way. And even if Valve is able to start turning knobs in the factory to up the production levels of its controller to cope with higher than anticipated demand, there will inevitably be a lag in getting those new pads into retail.</p><p>"We try to build enough wiggle room so that we can try not to be out of stock for a really long time," notes Yang.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Valve will be providing Steam Controller replacement parts via iFixit after launch ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/valve-will-be-providing-steam-controller-replacement-parts-via-ifixit-after-launch/</link>
                                                                            <description>
                            <![CDATA[ Valve ensured the new pad has a focus on modding and repairability: "We know our community." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">TCfYTfoQaAw6ouJ6ysnZFV</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/UX9PF39ymD5nCkcCj2ukNY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 27 Apr 2026 17:20:00 +0000</pubDate>                                                                                                                                <updated>Fri, 01 May 2026 14:13:24 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ dave.james@futurenet.com (Dave James) ]]></author>                    <dc:creator><![CDATA[ Dave James ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/UX9PF39ymD5nCkcCj2ukNY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/UX9PF39ymD5nCkcCj2ukNY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/lSxebH_xYew" allowfullscreen></iframe></div></div><p>One of the many impressive features of Valve's new Steam Controller is just how straightforward the pad is when it comes to repairability. It's so easy to open up and get to the insides. That's great and all, but where are you going to get the necessary parts to make any repairs down the line? Well, Valve has told us that, like with the Steam Deck, it is working with iFixit to make it easy for you to bag replacement Steam Controller parts post-launch.</p><p>Jacob and I recently sat down with Valve's Steve Cardinali and Lawrence Yang to talk about the Steam Controller and, as repairability has been something that has seriously impressed us in our time with the new Valve pad, talk inevitably came around to that. In the process of his <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review" target="_blank">Steam Controller review</a>, Jacob took his pad down to its constituent parts many times, revealing just <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-teardown-simple-to-open-easy-to-fix" target="_blank">how simple it is to get at every part of the device</a>. </p><p><em>And it still works now. </em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm4jRO"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm4jRO.js" async></script><p>It's the sort of thing that feels very Valve, and feels like it's been tailor-made to ensure that there is a healthy modding community for the controller after launch. If someone wants to start making translucent back covers, I know at least a couple PC Gamer folk who would be first in line.</p><p>"We wanted to make sure it was easily accessible for our customers," Steve Cardinali, an engineer at Valve who worked on the Steam Controller, tells us. "We know our community, right?</p><p>"They want to take it open and if they want to swap something out, they can do that. If they want to make their buttons look different, that's fine with us. So yeah, it's easy to open. In this case, purposefully, there are no snaps in this. If you notice when you open the seven screws, it just comes right off."</p><iframe src="https://content.jwplatform.com/players/6pbye4pr.html" id="6pbye4pr" title="Steam Controller Teardown" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>Of course, it isn't just about customising your pad, it's about longevity, and that's why the battery is so accessible, too. "We don't anticipate it being a problem for anybody," says Cardinali, "if they wanted to swap it out for a reason, we intentionally designed it to be easily serviceable. You can just swap it out. You don't need to unplug a connector or anything. Just put it in."</p><p>Inevitably, though, the question of where a user is going to be able to get spare parts from comes up in our chat. "We will be making replacement parts available through iFixit," Valve designer Lawrence Yang tells us. "Just like last time."</p><p>Though it's important to note this partnership is not going to be in play straight away when the pads go on sale in May: "It won't be at launch," says Yang, "but after launch they will be made available."</p><p>Which isn't a great surprise given that the Steam Controller is going into a worldwide release, and no matter how good the supply is, there is a real healthy appetite for the first part of the new Valve hardware triumvirate. I would expect all the parts around right now are needed to build new controller pads rather than build up inventories of replacement components.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Steam Controller teardown: simple to open, easy to fix ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/steam-controller-teardown-simple-to-open-easy-to-fix/</link>
                                                                            <description>
                            <![CDATA[ The Steam Controller is straightforward to repair or mod at home. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">WwDdwjyFLzp727AM7tRhX4</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/BFyCvxhF5rvguJAynziMSY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 27 Apr 2026 17:00:00 +0000</pubDate>                                                                                                                                <updated>Mon, 27 Apr 2026 17:06:02 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/BFyCvxhF5rvguJAynziMSY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/BFyCvxhF5rvguJAynziMSY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I've been using the new <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review" target="_blank">Steam Controller</a> for a couple of weeks now and over that time I've taken it apart a total of three times. Each time, piece by piece, back to an empty shell. That might sound like a waste of time, but disassembling the Steam Controller only takes around 15 minutes once you know what you're doing.</p><p>Valve has designed the inside of the Steam Controller like it was waiting for someone to rip it open. Held together by easily accessible screws, it contains clearly labelled components that, for the most part, could be replaced or repaired at home.</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/Va9aTIktlSk" allowfullscreen></iframe></div></div><p>There are a couple parts that may require a little more know-how with a soldering iron, such as the TMR sticks. But Valve has told me it will be making spare parts officially available via iFixit, as it does today for the Steam Deck. That won't happen right away but sometime in the future. Once that happens, we're onto a winner for repairability.</p><p>Here's what you need to disassemble the Steam Controller:</p><ul><li><strong>Torx T6 screwdriver</strong></li><li><strong>Torx T5 screwdriver (only for trackpads/trackpad PCB)</strong></li></ul><p>Here's what's nice to have:</p><ul><li><strong>Pair of tweezers</strong></li><li><strong>Spudger</strong></li></ul><h2 class="article-body__section" id="section-steam-controller-teardown"><span>Steam Controller - Teardown</span></h2><p>During my first couple of days with the Steam Controller, I noticed one of the triggers was a little louder than the other. Only a barely noticeable metallic ping as the trigger reset, but enough for me to take a look inside and see if there was something up.</p><p>There are seven Torx screws between me and the inside of the Steam Controller. These require a Torx T6 bit. With those taken care of, the rear shell comes cleanly away.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/UX9PF39ymD5nCkcCj2ukNY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2p3C3EMPD4pToBrKpzCkLY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QT2GEtrv8ZqU4brjdKWfLY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>First off, the squeaky trigger. The trigger mechanism is a simple spring attached beneath the trigger itself, which is sat on a metal bar running through a couple of plastic struts. It's a Hall effect trigger with corresponding sensors on each side of the mainboard. </p><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="pU9uWzWcjQ6DQapqAhoyPY" name="IMG_4084_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/pU9uWzWcjQ6DQapqAhoyPY.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>Looking to the squeaky left trigger, there's not much different to the right. The spring is perhaps at a slight angle compared to the other side, so I prod at it a little, and, voila! The squeak is gone. Simple as. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/o2FvAqZZLEtDuz3yqTFVSY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/keSow63W2FKbBYYRSgkhQY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vKGZZHtUCKPczHczJatFQY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Diving further in, the battery can be lifted out with just a finger from the right side. The contacts are on the left side but are only held in place by the housing. So, in the event of needing a replacement, this would require nothing more than a single Torx screwdriver and a replacement battery. </p><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="qvFjv26YeAzwhbC9fQq3QY" name="IMG_4094_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/qvFjv26YeAzwhbC9fQq3QY.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 battery is a Li-Ion made by Getac Technology (Kunshan) Co., Ltd and rated to 2,178 mAh and 8.39 Wh.</p><p>Removing the battery housing requires unscrewing another four Torx T6 screws, of a shorter length than those holding the outer shell together. Before doing that, however, I remove the two cables that connect the haptic motors in the grips to the mainboard.</p><p>The now exposed mainboard has another three Torx T6 screws holding it in place. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/3r9f8TVv9QrWNaFJyCTRUY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/g3S7q4FPEa7LLrDUPQCx4Y.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>It also has a ribbon cable to the PCB for the trackpads, which needs to be removed. The mainboard has a Nordic Semiconductor SOC mounted in the middle, which appears to be a Nordic Semiconductor SoC with Bluetooth and 2.4 GHz (nRF52833).</p><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="t7PRJHbkrzJ6gHjJcJxYVY" name="IMG_4117_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/t7PRJHbkrzJ6gHjJcJxYVY.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>Upon removing the mainboard, I could see that the TMR thumbsticks are soldered onto the other side of it. That means if a thumbstick were to break, you would need to replace the entire mainboard. Unless you felt comfortable with a soldering iron, of course, in which case it shouldn't be too bad to replace.</p><p>The soldered thumbsticks make a change from the Steam Deck, which had its mounted to individual PCBs and <a href="https://www.pcgamer.com/gulikit-electromagnetic-joystick-module-for-steam-deck-review/" target="_blank">made swapping to different thumbsticks</a> an easy job. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/MTfseZHwZ4G4SbngxZowKY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tAfY8FdwGocKSxx9WQtFPY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/kFHu65PranUax5mhRdWxQY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GZEuZat4Pz7pK5dAwn9ZTY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>You can see from the mainboard that it was manufactured in either September or December. It does seem likely that it's using an international date format and therefore was manufactured in September, which would mean Valve has been piecing these together for a long time. Perhaps a positive sign for widespread availability at launch?</p><p>I was unsure where to go next at this point. There's still a board for the trackpads that needs removing, but I can't reach it until I've removed the haptic motors on either side. These appear to be held onto a singular plastic plate that connects both sides of the controller. </p><p>I can reach most of the screws holding the plastic frame in place, except for two hidden behind the triggers. For now, I am able to remove a large ribbon cable for the face buttons that rests in place on two small plastic clips at the centre of the controller.</p><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="ArVp8Cz4SxwEk9uVdWrSKY" name="IMG_4123_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/ArVp8Cz4SxwEk9uVdWrSKY.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 then realise I only need to remove the metal bar that the triggers are attached to in order to remove them entirely. With those gone, I can finally see under the trigger and apply a drop of lube to the struts holding it in place. And get at the two remaining screws holding the plastic frame.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/QQ9K7XMGvQeRu2PG4fSdUY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/AWHptCudLcWNX73FbAd8GY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>With the plastic frame gone, the haptic motors, shoulder buttons, and face button membrane all go with it. It's now possible to remove or replace the buttons and rubber gaskets they rest on. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/nekoyTWRfFxJErFmJKQ3TY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/aKa56cYmSHJqkz462QJHKY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8WRfXCqnRBZQKWyE9dkHVY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YPxWMrrF5aWqrTkStVD6WY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The trackpad PCB has a few more ribbon cables that need to be unhooked and removed, so away those go. Then I can remove four more screws to pull away the PCB itself. This is the first time I need to change my driver bit, switching to a Torx T5. </p><p>The screws used here are slightly shorter, so better not mix them up.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/poTuvBKLfU4qnDysqQCWAY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mokuyf3orAEhdTpQzgBxRY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>There's not much to this trackpad board, beyond a Cirque ASIC for controlling the two modules that rest underneath it.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ZhBXDXn77bD7o3ADLjiNQY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wwArj4hhvKUiPU89AjawNY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zyQqVidq5mracnW7HGqrMY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>With that removed, it's onto the final piece of the puzzle: the trackpad modules themselves. With these removed through four screws on each side, the entire controller is in pieces on my desk.</p><h2 class="article-body__section" id="section-verdict"><span>Verdict</span></h2><p>I'm impressed. Valve has shown it cares about repairability in the past and that holds true for the Steam Controller.</p><p>Admittedly, I first opened it up to try to solve an issue that shouldn't have been there in the first place—the squeaky trigger—but not only was that resolved easily, the repairability of the Steam Controller was laid bare while doing so.</p><p>Many parts of the Steam Controller should be an easy replacement with minimal fuss, especially once spare parts are available to purchase.</p><p>It's only the thumbsticks that are more likely to require a full repair job, on account of being soldered to the mainboard itself. That's not unusual for a controller and not impossible to do with a soldering iron at home. Though being tunnel magnetoresistance (TMR) sticks, I'm hoping for a long shelf life and minimal stick drift as these are some of the intended benefits over potentiometer.</p><p>For now, it's time to put it back together. Make sure to tighten everything down when you're rebuilding, especially the trackpads, as you may end up with a rattle if you don't—don't ask me how I know that.</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/SoNANE4mHlI" allowfullscreen></iframe></div></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Steam Controller (2026) review ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/</link>
                                                                            <description>
                            <![CDATA[ Second time's the charm. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">B4p3aPJNV2Ckc47kSywXKQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/aUXA7Xr75b7Xuvt2S6eeKY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 27 Apr 2026 17:00:00 +0000</pubDate>                                                                                                                                <updated>Wed, 29 Apr 2026 11:16:21 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/aUXA7Xr75b7Xuvt2S6eeKY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/aUXA7Xr75b7Xuvt2S6eeKY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The Steam Controller is the first of three new bits of hardware from Valve this year. It's designed to let you take control of your PC from the comfort of your couch and without a mouse, which is sure to appeal to a certain type of gamer.<br><br>The second-generation Steam Controller includes everything one might expect from a gamepad, including two thumbsticks and the usual array of buttons. But it also offers input parity with the <a href="https://www.pcgamer.com/steam-deck-oled-review/" target="_blank">Steam Deck</a>, Valve's popular handheld gaming PC, and in doing so, delivers a few extra tricks. Beneath its symmetrical sticks are two trackpads, which you can use to glide around the desktop or look around in-game. It also includes a 6-axis gyro, which is shockingly an even better way to mimic a mouse. I'm a gyro control convert.<br><br>The Steam Controller does have to be quite convincing to justify its price tag, however. It costs $99/€99/£85/$149 AUD, which puts it a league above budget pads with similar specs and fewer inputs. You're paying for convenience here. To use your PC with ease while lounging or lazing.<br><br>If you prefer to game bolt upright and laser-focused on your kill/death ratio, you'll want to look elsewhere. This isn't a competitive pad. It's a comfy pad for comfy gamers—and if that sounds like you, read on.</p><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>✅ You're building or buying a living room PC: </strong>The Steam Controller's trackpads and gyro controls are useful for navigating menus, websites, or the desktop from a distance.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Don't buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>❌ You main another game launcher: </strong>The Steam Controller, true to its name, requires Steam to function and may require more set-up for non-Steam games.</p></div></div></div></div><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><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');        /* Reset & Base */    #fv-chart-1777460343030-gfokqvjk7 *, #fv-chart-1777460343030-gfokqvjk7 *:before, #fv-chart-1777460343030-gfokqvjk7 *:after, #fv-chart-1777460343030-gfokqvjk7-slideshow *, #fv-chart-1777460343030-gfokqvjk7-slideshow *:before, #fv-chart-1777460343030-gfokqvjk7-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777460343030-gfokqvjk7, #fv-chart-1777460343030-gfokqvjk7-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777460343030-gfokqvjk7 {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777460343030-gfokqvjk7.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777460343030-gfokqvjk7.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-1777460343030-gfokqvjk7 .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;    }            /* Slideshow Styles */    #fv-chart-1777460343030-gfokqvjk7-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777460343030-gfokqvjk7-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-1777460343030-gfokqvjk7-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-1777460343030-gfokqvjk7-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777460343030-gfokqvjk7-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-1777460343030-gfokqvjk7-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;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777460343030-gfokqvjk7-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-1777460343030-gfokqvjk7-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .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; }    /* Versus Chart */    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460343030-gfokqvjk7 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .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; }    /* Image Comparison Styles */    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777460343030-gfokqvjk7.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-expand-btn,    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-image-compare-expand-btn:hover,    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777460343030-gfokqvjk7 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777460343030-gfokqvjk7 .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;    }    /* Display Mode Controls */    #fv-chart-1777460343030-gfokqvjk7 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777460343030-gfokqvjk7 .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-bar-row, #fv-chart-1777460343030-gfokqvjk7 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777460343030-gfokqvjk7 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777460343030-gfokqvjk7 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777460343030-gfokqvjk7 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777460343030-gfokqvjk7 .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .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; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777460343030-gfokqvjk7.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777460343030-gfokqvjk7.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777460343030-gfokqvjk7 .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777460343030-gfokqvjk7 .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777460343030-gfokqvjk7 .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777460343030-gfokqvjk7.mobile-view #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777460343030-gfokqvjk7.mobile-view #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777460343030-gfokqvjk7.mobile-view #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-pie-container,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-bar-row,    #fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-stacked-product,    #fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-grouped-bar-product,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-bar-row,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-stacked-product,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777460343030-gfokqvjk7.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-1777460343030-gfokqvjk7.mobile-view .fv-bar-label,    #fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-grouped-product-title,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-bar-label,    #fv-chart-1777460343030-gfokqvjk7.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-1777460343030-gfokqvjk7.mobile-view .fv-bar-container,    #fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-bar-cluster,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-bar-container,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-x-axis-label-space,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-benchmark-title,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-dropdown-title,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-chart-title,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-chart-subhead,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-header,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-vs,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-select-container,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-select,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777460343030-gfokqvjk7.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777460343030-gfokqvjk7 .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-bar-row,        #fv-chart-1777460343030-gfokqvjk7 .fv-stacked-product,        #fv-chart-1777460343030-gfokqvjk7 .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-bar-label,        #fv-chart-1777460343030-gfokqvjk7 .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-1777460343030-gfokqvjk7 .fv-bar-container,        #fv-chart-1777460343030-gfokqvjk7 .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777460343030-gfokqvjk7 .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777460343030-gfokqvjk7.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": "Overall Chart Title",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T10:59:03.031Z",  "citation": "We have scored the Steam Controller out of five in seven distinct categories in order to break down both its strengths and weaknesses.",  "keywords": [    "Steam Controller (2026)",    "Ergonomics",    "Performance",    "Internals",    "Aesthetics",    "Software",    "Battery",    "Value",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Ergonomics",      "value": 4,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Performance",      "value": 3,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Internals",      "value": 4.5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Aesthetics",      "value": 4,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Software",      "value": 3.5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Battery",      "value": 5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Value",      "value": 3,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777460343030-gfokqvjk7" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper fv-no-header  ">                                                <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777460343030-gfokqvjk7-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="We have scored the Steam Controller out of five in seven distinct categories in order to break down both its strengths and weaknesses." data-bar-xaxis-tick-increment="1" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Steam Controller (2026) - Ergonomics: 4 ">                    <div class="fv-bar-label">Ergonomics</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 80%; background-color: #E33235;" data-target-width="80">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">4</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Steam Controller (2026) - Performance: 3 ">                    <div class="fv-bar-label">Performance</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 60%; background-color: #E33235;" data-target-width="60">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">3</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Steam Controller (2026) - Internals: 4.5 ">                    <div class="fv-bar-label">Internals</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 90%; background-color: #E33235;" data-target-width="90">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">4.5</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Steam Controller (2026) - Aesthetics: 4 ">                    <div class="fv-bar-label">Aesthetics</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 80%; background-color: #E33235;" data-target-width="80">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">4</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Steam Controller (2026) - Software: 3.5 ">                    <div class="fv-bar-label">Software</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 70%; background-color: #E33235;" data-target-width="70">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">3.5</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Steam Controller (2026) - Battery: 5 ">                    <div class="fv-bar-label">Battery</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 100%; background-color: #E33235;" data-target-width="100">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">5</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Steam Controller (2026) - Value: 3 ">                    <div class="fv-bar-label">Value</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 60%; background-color: #E33235;" data-target-width="60">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">3</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Ergonomics ()</th><th>Performance ()</th><th>Internals ()</th><th>Aesthetics ()</th><th>Software ()</th><th>Battery ()</th><th>Value ()</th></tr></thead>            <tbody><tr><td>Steam Controller (2026)</td><td>4</td><td>3</td><td>4.5</td><td>4</td><td>3.5</td><td>5</td><td>3</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: block;">                <div class="rv-chart-caption">We have scored the Steam Controller out of five in seven distinct categories in order to break down both its strengths and weaknesses.</div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </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() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          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);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        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) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                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 === '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 leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                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);            });            // 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');                        // Text Elements            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 === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === '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;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 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;                // Zoom state                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();                    // Max pan depends on how much the image is scaled beyond the wrapper                    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; // Prevent click after pinch                    } 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 });                }                // Expand/Close Logic                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.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            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.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                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 allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    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');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        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();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                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();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        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-1777460343030-gfokqvjk7', false); });      } else {        initialize('fv-chart-1777460343030-gfokqvjk7', false);      }    })();      </script></div><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/SoNANE4mHlI" allowfullscreen></iframe></div></div><h2 class="article-body__section" id="section-steam-controller-features"><span>Steam Controller - Features</span></h2><div ><table><tbody><tr><td class="firstcol " ><p><strong>Layout</strong></p></td><td  ><p>Symmetrical</p></td></tr><tr><td class="firstcol " ><p><strong>Thumbsticks</strong></p></td><td  ><p>TMR (Tunnel magnetoresistance) with capacitive touch</p></td></tr><tr><td class="firstcol " ><p><strong>Face buttons</strong></p></td><td  ><p>A, B, X, Y, View, Menu, Steam, QAM (Quick Access Menu)</p></td></tr><tr><td class="firstcol " ><p><strong>Rear buttons</strong></p></td><td  ><p>4x on grip (R4, R5, L4, L5)</p></td></tr><tr><td class="firstcol " ><p><strong>Trackpads</strong></p></td><td  ><p>2x 34.5 mm square</p></td></tr><tr><td class="firstcol " ><p><strong>Rumble</strong></p></td><td  ><p>4x haptic motors (2x trackpads, 2x grips)</p></td></tr><tr><td class="firstcol " ><p><strong>Gyro</strong></p></td><td  ><p>6-axis IMU (enabled via capacitive touch in L/R grips with Grip Sense)</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>2.4 GHz (via included Puck), Bluetooth (minimum 4.2, 5.0 or higher recommended), USB Type-C to Type-A</p></td></tr><tr><td class="firstcol " ><p><strong>Battery</strong></p></td><td  ><p>35+ hours (charged via USB-C or Puck), 8.39 Wh Li-ion</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>4 ms (250 Hz)</p></td></tr><tr><td class="firstcol " ><p><strong>Input latency</strong></p></td><td  ><p>~8 ms end-to-end</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>292 grams (259 grams as measured)</p></td></tr><tr><td class="firstcol " ><p><strong>Shortcuts</strong></p></td><td  ><p>Steam+Y (turn off), R1+A+Steam (hold Steam (pairing in current )</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$99/€99/£85/$149 AUD</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-steam-controller-ergonomics"><span>Steam Controller - 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:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="U2L63LGauar8GHYxqyyhNY" name="IMG_4226_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/U2L63LGauar8GHYxqyyhNY.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>Good news, despite its larger size, the Steam Controller rests comfortably in my hands. In the name of science, I also asked my partner with smaller hands whether she found it to be easy to reach the thumbsticks, which are set close to the middle of the controller, and she had no problems whatsoever. Same goes for the trackpads, which she and I can both reach just fine.</p><p>You have to move your palm ever so slightly away from the controller to shift between the thumbsticks and trackpads, and because you might use the left thumbstick and right trackpad at the same time, you might find your right hand is moving around a lot more than your left. Though it's all fairly accessible with minimal movement. The trackpads are recessed just a touch to make using them feel a little more natural.</p><p>One of the Steam Controller's better features are the rear grip buttons. These are placed very low down on the inside of both grips, landing right beneath my fingers. As someone that tends to ignore rear paddles on controllers, these feel genuinely useful and with a satisfying click. Though, the lower set, R5 and L5, are fairly easy to press by accident.</p><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><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');        /* Reset & Base */    #fv-chart-1777458159149-5ellnb36v *, #fv-chart-1777458159149-5ellnb36v *:before, #fv-chart-1777458159149-5ellnb36v *:after, #fv-chart-1777458159149-5ellnb36v-slideshow *, #fv-chart-1777458159149-5ellnb36v-slideshow *:before, #fv-chart-1777458159149-5ellnb36v-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777458159149-5ellnb36v, #fv-chart-1777458159149-5ellnb36v-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777458159149-5ellnb36v {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777458159149-5ellnb36v.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777458159149-5ellnb36v.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-1777458159149-5ellnb36v .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;    }            /* Slideshow Styles */    #fv-chart-1777458159149-5ellnb36v-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777458159149-5ellnb36v-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777458159149-5ellnb36v-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777458159149-5ellnb36v-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-1777458159149-5ellnb36v-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-1777458159149-5ellnb36v-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777458159149-5ellnb36v-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777458159149-5ellnb36v-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-1777458159149-5ellnb36v-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;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777458159149-5ellnb36v-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-1777458159149-5ellnb36v-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .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; }    /* Versus Chart */    #fv-chart-1777458159149-5ellnb36v .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777458159149-5ellnb36v .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .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; }    /* Image Comparison Styles */    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777458159149-5ellnb36v.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777458159149-5ellnb36v .fv-image-compare-expand-btn,    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-image-compare-expand-btn:hover,    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777458159149-5ellnb36v .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777458159149-5ellnb36v .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777458159149-5ellnb36v .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;    }    /* Display Mode Controls */    #fv-chart-1777458159149-5ellnb36v .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777458159149-5ellnb36v .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777458159149-5ellnb36v .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777458159149-5ellnb36v .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-bar-row, #fv-chart-1777458159149-5ellnb36v .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777458159149-5ellnb36v .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777458159149-5ellnb36v .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777458159149-5ellnb36v .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777458159149-5ellnb36v .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777458159149-5ellnb36v .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777458159149-5ellnb36v .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777458159149-5ellnb36v .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .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; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777458159149-5ellnb36v .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777458159149-5ellnb36v.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777458159149-5ellnb36v.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777458159149-5ellnb36v .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777458159149-5ellnb36v .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777458159149-5ellnb36v .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777458159149-5ellnb36v .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777458159149-5ellnb36v.mobile-view #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777458159149-5ellnb36v.mobile-view #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777458159149-5ellnb36v.mobile-view #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777458159149-5ellnb36v.mobile-view .fv-pie-container,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-bar-row,    #fv-chart-1777458159149-5ellnb36v.mobile-view .fv-stacked-product,    #fv-chart-1777458159149-5ellnb36v.mobile-view .fv-grouped-bar-product,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-bar-row,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-stacked-product,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777458159149-5ellnb36v.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-1777458159149-5ellnb36v.mobile-view .fv-bar-label,    #fv-chart-1777458159149-5ellnb36v.mobile-view .fv-grouped-product-title,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-bar-label,    #fv-chart-1777458159149-5ellnb36v.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-1777458159149-5ellnb36v.mobile-view .fv-bar-container,    #fv-chart-1777458159149-5ellnb36v.mobile-view .fv-bar-cluster,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-bar-container,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-x-axis-label-space,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-benchmark-title,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-dropdown-title,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-chart-title,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-chart-subhead,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-header,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-vs,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-select-container,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-select,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777458159149-5ellnb36v.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777458159149-5ellnb36v.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777458159149-5ellnb36v .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777458159149-5ellnb36v .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-bar-row,        #fv-chart-1777458159149-5ellnb36v .fv-stacked-product,        #fv-chart-1777458159149-5ellnb36v .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-bar-label,        #fv-chart-1777458159149-5ellnb36v .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-1777458159149-5ellnb36v .fv-bar-container,        #fv-chart-1777458159149-5ellnb36v .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777458159149-5ellnb36v .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777458159149-5ellnb36v .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777458159149-5ellnb36v .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777458159149-5ellnb36v .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777458159149-5ellnb36v .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777458159149-5ellnb36v .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777458159149-5ellnb36v .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777458159149-5ellnb36v.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": "It's a lot comfier than it looks, that's all I'll say",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T10:22:39.150Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Steam Controller (2026)",    "Ergonomics",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Score – Ergonomics",      "value": 4,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777458159149-5ellnb36v" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper   ">            <h3 class="fv-chart-title">It's a lot comfier than it looks, that's all I'll say</h3>                                    <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777458159149-5ellnb36v-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Score - Ergonomics: 4 ">                    <div class="fv-bar-label">Ergonomics</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 80%; background-color: #E33235;" data-target-width="80">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">4</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Ergonomics ()</th></tr></thead>            <tbody><tr><td>Score</td><td>4</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </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() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          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);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        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) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                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 === '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 leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                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);            });            // 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');                        // Text Elements            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 === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === '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;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 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;                // Zoom state                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();                    // Max pan depends on how much the image is scaled beyond the wrapper                    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; // Prevent click after pinch                    } 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 });                }                // Expand/Close Logic                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.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            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.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                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 allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    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');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        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();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                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();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        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-1777458159149-5ellnb36v', false); });      } else {        initialize('fv-chart-1777458159149-5ellnb36v', false);      }    })();      </script></div><h2 class="article-body__section" id="section-steam-controller-performance"><span>Steam Controller - Performance</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="KCHBXz96tngYsTs9sZLZHY" name="IMG_4253_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/KCHBXz96tngYsTs9sZLZHY.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 Controller feels agile enough in most games. Though you can tell it's destined for the couch and not contests.</p><p>The face buttons are all run-of-the-mill membrane. They feel consistent, if nothing else. The same can be said of the D-pad, which is stiff but feels stable for it, and the triggers, which use Hall effect sensors, but are nothing special. Though helped along by decent haptics in the grips and trackpads, if you're after tactile feedback for competitive play, I'd look elsewhere. The Steam Controller isn't going to deliver much of that. That's also reflected in its 250 Hz polling rate—many pads today will bump that up to 1,000 Hz.</p><p>Instead, the Steam Controller has more to offer the horizontal, or at least lazily reclined, gamer. </p><p>The Steam Deck has already proven how effective trackpads can be for imitating the movement of a mouse. I reckon they're around 70% of the way there, something like that. I won't pretend like that final 30% doesn't matter a <em>whole</em> lot, but in some strategy or RPG games, or when browsing your desktop or the interwebs, 70% is all you need. The Steam Controller works well for those.</p><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="zZwRjNRUQ65aXkcjWiVtEY" name="IMG_4257_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/zZwRjNRUQ65aXkcjWiVtEY.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 can also see why that <a href="https://www.pcgamer.com/hardware/controllers/how-gyro-support-was-added-into-the-new-steam-controller-is-a-typical-valve-story/" target="_blank">one engineer at Valve loves gyro controls</a>. I'm starting to finally get it with the Steam Controller. I find I have a higher accuracy across the desktop with gyro controls compared to the trackpads and it's a big improvement over attempting to use a keyboard and mouse while lying down. Don't even get me started on those weird couch tables (though Hope did <a href="https://www.pcgamer.com/hardware/gaming-chairs/couchmaster-cycon3-review/" target="_blank">enjoy her time with one</a>).</p><p>Moreover, the trackpads work great in tandem with the gyro controls. The gyro is by default only enabled when you are touch the trackpad or thumbstick, meaning you're naturally placed to blend a few input methods. You can whip across the screen with the gyro then switch seamlessly to the trackpad for more controlled movements. Then back over to the other trackpad to scroll through the Steam Sale.</p><p>While my experience in some games saw me reaching for the thumbsticks again, anything accepting of standard mouse movement feels the benefit of dual-wielding these two unusual inputs. For the intended audience here, they make a lot of sense and they feel very snappy.</p><p>Nevertheless, you'll be relying on the thumbsticks for a good deal of your gaming with the Steam Controller. These are a highlight of the Steam Controller for me. Firstly, it's because it <em>has </em>thumbsticks. Two of them. Unlike the last one. Secondly, because they're a good height, responsive, and easy to configure in Steam. Thirdly, I don't have to replace them with Hall effect like I did the Steam Deck, as they're already TMR.</p><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><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');        /* Reset & Base */    #fv-chart-1777460447728-wxfqp06hf *, #fv-chart-1777460447728-wxfqp06hf *:before, #fv-chart-1777460447728-wxfqp06hf *:after, #fv-chart-1777460447728-wxfqp06hf-slideshow *, #fv-chart-1777460447728-wxfqp06hf-slideshow *:before, #fv-chart-1777460447728-wxfqp06hf-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777460447728-wxfqp06hf, #fv-chart-1777460447728-wxfqp06hf-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777460447728-wxfqp06hf {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777460447728-wxfqp06hf.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777460447728-wxfqp06hf.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-1777460447728-wxfqp06hf .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;    }            /* Slideshow Styles */    #fv-chart-1777460447728-wxfqp06hf-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777460447728-wxfqp06hf-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-1777460447728-wxfqp06hf-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-1777460447728-wxfqp06hf-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777460447728-wxfqp06hf-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-1777460447728-wxfqp06hf-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;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777460447728-wxfqp06hf-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-1777460447728-wxfqp06hf-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .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; }    /* Versus Chart */    #fv-chart-1777460447728-wxfqp06hf .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460447728-wxfqp06hf .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .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; }    /* Image Comparison Styles */    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777460447728-wxfqp06hf.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-expand-btn,    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-image-compare-expand-btn:hover,    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777460447728-wxfqp06hf .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777460447728-wxfqp06hf .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;    }    /* Display Mode Controls */    #fv-chart-1777460447728-wxfqp06hf .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777460447728-wxfqp06hf .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-bar-row, #fv-chart-1777460447728-wxfqp06hf .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777460447728-wxfqp06hf .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777460447728-wxfqp06hf .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777460447728-wxfqp06hf .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777460447728-wxfqp06hf .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .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; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777460447728-wxfqp06hf .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777460447728-wxfqp06hf.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777460447728-wxfqp06hf.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777460447728-wxfqp06hf .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777460447728-wxfqp06hf .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777460447728-wxfqp06hf .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777460447728-wxfqp06hf .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777460447728-wxfqp06hf.mobile-view #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777460447728-wxfqp06hf.mobile-view #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777460447728-wxfqp06hf.mobile-view #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-pie-container,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-bar-row,    #fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-stacked-product,    #fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-grouped-bar-product,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-bar-row,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-stacked-product,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777460447728-wxfqp06hf.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-1777460447728-wxfqp06hf.mobile-view .fv-bar-label,    #fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-grouped-product-title,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-bar-label,    #fv-chart-1777460447728-wxfqp06hf.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-1777460447728-wxfqp06hf.mobile-view .fv-bar-container,    #fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-bar-cluster,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-bar-container,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-x-axis-label-space,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-benchmark-title,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-dropdown-title,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-chart-title,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-chart-subhead,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-header,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-vs,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-select-container,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-select,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777460447728-wxfqp06hf.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777460447728-wxfqp06hf .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-bar-row,        #fv-chart-1777460447728-wxfqp06hf .fv-stacked-product,        #fv-chart-1777460447728-wxfqp06hf .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-bar-label,        #fv-chart-1777460447728-wxfqp06hf .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-1777460447728-wxfqp06hf .fv-bar-container,        #fv-chart-1777460447728-wxfqp06hf .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777460447728-wxfqp06hf .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777460447728-wxfqp06hf.fv-contains-line-chart .fv-footer-content {            margin-left: -1rem !important;            margin-right: -1rem !important;        }    }  </style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Performance isn't the name of the game here. Convenience is more what Valve's going for",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T11:00:47.729Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Steam Controller (2026)",    "Performance",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Performance",      "value": 3,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777460447728-wxfqp06hf" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper   ">            <h3 class="fv-chart-title">Performance isn't the name of the game here. Convenience is more what Valve's going for</h3>                                    <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777460447728-wxfqp06hf-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Steam Controller (2026) - Performance: 3 ">                    <div class="fv-bar-label">Performance</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 60%; background-color: #E33235;" data-target-width="60">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">3</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Performance ()</th></tr></thead>            <tbody><tr><td>Steam Controller (2026)</td><td>3</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </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() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          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);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        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) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                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 === '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 leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                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);            });            // 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');                        // Text Elements            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 === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === '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;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 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;                // Zoom state                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();                    // Max pan depends on how much the image is scaled beyond the wrapper                    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; // Prevent click after pinch                    } 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 });                }                // Expand/Close Logic                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.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            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.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                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 allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    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');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        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();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                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();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        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-1777460447728-wxfqp06hf', false); });      } else {        initialize('fv-chart-1777460447728-wxfqp06hf', false);      }    })();      </script></div><h2 class="article-body__section" id="section-steam-controller-internals"><span>Steam Controller - Internals</span></h2><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/Va9aTIktlSk" allowfullscreen></iframe></div></div><p>You can dismantle the Steam Controller with relative ease and using only a handful of tools: a pair of driver bits (Torx 6 and Torx 5), a spudger, and a pair of tweezers. I've carried out a full <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-teardown-simple-to-open-easy-to-fix" target="_blank">Steam Controller teardown</a> as you can see above, and it only takes just 15 minutes to get from built to bits.</p><p>Valve tells me that it is planning to offer official spare parts via iFixit, as it currently does for the Steam Deck. This won't be available at launch but sometime after. That means any future repairs should be very straightforward, though I suspect it will also entice modders to take things further. </p><p>If anyone designs a translucent Steam Controller shell, you have a customer right here.</p><p>Though we did experience minor issues with the two samples we received for review. One had a faint squeak when the trigger was reset, which I fixed by prodding the spring, and the other a slightly misaligned shell that gave it a bit of a rough-feeling edge.</p><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><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');        /* Reset & Base */    #fv-chart-1777460546872-uvtew7plg *, #fv-chart-1777460546872-uvtew7plg *:before, #fv-chart-1777460546872-uvtew7plg *:after, #fv-chart-1777460546872-uvtew7plg-slideshow *, #fv-chart-1777460546872-uvtew7plg-slideshow *:before, #fv-chart-1777460546872-uvtew7plg-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777460546872-uvtew7plg, #fv-chart-1777460546872-uvtew7plg-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777460546872-uvtew7plg {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777460546872-uvtew7plg.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777460546872-uvtew7plg.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-1777460546872-uvtew7plg .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;    }            /* Slideshow Styles */    #fv-chart-1777460546872-uvtew7plg-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777460546872-uvtew7plg-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777460546872-uvtew7plg-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777460546872-uvtew7plg-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-1777460546872-uvtew7plg-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-1777460546872-uvtew7plg-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777460546872-uvtew7plg-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777460546872-uvtew7plg-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-1777460546872-uvtew7plg-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;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777460546872-uvtew7plg-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-1777460546872-uvtew7plg-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .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; }    /* Versus Chart */    #fv-chart-1777460546872-uvtew7plg .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460546872-uvtew7plg .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .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; }    /* Image Comparison Styles */    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777460546872-uvtew7plg.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777460546872-uvtew7plg .fv-image-compare-expand-btn,    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-image-compare-expand-btn:hover,    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777460546872-uvtew7plg .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777460546872-uvtew7plg .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777460546872-uvtew7plg .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;    }    /* Display Mode Controls */    #fv-chart-1777460546872-uvtew7plg .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777460546872-uvtew7plg .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777460546872-uvtew7plg .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777460546872-uvtew7plg .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-bar-row, #fv-chart-1777460546872-uvtew7plg .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777460546872-uvtew7plg .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777460546872-uvtew7plg .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777460546872-uvtew7plg .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777460546872-uvtew7plg .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777460546872-uvtew7plg .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777460546872-uvtew7plg .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777460546872-uvtew7plg .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .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; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777460546872-uvtew7plg .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777460546872-uvtew7plg.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777460546872-uvtew7plg.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777460546872-uvtew7plg .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777460546872-uvtew7plg .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777460546872-uvtew7plg .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777460546872-uvtew7plg .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777460546872-uvtew7plg.mobile-view #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777460546872-uvtew7plg.mobile-view #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777460546872-uvtew7plg.mobile-view #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777460546872-uvtew7plg.mobile-view .fv-pie-container,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-bar-row,    #fv-chart-1777460546872-uvtew7plg.mobile-view .fv-stacked-product,    #fv-chart-1777460546872-uvtew7plg.mobile-view .fv-grouped-bar-product,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-bar-row,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-stacked-product,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777460546872-uvtew7plg.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-1777460546872-uvtew7plg.mobile-view .fv-bar-label,    #fv-chart-1777460546872-uvtew7plg.mobile-view .fv-grouped-product-title,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-bar-label,    #fv-chart-1777460546872-uvtew7plg.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-1777460546872-uvtew7plg.mobile-view .fv-bar-container,    #fv-chart-1777460546872-uvtew7plg.mobile-view .fv-bar-cluster,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-bar-container,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-x-axis-label-space,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-benchmark-title,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-dropdown-title,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-chart-title,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-chart-subhead,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-header,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-vs,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-select-container,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-select,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777460546872-uvtew7plg.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777460546872-uvtew7plg.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777460546872-uvtew7plg .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777460546872-uvtew7plg .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-bar-row,        #fv-chart-1777460546872-uvtew7plg .fv-stacked-product,        #fv-chart-1777460546872-uvtew7plg .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-bar-label,        #fv-chart-1777460546872-uvtew7plg .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-1777460546872-uvtew7plg .fv-bar-container,        #fv-chart-1777460546872-uvtew7plg .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777460546872-uvtew7plg .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777460546872-uvtew7plg .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777460546872-uvtew7plg .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777460546872-uvtew7plg .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777460546872-uvtew7plg .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777460546872-uvtew7plg .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777460546872-uvtew7plg .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777460546872-uvtew7plg.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": "Valve has designed the inside of the Steam Controller like it was just waiting for someone to rip it open",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T11:02:26.872Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Steam Controller (2026)",    "Internals",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Internals",      "value": 4.5,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777460546872-uvtew7plg" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper   ">            <h3 class="fv-chart-title">Valve has designed the inside of the Steam Controller like it was just waiting for someone to rip it open</h3>                                    <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777460546872-uvtew7plg-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Steam Controller (2026) - Internals: 4.5 ">                    <div class="fv-bar-label">Internals</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 90%; background-color: #E33235;" data-target-width="90">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">4.5</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Internals ()</th></tr></thead>            <tbody><tr><td>Steam Controller (2026)</td><td>4.5</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </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() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          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);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        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) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                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 === '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 leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                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);            });            // 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');                        // Text Elements            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 === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === '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;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 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;                // Zoom state                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();                    // Max pan depends on how much the image is scaled beyond the wrapper                    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; // Prevent click after pinch                    } 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 });                }                // Expand/Close Logic                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.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            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.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                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 allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    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');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        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();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                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();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        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-1777460546872-uvtew7plg', false); });      } else {        initialize('fv-chart-1777460546872-uvtew7plg', false);      }    })();      </script></div><h2 class="article-body__section" id="section-steam-controller-aesthetics"><span>Steam Controller - 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:1919px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="pNnhNDkM4iHpeDF9siHpSY" name="IMG_4263_modified" alt="The Steam Controller on a desk next to its charging dock and a keyboard." src="https://cdn.mos.cms.futurecdn.net/pNnhNDkM4iHpeDF9siHpSY.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>With input parity to the Steam Deck, it makes sense that the Steam Controller also has looks to match. But beyond the obvious similarities, there are some slight differences. </p><p>The Steam Controller has a more textured finish compared to the Steam Deck. It's also a lighter shade of grey, which is noticeable in direct sunlight. The face buttons and D-pad are also larger on the controller, and the slightly recessed trackpads are also tilted for a more natural hand position. The Steam and QAM buttons are also raised, and the shoulder buttons have a little more travel to them.</p><p>It looks more sculpted than some early Reddit mockups of what Valve might do, but not a million miles off what was expected either. Importantly, it looks and feels a lot better than the first-generation Steam Controller. The modern version still has that quality of affordability about it—you'll find much more polished controllers on the market—but it feels solid. The Puck also helps keep your desk or TV unit tidy while keeping the receiver close to the Controller.</p><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><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');        /* Reset & Base */    #fv-chart-1777460863926-hterln9hn *, #fv-chart-1777460863926-hterln9hn *:before, #fv-chart-1777460863926-hterln9hn *:after, #fv-chart-1777460863926-hterln9hn-slideshow *, #fv-chart-1777460863926-hterln9hn-slideshow *:before, #fv-chart-1777460863926-hterln9hn-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777460863926-hterln9hn, #fv-chart-1777460863926-hterln9hn-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777460863926-hterln9hn {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777460863926-hterln9hn.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777460863926-hterln9hn.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-1777460863926-hterln9hn .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;    }            /* Slideshow Styles */    #fv-chart-1777460863926-hterln9hn-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777460863926-hterln9hn-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777460863926-hterln9hn-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777460863926-hterln9hn-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-1777460863926-hterln9hn-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-1777460863926-hterln9hn-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777460863926-hterln9hn-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777460863926-hterln9hn-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-1777460863926-hterln9hn-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;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777460863926-hterln9hn-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-1777460863926-hterln9hn-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .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-1777460863926-hterln9hn .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; }    /* Versus Chart */    #fv-chart-1777460863926-hterln9hn .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777460863926-hterln9hn .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777460863926-hterln9hn .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777460863926-hterln9hn .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777460863926-hterln9hn .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460863926-hterln9hn .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460863926-hterln9hn .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777460863926-hterln9hn .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .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; }    /* Image Comparison Styles */    #fv-chart-1777460863926-hterln9hn .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777460863926-hterln9hn.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .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-1777460863926-hterln9hn .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-1777460863926-hterln9hn .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-1777460863926-hterln9hn .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-1777460863926-hterln9hn .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-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .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-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777460863926-hterln9hn .fv-image-compare-expand-btn,    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-image-compare-expand-btn:hover,    #fv-chart-1777460863926-hterln9hn .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777460863926-hterln9hn .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777460863926-hterln9hn .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777460863926-hterln9hn .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;    }    /* Display Mode Controls */    #fv-chart-1777460863926-hterln9hn .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777460863926-hterln9hn .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777460863926-hterln9hn .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .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-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777460863926-hterln9hn .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777460863926-hterln9hn .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777460863926-hterln9hn .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-bar-row, #fv-chart-1777460863926-hterln9hn .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .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-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777460863926-hterln9hn .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777460863926-hterln9hn .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777460863926-hterln9hn .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777460863926-hterln9hn .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777460863926-hterln9hn .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777460863926-hterln9hn .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777460863926-hterln9hn .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777460863926-hterln9hn .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777460863926-hterln9hn .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777460863926-hterln9hn .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777460863926-hterln9hn .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777460863926-hterln9hn .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .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; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777460863926-hterln9hn .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777460863926-hterln9hn.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777460863926-hterln9hn.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777460863926-hterln9hn .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777460863926-hterln9hn .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777460863926-hterln9hn .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777460863926-hterln9hn .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777460863926-hterln9hn.mobile-view #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777460863926-hterln9hn.mobile-view #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777460863926-hterln9hn.mobile-view #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777460863926-hterln9hn.mobile-view .fv-pie-container,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-bar-row,    #fv-chart-1777460863926-hterln9hn.mobile-view .fv-stacked-product,    #fv-chart-1777460863926-hterln9hn.mobile-view .fv-grouped-bar-product,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-bar-row,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-stacked-product,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777460863926-hterln9hn.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-1777460863926-hterln9hn.mobile-view .fv-bar-label,    #fv-chart-1777460863926-hterln9hn.mobile-view .fv-grouped-product-title,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-bar-label,    #fv-chart-1777460863926-hterln9hn.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-1777460863926-hterln9hn.mobile-view .fv-bar-container,    #fv-chart-1777460863926-hterln9hn.mobile-view .fv-bar-cluster,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-bar-container,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-x-axis-label-space,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-benchmark-title,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-dropdown-title,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-chart-title,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-chart-subhead,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-header,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-vs,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-select-container,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-select,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777460863926-hterln9hn.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777460863926-hterln9hn.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777460863926-hterln9hn .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777460863926-hterln9hn .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777460863926-hterln9hn .fv-bar-row,        #fv-chart-1777460863926-hterln9hn .fv-stacked-product,        #fv-chart-1777460863926-hterln9hn .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-bar-label,        #fv-chart-1777460863926-hterln9hn .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-1777460863926-hterln9hn .fv-bar-container,        #fv-chart-1777460863926-hterln9hn .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777460863926-hterln9hn .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777460863926-hterln9hn .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777460863926-hterln9hn .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777460863926-hterln9hn .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777460863926-hterln9hn .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777460863926-hterln9hn .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777460863926-hterln9hn .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777460863926-hterln9hn .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777460863926-hterln9hn .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777460863926-hterln9hn.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": "A big step-up in quality over what came before and a match for Valve's upcoming hardware",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T11:07:43.926Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Steam Controller (2026)",    "Aesthetics",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Aesthetics",      "value": 4,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777460863926-hterln9hn" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper   ">            <h3 class="fv-chart-title">A big step-up in quality over what came before and a match for Valve's upcoming hardware</h3>                                    <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777460863926-hterln9hn-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Steam Controller (2026) - Aesthetics: 4 ">                    <div class="fv-bar-label">Aesthetics</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 80%; background-color: #E33235;" data-target-width="80">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">4</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Aesthetics ()</th></tr></thead>            <tbody><tr><td>Steam Controller (2026)</td><td>4</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </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() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          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);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        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) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                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 === '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 leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                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);            });            // 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');                        // Text Elements            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 === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === '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;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 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;                // Zoom state                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();                    // Max pan depends on how much the image is scaled beyond the wrapper                    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; // Prevent click after pinch                    } 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 });                }                // Expand/Close Logic                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.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            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.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                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 allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    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');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        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();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                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();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        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-1777460863926-hterln9hn', false); });      } else {        initialize('fv-chart-1777460863926-hterln9hn', false);      }    })();      </script></div><h2 class="article-body__section" id="section-steam-controller-software"><span>Steam Controller - 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="e2sgfYGNVJY685okvFvfCX" name="update-page" alt="The Steam Controller getting an update in Steam." src="https://cdn.mos.cms.futurecdn.net/e2sgfYGNVJY685okvFvfCX.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Valve)</span></figcaption></figure><p>The Steam Controller, unsurprisingly, relies on Steam for all its software needs.</p><p>You'll find all the settings in the Controller tab of the Settings menu. There's a Pair and Manage tab, which shows the pairing status of the included Puck. It can be connected to up to four Steam Controllers at once, though there's one included in every box. You'll also see two further wireless pairing slots at the bottom. These are for the controller itself, as you could connect a single controller to multiple PCs or a PC and a Steam Machine.</p><p>There's also another Bluetooth pairing slot that's not displayed, though this is the best way to connect the controller to a Steam Deck without a cable. </p><p>Here how you access Bluetooth and a few other useful shortcuts:</p><ul><li><strong>Power on into Bluetooth pairing slot:</strong> B + R1/L1 + Steam button</li><li><strong>Power on into wireless pairing slot 1:</strong> Hold A + R1 + Steam button</li><li><strong>Power on into wireless pairing slot 2:</strong> Hold A + L1 + Steam button</li><li><strong>Power off:</strong> Steam button + Y</li><li><strong>Open Steam: </strong>Steam button</li><li><strong>Big Picture Mode (while in Steam): </strong>Steam button</li><li><strong>Show keyboard:</strong> X (in desktop layout)</li></ul><p>While a controller is connected, a new 'Steam Controller' tab populates with extra settings to mess with. In this tab, you can rename the controller, identify it (which causes it to rumble and ring out like an old Nokia), adjust button layouts, or test the controller inputs.</p><p>To take advantage of the trackpads for desktop browsing or gyro controls, you need to set these up in the Pair and Manage tab. Click to edit the desktop layout and you're able to select different behaviours for the gyro and right trackpad, as well as adjust button mapping and sensitivity. There's actually a whole lot of customisation possible through this screen. If that's not enough, by clicking on the cogwheels to the right of either gyro or trackpad options, there are further fine-tuning options. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/sv6VjC3drjobjGVhSwWHSX.jpg" alt="The Steam Controller settings in the Steam client." /><figcaption><small role="credit">Valve</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wjFL3os6vxUY8zn8tD3tKX.jpg" alt="The Steam Controller gyro settings and calibration in the Steam client." /><figcaption><small role="credit">Valve</small></figcaption></figure></figure><p>For example, you can adjust the gyro controls to only function when you're holding a specific button. By default, this is set to utilise the capacitive touch sensing in the right thumbstick and right trackpad. Gyro will also only be enabled when you're holding the controller via Grip Sense. Though, if you're a leftie, you might want to switch this over to left thumbstick and left trackpad, or set it to only when you press certain inputs. It's up to you.</p><p>There's nothing that requires changing out of the box. Some settings for the gyro, at least, will be handy when setting it up for use in a certain game. Though you can access custom layouts for that, both your own configurations or those of the community. Since this has input parity with the Steam Deck, you can use any made for the Deck, too. I've tried a few, and they often work well, if only with a couple tweaks.</p><p>The Controller requires Steam or the Steam Link app. I tested it on GeForce Now via my iPhone and while it did connect over Bluetooth, it was not recognised in-game. It did, however, work seamlessly over a local connection using Steam Link.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/6y4SF5ozG7z9fwRUQ3TSQX.jpg" alt="The Steam Controller pairing settings in the Steam client." /><figcaption><small role="credit">Valve</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/dkAcgb3sP5bcwWrqsxpqQX.jpg" alt="The Steam Controller settings in the Steam client." /><figcaption><small role="credit">Valve</small></figcaption></figure></figure><p>We also had some teething issues with Ubuntu and Pop! OS, which may be on our end as much as Valve's, but there could be futher tweaks required to get up-and-running off SteamOS and Windows.</p><p>One thing you might run into with the Steam Controller is attempting to use it while playing a non-Steam game. There are few options here. You can add a game to Steam and simply run it within the client, which should let you set game-specific controller configurations. Or you can use a desktop profile that just broadly applies to your entire system. </p><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="5Tqj5jkATxptKGNCEtF6WX" name="community-layout" alt="A community layout for Peak in the loading screen." src="https://cdn.mos.cms.futurecdn.net/5Tqj5jkATxptKGNCEtF6WX.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Valve)</span></figcaption></figure><p>I found the former approach didn't work with Kingdom Come Deliverance II, which I have on Epic and must be booted via the Epic Games Launcher. That's a fairly common issue with some launchers. I tried a few different methods to get around this, such as creating a shortcut in the Epic launcher and adding that to Steam with a launch parameter, but Controller support was funky at best. Instead, I found it easier to just make a new desktop layout tailored to Kingdom Come Deliverance II and selecting that via Steam's settings page. You could do the same for any game. Though some games don't support reconfiguring the back buttons— KCD2 is one of them—gyro controls worked without issue in every game I tried.</p><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><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');        /* Reset & Base */    #fv-chart-1777461085020-astu60izb *, #fv-chart-1777461085020-astu60izb *:before, #fv-chart-1777461085020-astu60izb *:after, #fv-chart-1777461085020-astu60izb-slideshow *, #fv-chart-1777461085020-astu60izb-slideshow *:before, #fv-chart-1777461085020-astu60izb-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777461085020-astu60izb, #fv-chart-1777461085020-astu60izb-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777461085020-astu60izb {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777461085020-astu60izb.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777461085020-astu60izb.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-1777461085020-astu60izb .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;    }            /* Slideshow Styles */    #fv-chart-1777461085020-astu60izb-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777461085020-astu60izb-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777461085020-astu60izb-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777461085020-astu60izb-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-1777461085020-astu60izb-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-1777461085020-astu60izb-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777461085020-astu60izb-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777461085020-astu60izb-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-1777461085020-astu60izb-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;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777461085020-astu60izb-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-1777461085020-astu60izb-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .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-1777461085020-astu60izb .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; }    /* Versus Chart */    #fv-chart-1777461085020-astu60izb .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777461085020-astu60izb .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777461085020-astu60izb .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777461085020-astu60izb .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777461085020-astu60izb .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777461085020-astu60izb .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777461085020-astu60izb .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777461085020-astu60izb .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .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; }    /* Image Comparison Styles */    #fv-chart-1777461085020-astu60izb .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777461085020-astu60izb.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .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-1777461085020-astu60izb .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-1777461085020-astu60izb .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-1777461085020-astu60izb .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-1777461085020-astu60izb .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-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .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-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777461085020-astu60izb .fv-image-compare-expand-btn,    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-image-compare-expand-btn:hover,    #fv-chart-1777461085020-astu60izb .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777461085020-astu60izb .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777461085020-astu60izb .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777461085020-astu60izb .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;    }    /* Display Mode Controls */    #fv-chart-1777461085020-astu60izb .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777461085020-astu60izb .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777461085020-astu60izb .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .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-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777461085020-astu60izb .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777461085020-astu60izb .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777461085020-astu60izb .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-bar-row, #fv-chart-1777461085020-astu60izb .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .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-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777461085020-astu60izb .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777461085020-astu60izb .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777461085020-astu60izb .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777461085020-astu60izb .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777461085020-astu60izb .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777461085020-astu60izb .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777461085020-astu60izb .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777461085020-astu60izb .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777461085020-astu60izb .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777461085020-astu60izb .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777461085020-astu60izb .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777461085020-astu60izb .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .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; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777461085020-astu60izb .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777461085020-astu60izb.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777461085020-astu60izb.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777461085020-astu60izb .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777461085020-astu60izb .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777461085020-astu60izb .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777461085020-astu60izb .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777461085020-astu60izb.mobile-view #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777461085020-astu60izb.mobile-view #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777461085020-astu60izb.mobile-view #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777461085020-astu60izb.mobile-view .fv-pie-container,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-bar-row,    #fv-chart-1777461085020-astu60izb.mobile-view .fv-stacked-product,    #fv-chart-1777461085020-astu60izb.mobile-view .fv-grouped-bar-product,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-bar-row,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-stacked-product,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777461085020-astu60izb.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-1777461085020-astu60izb.mobile-view .fv-bar-label,    #fv-chart-1777461085020-astu60izb.mobile-view .fv-grouped-product-title,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-bar-label,    #fv-chart-1777461085020-astu60izb.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-1777461085020-astu60izb.mobile-view .fv-bar-container,    #fv-chart-1777461085020-astu60izb.mobile-view .fv-bar-cluster,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-bar-container,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-x-axis-label-space,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-benchmark-title,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-dropdown-title,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-chart-title,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-chart-subhead,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-header,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-vs,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-select-container,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-select,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777461085020-astu60izb.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777461085020-astu60izb.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777461085020-astu60izb .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777461085020-astu60izb .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777461085020-astu60izb .fv-bar-row,        #fv-chart-1777461085020-astu60izb .fv-stacked-product,        #fv-chart-1777461085020-astu60izb .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-bar-label,        #fv-chart-1777461085020-astu60izb .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-1777461085020-astu60izb .fv-bar-container,        #fv-chart-1777461085020-astu60izb .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777461085020-astu60izb .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777461085020-astu60izb .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777461085020-astu60izb .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777461085020-astu60izb .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777461085020-astu60izb .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777461085020-astu60izb .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777461085020-astu60izb .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777461085020-astu60izb .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777461085020-astu60izb .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777461085020-astu60izb.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": "There are lots of ways to configure the Steam Controller but, as the name suggests, it works best through Steam",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T11:11:25.021Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Steam Controller (2026)",    "Software",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Software",      "value": 3.5,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777461085020-astu60izb" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper   ">            <h3 class="fv-chart-title">There are lots of ways to configure the Steam Controller but, as the name suggests, it works best through Steam</h3>                                    <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777461085020-astu60izb-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Steam Controller (2026) - Software: 3.5 ">                    <div class="fv-bar-label">Software</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 70%; background-color: #E33235;" data-target-width="70">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">3.5</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Software ()</th></tr></thead>            <tbody><tr><td>Steam Controller (2026)</td><td>3.5</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </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() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          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);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        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) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                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 === '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 leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                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);            });            // 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');                        // Text Elements            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 === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === '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;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 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;                // Zoom state                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();                    // Max pan depends on how much the image is scaled beyond the wrapper                    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; // Prevent click after pinch                    } 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 });                }                // Expand/Close Logic                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.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            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.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                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 allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    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');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        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();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                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();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        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-1777461085020-astu60izb', false); });      } else {        initialize('fv-chart-1777461085020-astu60izb', false);      }    })();      </script></div><h2 class="article-body__section" id="section-steam-controller-battery"><span>Steam Controller - Battery</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/iCStRVfbcgSCJWxZgdUX4Y.jpg" alt="The Steam Controller on a desk with the Puck in the foreground" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/gokZLz3s9yr77LP6yPRX4Y.jpg" alt="The Steam Controller on a desk with the Puck in the foreground" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I'm yet to reach the end of a full charge with the Steam Controller. Valve has the battery life at 35 hours or more, and over the past few days, I've been using it as much as I can across any game I'm playing. I'm even putting my exfils in jeopardy in Marathon by ditching a mouse and keyboard (sorry, console players, but a controller is simply not cutting it). So far, so good. Though it's tough to say how much battery I have burned through exactly, as you can only roughly estimate from the Quick Access Menu icon.</p><p>Though in my tests, I ran it for eight hours and checked back on that Quick Access menu battery indicator, and lo and behold, it's still fully green. So a good indication of battery life to come.</p><p>Many users may not see the end of a full charge, well, ever. The Puck doubles up as a charging accessory and magnetically attaches to the rear of the controller when you place it down over it. If you set that up somewhere convenient besides your monitor or on a TV stand and make sure to return the controller to it once you're done playing, it'll always be ready to go.</p><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><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');        /* Reset & Base */    #fv-chart-1777461184550-4tuucthjw *, #fv-chart-1777461184550-4tuucthjw *:before, #fv-chart-1777461184550-4tuucthjw *:after, #fv-chart-1777461184550-4tuucthjw-slideshow *, #fv-chart-1777461184550-4tuucthjw-slideshow *:before, #fv-chart-1777461184550-4tuucthjw-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777461184550-4tuucthjw, #fv-chart-1777461184550-4tuucthjw-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777461184550-4tuucthjw {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777461184550-4tuucthjw.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777461184550-4tuucthjw.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-1777461184550-4tuucthjw .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;    }            /* Slideshow Styles */    #fv-chart-1777461184550-4tuucthjw-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777461184550-4tuucthjw-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777461184550-4tuucthjw-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777461184550-4tuucthjw-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-1777461184550-4tuucthjw-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-1777461184550-4tuucthjw-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777461184550-4tuucthjw-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777461184550-4tuucthjw-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-1777461184550-4tuucthjw-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;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777461184550-4tuucthjw-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-1777461184550-4tuucthjw-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .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; }    /* Versus Chart */    #fv-chart-1777461184550-4tuucthjw .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777461184550-4tuucthjw .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .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; }    /* Image Comparison Styles */    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777461184550-4tuucthjw.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777461184550-4tuucthjw .fv-image-compare-expand-btn,    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-image-compare-expand-btn:hover,    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777461184550-4tuucthjw .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777461184550-4tuucthjw .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777461184550-4tuucthjw .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;    }    /* Display Mode Controls */    #fv-chart-1777461184550-4tuucthjw .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777461184550-4tuucthjw .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777461184550-4tuucthjw .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777461184550-4tuucthjw .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-bar-row, #fv-chart-1777461184550-4tuucthjw .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777461184550-4tuucthjw .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777461184550-4tuucthjw .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777461184550-4tuucthjw .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777461184550-4tuucthjw .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777461184550-4tuucthjw .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777461184550-4tuucthjw .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777461184550-4tuucthjw .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .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; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777461184550-4tuucthjw .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777461184550-4tuucthjw.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777461184550-4tuucthjw.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777461184550-4tuucthjw .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777461184550-4tuucthjw .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777461184550-4tuucthjw .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777461184550-4tuucthjw .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777461184550-4tuucthjw.mobile-view #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777461184550-4tuucthjw.mobile-view #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777461184550-4tuucthjw.mobile-view #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777461184550-4tuucthjw.mobile-view .fv-pie-container,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-bar-row,    #fv-chart-1777461184550-4tuucthjw.mobile-view .fv-stacked-product,    #fv-chart-1777461184550-4tuucthjw.mobile-view .fv-grouped-bar-product,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-bar-row,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-stacked-product,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777461184550-4tuucthjw.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-1777461184550-4tuucthjw.mobile-view .fv-bar-label,    #fv-chart-1777461184550-4tuucthjw.mobile-view .fv-grouped-product-title,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-bar-label,    #fv-chart-1777461184550-4tuucthjw.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-1777461184550-4tuucthjw.mobile-view .fv-bar-container,    #fv-chart-1777461184550-4tuucthjw.mobile-view .fv-bar-cluster,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-bar-container,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-x-axis-label-space,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-benchmark-title,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-dropdown-title,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-chart-title,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-chart-subhead,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-header,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-vs,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-select-container,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-select,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777461184550-4tuucthjw.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777461184550-4tuucthjw.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777461184550-4tuucthjw .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777461184550-4tuucthjw .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-bar-row,        #fv-chart-1777461184550-4tuucthjw .fv-stacked-product,        #fv-chart-1777461184550-4tuucthjw .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-bar-label,        #fv-chart-1777461184550-4tuucthjw .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-1777461184550-4tuucthjw .fv-bar-container,        #fv-chart-1777461184550-4tuucthjw .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777461184550-4tuucthjw .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777461184550-4tuucthjw .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777461184550-4tuucthjw .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777461184550-4tuucthjw .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777461184550-4tuucthjw .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777461184550-4tuucthjw .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777461184550-4tuucthjw .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777461184550-4tuucthjw.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": "A 35-hour battery life is solid but thanks to the charging Puck you don't have to think about it",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T11:13:04.551Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Steam Controller (2026)",    "Battery",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Battery",      "value": 5,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777461184550-4tuucthjw" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper   ">            <h3 class="fv-chart-title">A 35-hour battery life is solid but thanks to the charging Puck you don't have to think about it</h3>                                    <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777461184550-4tuucthjw-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Steam Controller (2026) - Battery: 5 ">                    <div class="fv-bar-label">Battery</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 100%; background-color: #E33235;" data-target-width="100">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">5</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Battery ()</th></tr></thead>            <tbody><tr><td>Steam Controller (2026)</td><td>5</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </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() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          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);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        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) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                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 === '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 leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                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);            });            // 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');                        // Text Elements            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 === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === '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;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 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;                // Zoom state                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();                    // Max pan depends on how much the image is scaled beyond the wrapper                    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; // Prevent click after pinch                    } 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 });                }                // Expand/Close Logic                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.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            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.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                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 allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    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');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        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();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                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();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        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-1777461184550-4tuucthjw', false); });      } else {        initialize('fv-chart-1777461184550-4tuucthjw', false);      }    })();      </script></div><h2 class="article-body__section" id="section-steam-controller-value"><span>Steam Controller - 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="rJZF2ynFyLsqQj769NLLTY" name="IMG_4232_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/rJZF2ynFyLsqQj769NLLTY.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 Controller costs $99 (€99/£85/$149 AUD). </p><p>I didn't know what the price was going to be during my initial testing, and when I was sent it after a few days, I was slightly taken aback. Perhaps it's because the first-generation Steam Controller was sold at a miserly $5 at the end of its life, and the Steam Deck makes most other handhelds look overpriced, but it felt higher than I expected. Yet I've been poking around the controller market and I've come to a different conclusion.</p><p>On one end of the market, pads such as the <a href="https://www.pcgamer.com/hardware/controllers/scuf-envision-pro-review/" target="_blank">Scuf Envision Pro ($160)</a>, <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-review/" target="_blank">Razer Wolverine V3 Pro ($150)</a>, <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro 8K ($200)</a>, <a href="https://www.pcgamer.com/hardware/game-pads/razer-raiju-v3-pro-review/" target="_blank">Razer Raiju V3 Pro ($220)</a>, <a href="https://www.pcgamer.com/hardware/game-pads/scuf-valor-pro-review/" target="_blank">Scuf Valor Pro ($190)</a>, and <a href="https://www.pcgamer.com/hardware/game-pads/victrix-pro-bfg-reloaded-review/" target="_blank">Victrix Pro BFG Reloaded ($210)</a>. The Steam Controller is not a competitive pad that could go toe-to-toe with many of these for competitive play and understandably carries a much lower price tag for that consideration.</p><p>On the cheaper end, pads like the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">GameSir Nova Lite ($25)</a>, <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d05-review/" target="_blank">EasySMX D05 ($45)</a>, <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d10-review/" target="_blank">EasySMX D10 ($60)</a>, and <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro Tri-mode ($80)</a>. In some ways, these offer similar if not slightly improved features to the Steam Controller: the GameSir Nova Lite 2 has Hall effect thumbsticks, a 1000 Hz polling rate, trigger stops, and a mechanical D-pad for <a href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3D25PD3/ref=sr_1_3?" target="_blank">$27</a>. These budget pads don't always feel super polished in terms of inputs and feel, but then neither does the Steam Controller.</p><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="MKury4PjJvZ2Kog4A2ovNY" name="IMG_4227_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/MKury4PjJvZ2Kog4A2ovNY.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>So, the Steam Controller can't compete with competitive controllers, nor on value for money with simpler pads. It can, however, compete on its all-round utility. You have to ask yourself how much value you assign to not having to get up off the couch to navigate the desktop or play a strategy game.</p><p>Personally, I could go without the extra inputs most of the time. Valve already provides a useful and free alternative to mouse and keyboard in Big Picture Mode, which offers easy access to most of what Steam has to offer and can be navigated easily with a standard controller. I mostly play horror, rhythm, and racing games on my living room PC, and as such, I don't find myself having to grab a keyboard or mouse all that often. </p><p>PC gaming usually requires some amount of messing around in the settings or copying files, and in those cases, the Steam Controller comes into its own.</p><p>While there are other controllers with gyro controls, through its trackpads and software integration, the Steam Controller offers a complete package that few others do. Though just because it can do a lot of stuff, doesn't mean you need it to—a more affordable pad with less going will be good enough for many PC gamers.</p><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><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');        /* Reset & Base */    #fv-chart-1777461236712-pw1uv9eih *, #fv-chart-1777461236712-pw1uv9eih *:before, #fv-chart-1777461236712-pw1uv9eih *:after, #fv-chart-1777461236712-pw1uv9eih-slideshow *, #fv-chart-1777461236712-pw1uv9eih-slideshow *:before, #fv-chart-1777461236712-pw1uv9eih-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777461236712-pw1uv9eih, #fv-chart-1777461236712-pw1uv9eih-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777461236712-pw1uv9eih {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777461236712-pw1uv9eih.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777461236712-pw1uv9eih.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-1777461236712-pw1uv9eih .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;    }            /* Slideshow Styles */    #fv-chart-1777461236712-pw1uv9eih-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777461236712-pw1uv9eih-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-1777461236712-pw1uv9eih-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-1777461236712-pw1uv9eih-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777461236712-pw1uv9eih-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-1777461236712-pw1uv9eih-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;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777461236712-pw1uv9eih-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-1777461236712-pw1uv9eih-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .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; }    /* Versus Chart */    #fv-chart-1777461236712-pw1uv9eih .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777461236712-pw1uv9eih .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .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; }    /* Image Comparison Styles */    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777461236712-pw1uv9eih.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-expand-btn,    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-image-compare-expand-btn:hover,    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777461236712-pw1uv9eih .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777461236712-pw1uv9eih .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;    }    /* Display Mode Controls */    #fv-chart-1777461236712-pw1uv9eih .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777461236712-pw1uv9eih .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-bar-row, #fv-chart-1777461236712-pw1uv9eih .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777461236712-pw1uv9eih .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777461236712-pw1uv9eih .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777461236712-pw1uv9eih .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777461236712-pw1uv9eih .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .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; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777461236712-pw1uv9eih .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777461236712-pw1uv9eih.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777461236712-pw1uv9eih.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777461236712-pw1uv9eih .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777461236712-pw1uv9eih .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777461236712-pw1uv9eih .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777461236712-pw1uv9eih .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777461236712-pw1uv9eih.mobile-view #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777461236712-pw1uv9eih.mobile-view #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777461236712-pw1uv9eih.mobile-view #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-pie-container,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-bar-row,    #fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-stacked-product,    #fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-grouped-bar-product,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-bar-row,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-stacked-product,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777461236712-pw1uv9eih.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-1777461236712-pw1uv9eih.mobile-view .fv-bar-label,    #fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-grouped-product-title,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-bar-label,    #fv-chart-1777461236712-pw1uv9eih.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-1777461236712-pw1uv9eih.mobile-view .fv-bar-container,    #fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-bar-cluster,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-bar-container,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-x-axis-label-space,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-benchmark-title,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-dropdown-title,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-chart-title,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-chart-subhead,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-header,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-vs,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-select-container,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-select,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777461236712-pw1uv9eih.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777461236712-pw1uv9eih .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-bar-row,        #fv-chart-1777461236712-pw1uv9eih .fv-stacked-product,        #fv-chart-1777461236712-pw1uv9eih .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-bar-label,        #fv-chart-1777461236712-pw1uv9eih .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-1777461236712-pw1uv9eih .fv-bar-container,        #fv-chart-1777461236712-pw1uv9eih .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777461236712-pw1uv9eih .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777461236712-pw1uv9eih.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": "Valve has a unique offering in the Steam Controller and its price tag reflects that. But you could spend a lot less on a gamepad",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T11:13:56.713Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Steam Controller (2026)",    "Value",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Value",      "value": 3,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777461236712-pw1uv9eih" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper   ">            <h3 class="fv-chart-title">Valve has a unique offering in the Steam Controller and its price tag reflects that. But you could spend a lot less on a gamepad</h3>                                    <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777461236712-pw1uv9eih-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Steam Controller (2026) - Value: 3 ">                    <div class="fv-bar-label">Value</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 60%; background-color: #E33235;" data-target-width="60">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">3</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Value ()</th></tr></thead>            <tbody><tr><td>Steam Controller (2026)</td><td>3</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </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() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          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);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        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) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                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 === '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 leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                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);            });            // 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');                        // Text Elements            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 === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === '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;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 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;                // Zoom state                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();                    // Max pan depends on how much the image is scaled beyond the wrapper                    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; // Prevent click after pinch                    } 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 });                }                // Expand/Close Logic                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.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            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.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                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 allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    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');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        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();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                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();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        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-1777461236712-pw1uv9eih', false); });      } else {        initialize('fv-chart-1777461236712-pw1uv9eih', false);      }    })();      </script></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ New Steam Controller reportedly $99 ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/new-steam-controller-reportedly-usd99/</link>
                                                                            <description>
                            <![CDATA[ Premium price? Definitely. Premium product? We'll see. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3L5eXH3NjHxfNwo5qXMrkh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/AszbJKeMrYAQd96mWXE5-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 25 Apr 2026 17:59:03 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ ted.litchfield@futurenet.com (Ted Litchfield) ]]></author>                    <dc:creator><![CDATA[ Ted Litchfield ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/8DyQVBz7FCynDY9QiJyH9D.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/AszbJKeMrYAQd96mWXE5-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:description>                                                            <media:text><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:text>
                                <media:title type="plain"><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/AszbJKeMrYAQd96mWXE5-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>As reported by <a href="https://www.vice.com/en/article/steam-controller-price-leaked-by-early-review-and-its-expensive/" target="_blank">Vice</a>, it appears that a review of Valve's new Steam controller was shared early to YouTube by the channel TechyTalk before getting pulled from the platform⁠—but users quickly screen recorded the review and shared it to other sites, like <a href="https://streamable.com/lj7ut3" target="_blank">Streamable</a>. The review revealed the new controller's MSRP: $100 ($99, but come on).</p><p>That definitely <em>feels</em> expensive looking at it, but compared to the wider field, it positions the Steam Controller at the more middle/high end of the pack, like 70th percentile. Here's some of the prices for the Steam Controller's competition, pulling from the three major console manufacturers' first party offerings, as well as our Best Controllers buying guide, and arranged from cheapest to most expensive:</p><ul><li><a href="https://www.amazon.com/dp/B0CMCQ6WMC?tag=ftr-pcgamer-us-20&th=1&psc=1&ascsubtag=pcg-us-9108396277305333473-20&geniuslink=true" target="_blank">GameSir Nova Lite</a> (PCG "Best Budget"): $23</li><li><a href="https://www.xbox.com/en-US/accessories/controllers/xbox-wireless-controller#red" target="_blank">Xbox standard wireless</a>: $49-$70</li><li><a href="https://www.playstation.com/en-us/accessories/dualsense-wireless-controller/" target="_blank">PlayStation DualSense</a>: $74+</li><li><a href="https://www.amazon.com/dp/B0FD41XC3P?tag=ftr-pcgamer-us-20&th=1&psc=1&ascsubtag=pcg-us-9108396277305333473-20&geniuslink=true" target="_blank">GameSir G7 Pro</a> (PCG "Best Overall"): $80</li><li><a href="https://www.amazon.com/Nintendo-SwitchTM-2-Pro-Controller-Switch/dp/B0F3VTFD6J?th=1" target="_blank">Switch 2 Pro</a>: $90</li><li><a href="https://www.amazon.com/VALOR-Wired-Performance-Controller-Gaming-Console/dp/B0DTB3F17W/ref=sr_1_1?ascsubtag=pcg-us-1256671101305854702-20&dib=eyJ2IjoiMSJ9.CBDUPetQz7NU_o8EAyIEEZOyItVF2GW-fhzRUSNBX_CdFKOBqQj0MbVDC0ptv1CfR-kyS3duMldb891sUEsSyMlQYEeSqC2mTAh8YWTOjnm88dbw2VvSZ2_irYcIrEkp7PqtYS8EIm3tzc_p__sjgtL_yRRkZrm8iVNW55Nrte_GaRUnOpSjIz5-7VR5Zq2A8kgqMmURi8YvDSdQWEwZdO7tiQZYFS4IPkpHjQGO2sc.Z2QWJoJDknKwsZIAynYQqa0uY8Xh9d_2727ickK9j08&dib_tag=se&geniuslink=true&keywords=Scuf+Instinct+Pro&qid=1777138842&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=8-1&ufe=app_do%3Aamzn1.fos.9fe8cbfa-bf43-43d1-a707-3f4e65a4b666" target="_blank">SCUF Valor Pro</a> (PCG "Best Wired"): $110</li><li><a href="https://www.xbox.com/en-US/accessories/controllers/elite-wireless-controller-series-2" target="_blank">Xbox Elite Series 2</a>: $158-$200+</li><li><a href="https://direct.playstation.com/en-us/buy-accessories/dualsense-edge-wireless-controller?smcid=pdc:us-en:web-pdc-accessories-dualsense-edge-wireless-controller:buttonblock-buy-now" target="_blank">PlayStation DualSense Edge</a>: $200</li><li><a href="https://www.amazon.com/dp/B0FC9DTDJ3?tag=ftr-pcgamer-us-20&th=1&psc=1&ascsubtag=pcg-us-9108396277305333473-20&geniuslink=true" target="_blank">Razer Wolverine</a> (PCG "Best High-End"): $200</li></ul><p>It's a relatively small sample size, but reflective of the current controller market in my experience: You've got the sub-$40 or $50 budget selection, a mid-tier of $50-$100 premium controllers that include the first-party console options, then a bit of a gap before that tryhard esports $150+ bracket. </p><p>The Steam Controller slots in right at the top of the mid-tier, missing some superpremium features like the 8,000 Hz polling of the Razer Wolverine, but offering some niceties you don't see from the big three console manufacturers, like its track pads and Hall Effect analogue sticks⁠—the big three have been confoundingly slow to adopt the latter technology.</p><p>As a final point of comparison, the OG Steam Controller was $50 (really $49.99, but <em>come on</em>) back <a href="https://www.eurogamer.net/valve-announces-the-source-2-engine-which-will-be-free-to-developers" target="_blank">when it launched in 2015</a>. Adjusted for inflation, that's about $70 today, and I think you'd get laughed outta the room if you tried to charge that for a Fisher Price-feeling, owl-faced doohickey with one analogue stick, tiny, mushy face buttons, and two double-A batteries for power⁠—much as I loved my original Steam Controller. RIP, I left the batteries in without using it for a long time and they burst.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Hyperkin Competitor review ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/hyperkin-competitor-review/</link>
                                                                            <description>
                            <![CDATA[ It competes with a home field advantage on bang for buck, but can fall short on away games. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">euxMmPNTRBtjcL6Rz4W3kD</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/3TEoYfnGkzXiCm8xisUHGZ-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 24 Mar 2026 11:59:23 +0000</pubDate>                                                                                                                                <updated>Tue, 24 Mar 2026 13:21:32 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Hope Corrigan ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/8GHv7ZUGwf8bhinBRgQGjb.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/3TEoYfnGkzXiCm8xisUHGZ-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Hyperkin Competitor on a gaming laptop.]]></media:description>                                                            <media:text><![CDATA[The Hyperkin Competitor on a gaming laptop.]]></media:text>
                                <media:title type="plain"><![CDATA[The Hyperkin Competitor on a gaming laptop.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/3TEoYfnGkzXiCm8xisUHGZ-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Controllers typically come in two configurations—the offset stick layout, notable on most Xbox controllers, or the symmetrical design found on PlayStation’s offerings like the DualSense. While mostly pure preference, which is better is an argument that dates all the way back to the 1900s. As one of the survivors, around since the beginnings of this great gaming civil war, one of the biggest issues with this argument is your preference for controller also often locks you into the corresponding console, unless you want to drop serious cash on something custom. </p><p>This is something Hyperkin’s The Competitor aims to fix, by offering symmetrical sticks for Xbox and PC at a much cheaper price than a PS5 controller. As a huge fan of their Duke (OG Xbox pad reboot) I have been very keen to check it out.</p><p>The Competitor comes in two colour options, a flat black and a black and white mix up that’s clearly there to evoke those PS5 DualSense aesthetics. The latter is the one I’ve been reviewing, and the way the colours surround the logo always makes me think it’s wearing some kind of Super-Hero outfit. It’s almost comedic parody but still fairly stylish. It has its super suit, but does that mean it’s the greatest good we are ever going to get? (An Incredibles reference to further show my withering corporeal form).</p><p>Coming in at around $57 USD, this controller means you forgo a few features, but it’s also surprising what Hyperkin has packed into this pad. Though if you look at the Australian pricing, which ranges from $85 to $120 dollerydoos depending on retailer, it almost feels subpar for the price. You can get something like the PowerA wireless Dragon controller here which has far more features, like extra programmable back buttons and a light up dragon on it, for the same price range.</p><div  class="fancy-box"><div class="fancy_box-title">Competitor specs</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QLLD4W9cMjjt6cXWhzgF6a" name="20260128_132421" caption="" alt="The Hyperkin Competitor on a gaming laptop." src="https://cdn.mos.cms.futurecdn.net/QLLD4W9cMjjt6cXWhzgF6a.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text"><strong>Triggers: </strong>HE<br><strong>Face Buttons:</strong> Xbox Layout<br><strong>Back buttons: </strong>Two programmable and lockable on the controller without any external programs<br><strong>Sticks:</strong> Symmetrical Hall effect<br><strong>Connections: </strong>USB Type-C (A to C cable provided) 3.5 mm headphone jack<br><strong>Price:</strong> $57 USD | $85 AUD | £30</p></div></div><p>It’s completely wired, so you can’t connect via Bluetooth or dongle, but comes with one of the longer USB Type-C (Controller) to Type-A cable (PC/Xbox) I’ve ever seen. It almost provides the freedom of wireless, and as a a bonus it, even matches the black and white styling at the connection points. </p><p>This means the controller is also fairly light. My scales have it at around 250 grams. The official weight is 234 grams. The lack of batteries to weigh it down, is noticeable when I act like my hands are scales for two controllers, but I can’t say I notice the difference when swapping between this and a standard wireless Xbox Controller for play. </p><p>It’s important to note this is far from a DualSense controller. It’s a fraction of the price, for starters, but it also has regular triggers and rather unremarkable and haptics. The triggers remind me a bit of older PlayStation controllers so still have a good feel, but they’re aren’t customisable and are fairly simple. The same goes for the rumble, which could use a little more heft to help me notice when I’m dying while hyper focused. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ZZRDjynx2mqHpVaheA3X2a.jpg" alt="The Hyperkin Competitor on a gaming laptop." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/KEBWUHapFKYM2nmsKAg57a.jpg" alt="The Hyperkin Competitor on a gaming laptop." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Something it does share with controllers above its pay grade are programmable back buttons. Because this controller is wired and designed to be plug-and-play the two back buttons which rest on the inner grips of the controller can all be programmed and disabled on the controller itself. No annoying software required. You are limited to which buttons they can mirror, but mapping the left to X and right to B has given me easily identifiable options. They’re also quite comfortable and I rarely find myself knocking them unintentionally, which is a problem I’ve had with other back buttons.</p><p>Hall effect sticks are a really considerate touch on a controller that comes in at under $60 USD. They’re smooth and bounce back to the centre with vigour. When I first started the textured rims of the sticks were very rough but they’ve since worn down, or my thumbs have worn up to tackle their surface. They work well for fast aiming in shooters like Doom Eternal and slower paced games like Baldur’s Gate 3, though the D-pad is still king for selecting enemies, and almost everything else in the latter.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/aY94Zd9FYRJfXkPKqwiQ6a.jpg" alt="The Hyperkin Competitor on a gaming laptop." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/U9BgZ8LhcYb5nfK9iacw6a.jpg" alt="The Hyperkin Competitor on a gaming laptop." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6honkuMRVpAqtRv2XNpp6a.jpg" alt="The Hyperkin Competitor on a gaming laptop." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><div  class="fancy-box"><div class="fancy_box-title">Buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>✅ You want a budget symmetrical stick option with a few bonuses: </strong>Miss your PlayStation controller but want something far cheaper that’ll work with PC and Xbox? The competitor competes.</p><p class="fancy-box__body-text"><strong>✅ You struggle with back buttons:</strong> I am bad for accidentally hitting back buttons on controllers, and this one I have minimal misfires. They’re also easy to program on device.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>❌ You’re Australian: </strong>It’s pretty pricy in Aus, given the other options you could go for in its price range.</p><p class="fancy-box__body-text"><strong>❌ You want a DualSense for your PC: </strong>This is very much a watered down version of that high-tech Sony device.</p></div></div><p>The D-pad is also fairly competent but it’s far from my favourite. It feels so small under my thumb and raises at the far edges which gives an uncomfortable slide to the centre. I like being able to roll my thumb around and hit all the buttons, but it always feels a little harsh. It’s also quite pretty, having a transparent coating like the other face buttons, but my thumb has never been able to get an enjoyable feel on it.</p><p>Then face buttons are labelled with the Xbox configuration, but they also don’t quite feel right. There’s a lack of certainty when pushed as they have a slight smoosh to them. The bumpers are similar with that slightly delayed or soft touch push. I often set bumpers to dash and sometimes special while I attempt speed runs on Hades 2 and they don’t always fire as expected. I’ve even noticed my cast not actuating without being rather heavy on the B button. The main takeaway for me is my speeds are generally slower with the competitor than with a standard Xbox Wireless controller.</p><p>It’s great to have the option of a symmetrical stick layout that works so easily with pc and Xbox, and the Hyperkin Competitor delivers this at a fairly reasonable price point for those in the right region. For folks in the US you get a feature-full easy to use piece of kit that likely costs less than fueling up your car. Aussies on the other-hand could easily pick up something swankier at the same price, and probably get better Hades 2 speedrunning times for the option. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ This $150 controller from Honeycomb Aeronautical has not one, not two, not three, but four integrated Throttle Levers for the flight sim sickos ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/this-usd150-controller-from-honeycomb-aeronautical-has-not-one-not-two-not-three-but-four-integrated-throttle-levers-for-the-flight-sim-sickos/</link>
                                                                            <description>
                            <![CDATA[ Don your aviators, you big nerd. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">b9rJybk8tXUMDx4RrwHxg8</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/CyCMRtxjn63eWSzXgGdYMR-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 19 Nov 2025 10:53:45 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/Md68GDXhupcXtwAacuPKrd.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/CyCMRtxjn63eWSzXgGdYMR-1280-80.jpg">
                                                            <media:credit><![CDATA[Asobo Studio]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Microsoft Flight Simulator 2024 screens]]></media:description>                                                            <media:text><![CDATA[Microsoft Flight Simulator 2024 screens]]></media:text>
                                <media:title type="plain"><![CDATA[Microsoft Flight Simulator 2024 screens]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/CyCMRtxjn63eWSzXgGdYMR-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/KD1LabD4dsY" allowfullscreen></iframe></div></div><p>Personally, when I hear Honeycomb, I think of ice cream—and then the consequences my lactose intolerant-self would have to face were I to indulge. However, for flight sim fans, there’s only <a href="https://flyhoneycomb.com/" target="_blank">Honeycomb Aeronautical</a>—and lucky for them, they’ve just dropped a brand new gamepad.</p><p><a href="https://www.youtube.com/watch?v=KD1LabD4dsY" target="_blank">The Echo Aviation Controller</a> is specifically geared towards playing flight simulators on PC, and is already readying for a mid-December 2025 takeoff. Rather than saddling yourself with heaps of specialist hardware, this pad attempts to, according to the press release, “cram a cockpit into a controller.” Perhaps a gift idea for the geek in your life that got <em>really </em>into <a href="https://www.pcgamer.com/games/sim/microsoft-flight-simulator-2024-review/" target="_blank">Microsoft Flight Simulator 2024</a>?</p><p>I mean, all that functionality scrunched up into a gamepad footprint does make the Echo Aviation Controller look like an arcane instrument. However, all those improbably placed knobs and dials allow players to simultaneously control the “pitch, roll, yaw, throttle, trim and core aircraft systems.” Talk about a packed flight.</p><p>Pitch and roll is tied to the precision thumbstick, allowing you to finetune full elevator and aileron inputs. There are also four integrated Throttle Levers plus a Trim Wheel, and all of these are independently assignable too. That means there’s no need to eject from the Echo Aviation Controller if you want to hop from a single-engine to a multi-engine aircraft.</p><p>To me, such a wealth of inputs is a little intimidating. I bet some would pay good money to see what this particular menu-loving RPG fan does in a hectic flight sim session, but speaking of dough, let’s talk price. The Echo Aviation Controller will cost $150 / € 150 / £130 when it lands this December.</p><p>That’s an unsurprising price point given how obviously this bit of kit has set its sights on the enthusiast crowd—all those specialised bobbins were bound to cost a pretty penny. While it’s on the pricier side, it’s far from the most expensive PC controller we’ve seen; in our <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best PC controllers guide</a>, that would be the $200 and uber responsive <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro 8K</a>. Still, not even that has a Trim Wheel.</p><div id="crow-inpage-content"><style>      @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');      #pcg-cpu-widget-container *, #pcg-cpu-widget-container *::before, #pcg-cpu-widget-container *::after { box-sizing: border-box !important; margin: 0 !important; padding: 0 !important; border: 0 !important; vertical-align: baseline !important; line-height: 1.5 !important; text-decoration: none !important; font-family: 'Inter', sans-serif !important; }      #pcg-cpu-widget-container { margin-bottom: 48px !important; padding-top: 16px !important; padding-bottom: 24px !important; background-color: transparent !important; display: block !important; overflow: visible !important; position: relative !important; container-type: inline-size !important; }      #pcg-cpu-widget-container.pcg-widget-outline { border: 1px solid #d1d5db !important; border-radius: 8px !important; padding: 16px 16px 24px !important; }      #pcg-cpu-widget-container .pcg-group > .pcg-product-row-wrapper:not(.pcg-expanded):last-child .pcg-product-row { border-bottom-width: 0 !important; }      #pcg-cpu-widget-container .pcg-widget-container { width: 100% !important; margin: 0 auto !important; display: block !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-header-section { display: flex !important; justify-content: space-between !important; align-items: flex-start !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-header-content { display: flex !important; align-items: center !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-header-image { width: 35px !important; height: 35px !important; border-radius: 8px !important; object-fit: cover !important; mix-blend-mode: multiply !important; display: block !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-header-text { margin-left: 16px !important; display: block !important; }      #pcg-cpu-widget-container .pcg-header-title { font-size: 18px !important; font-weight: bold !important; color: #1f2937 !important; margin: 0 !important; display: block !important; }      #pcg-cpu-widget-container .pcg-header-subtitle { font-size: 14px !important; color: #6b7280 !important; margin: 0 !important; display: block !important; }      #pcg-cpu-widget-container .pcg-separator { border: none !important; border-top: 1px solid #d1d5db !important; margin: 16px 0 !important; display: block !important; }      #pcg-cpu-widget-container .pcg-product-row-wrapper { display: flex !important; flex-direction: column !important; transition: all 0.2s ease-in-out; }      #pcg-cpu-widget-container .pcg-product-row-wrapper.pcg-expanded { border: 1px solid #e5e7eb !important; border-radius: 8px !important; margin-top: 8px !important; margin-bottom: 8px !important; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04) !important; overflow: hidden !important; background-color: #ffffff !important; }      #pcg-cpu-widget-container .pcg-product-row-wrapper.pcg-expanded .pcg-product-row { padding-left: 12px !important; padding-right: 12px !important; border-bottom-width: 1px !important; border-bottom-color: #e5e7eb !important; }      #pcg-cpu-widget-container .pcg-product-row { display: flex !important; align-items: flex-start !important; padding: 12px 0 !important; border-bottom: 1px solid #d1d5db !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-product-image { display: block !important; width: 48px !important; height: 48px !important; border-radius: 6px !important; object-fit: contain !important; margin-right: 16px !important; flex-shrink: 0 !important; mix-blend-mode: multiply !important; }      #pcg-cpu-widget-container .pcg-product-content { flex-grow: 1 !important; display: flex !important; justify-content: space-between !important; align-items: stretch !important; min-width: 0 !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-product-info { flex: 1 1 0 !important; min-width: 0 !important; display: block !important; overflow: visible !important; margin-right: 8px !important; }      #pcg-cpu-widget-container .pcg-mobile-price-container { display: none !important; }      #pcg-cpu-widget-container .pcg-product-meta { display: flex !important; flex-direction: column !important; align-items: flex-start !important; gap: 8px !important; margin-bottom: 8px !important; height: auto !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-category-badge { font-size: 12px !important; color: #000000 !important; font-weight: bold !important; line-height: 12px !important; flex-shrink: 0 !important; white-space: nowrap !important; display: inline-block !important; }      #pcg-cpu-widget-container .pcg-stars { display: flex !important; flex-direction: row !important; flex-wrap: nowrap !important; gap: 1px !important; height: auto !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-star { position: relative !important; width: 12px !important; height: 12px !important; flex-shrink: 0 !important; display: block !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-star-svg { width: 100% !important; height: 100% !important; display: block !important; fill: currentColor !important; }      #pcg-cpu-widget-container .pcg-star-empty .pcg-star-svg { color: #d1d5db !important; }      #pcg-cpu-widget-container .pcg-star-full .pcg-star-svg { color: #ef4444 !important; }      #pcg-cpu-widget-container .pcg-star-partial { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; display: block !important; }      #pcg-cpu-widget-container .pcg-star-partial .pcg-star-svg { color: #ef4444 !important; }      #pcg-cpu-widget-container .pcg-product-link { display: block !important; font-weight: 600 !important; color: #dc2626 !important; text-decoration: none !important; font-size: 13px !important; white-space: normal !important; }      #pcg-cpu-widget-container .pcg-product-link:hover { text-decoration: underline !important; } #pcg-cpu-widget-container .pcg-product-link:visited { color: #b91c1c !important; }      #pcg-cpu-widget-container .pcg-price-panel { flex-shrink: 0 !important; display: flex !important; flex-direction: column !important; align-items: flex-end !important; justify-content: flex-end !important; gap: 10px !important; overflow: visible !important; text-align: right !important; }      #pcg-cpu-widget-container .pcg-view-button { display: inline-flex !important; align-items: center !important; justify-content: center !important; font-weight: bold !important; border-radius: 8px !important; transition: all 0.2s !important; background-color: #dc2626 !important; color: white !important; border: none !important; text-decoration: none !important; width: 120px !important; font-size: 12px !important; padding: 10px 12px !important; white-space: nowrap !important; line-height: 1.5 !important; text-overflow: ellipsis !important; overflow: hidden !important; }      #pcg-cpu-widget-container .pcg-view-button:hover, #pcg-cpu-widget-container .pcg-view-button:visited { background-color: #b91c1c !important; color: white !important; }      #pcg-cpu-widget-container .pcg-compare-link { font-size: 13px !important; color: #dc2626 !important; text-decoration: none !important; display: inline-flex !important; align-items: center !important; gap: 4px !important; background: none !important; border: none !important; padding: 4px 0 !important; cursor: pointer !important; font-family: inherit !important; text-transform: none !important; }      #pcg-cpu-widget-container .pcg-compare-link:hover:not(:disabled) { text-decoration: underline !important; }      #pcg-cpu-widget-container .pcg-compare-link.pcg-compare-link-static { cursor: default !important; justify-content: center !important; width: 120px !important; }      #pcg-cpu-widget-container .pcg-compare-link.pcg-compare-link-static:hover { text-decoration: none !important; }      #pcg-cpu-widget-container .pcg-compare-link strong { font-weight: bold !important; }      #pcg-cpu-widget-container .pcg-footer-link { font-weight: 600 !important; color: #1f2937 !important; display: block !important; }      #pcg-cpu-widget-container .pcg-footer-link.pcg-footer-link-top { margin-top: 16px !important; }      #pcg-cpu-widget-container .pcg-footer-link a { color: #dc2626 !important; text-decoration: none !important; display: inline !important; }      #pcg-cpu-widget-container .pcg-footer-link a:hover { text-decoration: underline !important; } #pcg-cpu-widget-container .pcg-footer-link a:visited { color: #b91c1c !important; }      #pcg-cpu-widget-container .pcg-powered-by { margin-top: 16px !important; display: flex !important; justify-content: center !important; align-items: center !important; gap: 4px !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-powered-by-text { font-size: 10px !important; font-weight: 600 !important; color: #6b7280 !important; display: inline !important; }      #pcg-cpu-widget-container .pcg-powered-by-logo { height: 10px !important; width: auto !important; mix-blend-mode: multiply !important; display: inline-block !important; }      #pcg-cpu-widget-container .pcg-dropdown-controls { display: flex !important; gap: 16px !important; margin-top: 16px !important; flex-direction: row !important; }      #pcg-cpu-widget-container .pcg-select-wrapper { flex: 1; min-width: 0; }      #pcg-cpu-widget-container .pcg-select-dropdown { width: 100% !important; padding: 8px 12px !important; font-size: 14px !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; background-color: white !important; color: #1f2937 !important; -webkit-appearance: none; -moz-appearance: none; appearance: none; 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; padding-right: 2.5rem !important; cursor: pointer !important; }      #pcg-cpu-widget-container .pcg-loading { font-size: 12px !important; color: #6b7280 !important; display: block !important; padding: 12px 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-container { max-height: 0 !important; overflow: hidden !important; transition: max-height 0.4s ease-in-out, padding 0.4s ease-in-out !important; background-color: #f9fafb !important; border-bottom: 1px solid #d1d5db !important; padding: 0 16px !important; }      #pcg-cpu-widget-container .pcg-product-row-wrapper.pcg-expanded .pcg-comparison-container { max-height: 1000px !important; padding: 12px 12px 8px 12px !important; border-bottom-width: 0 !important; background-color: #f9fafb !important; }      #pcg-cpu-widget-container .pcg-product-row-wrapper:last-child .pcg-comparison-container { border-bottom-width: 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-row-header { display: flex !important; justify-content: space-between !important; align-items: flex-start !important; margin-bottom: 8px !important; }      #pcg-cpu-widget-container .pcg-comparison-model-name { font-size: 13px !important; font-weight: 600 !important; color: #4b5563 !important; text-align: left !important; margin-bottom: 0 !important; padding-right: 8px !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }      #pcg-cpu-widget-container .pcg-comparison-row-content { display: flex !important; align-items: center !important; justify-content: space-between !important; width: 100% !important; gap: 8px !important; }      #pcg-cpu-widget-container .pcg-comparison-row { display: flex !important; flex-direction: column !important; align-items: stretch !important; padding: 8px 0 !important; justify-content: space-between !important; color: inherit !important; text-decoration: none !important; transition: background-color 0.2s ease-in-out !important; }      #pcg-cpu-widget-container .pcg-comparison-row:hover { background-color: #f3f4f6 !important; }      #pcg-cpu-widget-container .pcg-comparison-row:not(:last-child) { border-bottom: 1px solid #e5e7eb !important; }      #pcg-cpu-widget-container .pcg-lowest-price-badge { background-color: #dc2626 !important; color: white !important; padding: 1px 6px !important; font-size: 10px !important; font-weight: 700 !important; display: inline-block !important; border-radius: 0 !important; flex-shrink: 0 !important; position: absolute !important; top: 0 !important; left: 50% !important; transform: translateX(-50%) !important; white-space: nowrap !important; }      #pcg-cpu-widget-container .pcg-comparison-number { display: none !important; font-size: 12px !important; font-weight: 600 !important; color: #4b5563 !important; min-width: 24px !important; height: 24px !important; align-items: center !important; justify-content: center !important; background-color: #e5e7eb !important; border-radius: 4px !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-product-image { display: none !important; width: 60px !important; height: 60px !important; border-radius: 4px !important; object-fit: contain !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-retailer-logo-container { display: flex !important; align-items: center !important; justify-content: center !important; height: 60px !important; width: 120px !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-retailer-logo { max-height: 100% !important; max-width: 100% !important; width: auto !important; height: auto !important; object-fit: contain !important; }      #pcg-cpu-widget-container .pcg-comparison-price-wrapper { position: relative !important; display: flex !important; align-items: center !important; justify-content: center !important; min-height: 60px !important; }      #pcg-cpu-widget-container .pcg-comparison-price { font-size: 14px !important; font-weight: 600 !important; color: #1f2937 !important; white-space: nowrap !important; }      #pcg-cpu-widget-container .pcg-comparison-button { display: inline-flex !important; align-items: center !important; justify-content: center !important; font-weight: 600 !important; border-radius: 6px !important; transition: all 0.2s !important; background-color: #008000 !important; color: #ffffff !important; border: none !important; text-decoration: none !important; font-size: 14px !important; padding: 8px 16px !important; white-space: nowrap !important; width: auto !important; min-width: 80px !important; text-align: center !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-row:hover .pcg-comparison-button { background-color: #006400 !important; } #pcg-cpu-widget-container .pcg-comparison-button:visited { background-color: #006400 !important; }      #pcg-cpu-widget-container .pcg-show-more-container { padding: 12px 0 4px !important; text-align: center !important; border-top: 1px solid #e5e7eb !important; display: flex !important; justify-content: center !important; gap: 16px !important; flex-wrap: wrap !important; }      #pcg-cpu-widget-container .pcg-show-more-button { background-color: transparent !important; border: none !important; color: #dc2626 !important; font-weight: 600 !important; font-size: 14px !important; cursor: pointer !important; padding: 8px !important; display: inline-flex !important; align-items: center !important; gap: 4px !important; }      #pcg-cpu-widget-container .pcg-show-more-button:hover { text-decoration: underline !important; }      #pcg-cpu-widget-container .pcg-chevron { font-size: .8em !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-list-scrollable { max-height: 294px !important; overflow-y: auto !important; position: relative !important; scrollbar-width: thin; scrollbar-color: #dc2626 #f9fafb !important; margin-right: -10px !important; padding-right: 10px !important; } #pcg-cpu-widget-container .pcg-comparison-list-scrollable::-webkit-scrollbar { width: 6px !important; } #pcg-cpu-widget-container .pcg-comparison-list-scrollable::-webkit-scrollbar-track { background: #f9fafb !important; } #pcg-cpu-widget-container .pcg-comparison-list-scrollable::-webkit-scrollbar-thumb { background-color: #dc2626 !important; border-radius: 3px !important; } #pcg-cpu-widget-container .pcg-comparison-list-scrollable::-webkit-scrollbar-thumb:hover { background-color: #b91c1c !important; }      #pcg-cpu-widget-container .pcg-comparison-row-sticky { background-color: #f9fafb !important; }      #pcg-cpu-widget-container .pcg-comparison-loading, #pcg-cpu-widget-container .pcg-no-offers { text-align: center !important; padding: 24px 16px !important; font-size: 14px !important; font-weight: 500 !important; color: #6b7280 !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 8px !important; }      #pcg-cpu-widget-container .pcg-spinner { animation: pcg-rotate 2s linear infinite !important; width: 20px !important; height: 20px !important; }      #pcg-cpu-widget-container .pcg-path { stroke: #dc2626 !important; stroke-linecap: round !important; animation: pcg-dash 1.5s ease-in-out infinite !important; }      #pcg-cpu-widget-container .pcg-live-pill { display: inline-flex !important; align-items: center !important; gap: 6px !important; background-color: #dc2626 !important; color: #ffffff !important; padding: 6px 12px !important; border-radius: 9999px !important; font-size: 14px !important; font-weight: 600 !important; flex-shrink: 0 !important; white-space: nowrap !important; }      #pcg-cpu-widget-container .pcg-live-dot { width: 8px !important; height: 8px !important; background-color: #ffffff !important; border-radius: 50% !important; animation: pcg-live-pulse 1.5s infinite ease-in-out !important; }      @keyframes pcg-rotate { 100% { transform: rotate(360deg); } }      @keyframes pcg-dash { 0% { stroke-dasharray: 1, 150; stroke-dashoffset: 0; } 50% { stroke-dasharray: 90, 150; stroke-dashoffset: -35; } 100% { stroke-dasharray: 90, 150; stroke-dashoffset: -124; } }      @keyframes pcg-live-pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(0.8); opacity: 0.8; } }      @container (min-width: 500px) { #pcg-cpu-widget-container .pcg-price-panel { gap: 4px !important; } #pcg-cpu-widget-container .pcg-product-row { align-items: stretch !important; } #pcg-cpu-widget-container .pcg-product-info { display: flex !important; flex-direction: column !important; justify-content: center !important; } #pcg-cpu-widget-container .pcg-product-image { width: 64px !important; height: 64px !important; } #pcg-cpu-widget-container .pcg-category-badge { font-size: 13px !important; white-space: nowrap !important; } #pcg-cpu-widget-container .pcg-star { width: 14px !important; height: 14px !important; } #pcg-cpu-widget-container .pcg-header-image { width: 46px !important; height: 46px !important; } #pcg-cpu-widget-container .pcg-header-title { font-size: 20px !important; } #pcg-cpu-widget-container .pcg-header-subtitle { font-size: 16px !important; } #pcg-cpu-widget-container .pcg-product-meta { flex-direction: row !important; align-items: center !important; gap: 8px !important; margin-bottom: 8px !important; flex-wrap: nowrap !important; } #pcg-cpu-widget-container .pcg-product-link { font-size: 18px !important; } #pcg-cpu-widget-container .pcg-powered-by-text { font-size: 12px !important; } #pcg-cpu-widget-container .pcg-powered-by-logo { height: 12px !important; } #pcg-cpu-widget-container .pcg-comparison-number { display: flex !important; } #pcg-cpu-widget-container .pcg-comparison-product-image { display: block !important; } #pcg-cpu-widget-container .pcg-compare-link.pcg-compare-link-static { width: 160px !important; } #pcg-cpu-widget-container .pcg-view-button { width: 160px !important; font-size: 14px !important; padding: 8px 16px !important; } #pcg-cpu-widget-container .pcg-compare-link { font-size: 14px !important; padding: 0 !important; } }          </style><script type="importmap">          {            "imports": {              "react-dom/": "https://aistudiocdn.com/react-dom@^19.1.1/",              "react/": "https://aistudiocdn.com/react@^19.1.1/",              "react": "https://aistudiocdn.com/react@^19.1.1"            }          }          </script>          <div id="root">            <div id="pcg-cpu-widget-container" class="pcg-widget-outline">                <svg style="display: none;" aria-hidden="true"><defs><symbol id="pcg-tr-star-full" viewbox="0 0 20 20"><path d="M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z"></path></symbol><symbol id="pcg-tr-star-empty" viewbox="0 0 20 20"><path d="M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z"></path></symbol></defs></svg>                <div class="pcg-widget-container">                    <div class="pcg-header-section"><div class="pcg-header-content"><img src="https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png" alt="PC Gamer Logo" class="pcg-header-image"><div class="pcg-header-text"><h2 id="pcg-current-list-title" class="pcg-header-title">Best PC controller 2025</h2><p class="pcg-header-subtitle">All our current recommendations</p></div></div></div>                                        <div class="pcg-dropdown-controls">                        <div class="pcg-select-wrapper">                            <select class="pcg-select-dropdown" aria-label="Select product category" data-hawkify-clicked-area="filter" data-hawkify-category="PC Gamer category filter" data-hawkify-widget-type="dropdown">                                <option value="">Pick a category</option>                                <option value="Best overall">Best overall</option><option value="Core Components">Core Components</option><option value="Chairs & Desks">Chairs & Desks</option><option value="Systems & Laptops">Systems & Laptops</option><option value="Screens">Screens</option><option value="Peripherals" selected>Peripherals</option><option value="Cases, Cooling & Storage">Cases, Cooling & Storage</option>                            </select>                        </div>                        <div class="pcg-select-wrapper">                            <select class="pcg-select-dropdown" aria-label="Select buying guide" data-hawkify-clicked-area="filter" data-hawkify-category="PC Gamer guide selector" data-hawkify-widget-type="dropdown">                                <option value="">Choose a list</option>                                <option value="best-gaming-headset-2025">Best gaming headset 2025</option><option value="best-microphone-for-gaming-2025">Best microphone for gaming 2025</option><option value="best-webcam-2025">Best webcam 2025</option><option value="best-pc-controller-2025" selected>Best PC controller 2025</option><option value="best-gaming-keyboard-2025">Best gaming keyboard 2025</option><option value="best-gaming-mouse-2025">Best gaming mouse 2025</option><option value="best-pc-speaker-2025">Best PC speaker 2025</option><option value="best-capture-cards-2025">Best capture cards 2025</option>                            </select>                        </div>                    </div>                    <hr class="pcg-separator">                    <div id="pcg-products-container"><div class="pcg-group">                <div class="pcg-product-row-wrapper" data-model-name="Xbox Wireless Controller">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg" alt="Xbox Wireless Controller" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST OVERALL</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-xuct9xey5"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-xuct9xey5)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Bwireless%2Bcontroller%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    1. Xbox Wireless Controller                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Bwireless%2Bcontroller%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="GameSir Nova Lite">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg" alt="GameSir Nova Lite" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST BUDGET</span>                                    <div class="pcg-stars" aria-label="4.0 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-empty"><svg class="pcg-star-svg"><use href="#pcg-tr-star-empty"></use></svg></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgamesir%2Bnova%2Blite%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    2. GameSir Nova Lite                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgamesir%2Bnova%2Blite%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Xbox Elite Series 2">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg" alt="Xbox Elite Series 2" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST PREMIUM</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-j2vgfpu0a"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-j2vgfpu0a)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Belite%2Bseries%2B2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    3. Xbox Elite Series 2                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Belite%2Bseries%2B2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Scuf Instinct Pro">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg" alt="Scuf Instinct Pro" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST CUSTOMIZABLE</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-8vfhmk03q"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-8vfhmk03q)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dscuf%2Binstinct%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    4. Scuf Instinct Pro                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dscuf%2Binstinct%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Sony DualSense">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg" alt="Sony DualSense" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST HAPTICS</span>                                    <div class="pcg-stars" aria-label="4.0 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-empty"><svg class="pcg-star-svg"><use href="#pcg-tr-star-empty"></use></svg></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsony%2Bdualsense%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    5. Sony DualSense                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsony%2Bdualsense%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Razer Wolverine V3 Pro">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg" alt="Razer Wolverine V3 Pro" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST HALL EFFECT</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-pqce6n7t3"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-pqce6n7t3)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bwolverine%2Bv3%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    6. Razer Wolverine V3 Pro                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bwolverine%2Bv3%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div></div></div>                    <hr class="pcg-separator">                                <div class="pcg-footer-link ">                Read the full guide: <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank" rel="noopener noreferrer" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer buying guide" data-hawkify-widget-type="guide-link">Best PC controller 2025</a>            </div>                    <div class="pcg-powered-by"><span class="pcg-powered-by-text">POWERED BY</span><img src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb-200-100.png" alt="PC Gamer Logo" class="pcg-powered-by-logo"></div>                </div>            </div></div>          <script type="module">      import React, { useState, useEffect, useCallback, useRef } from 'react';      import ReactDOM from 'react-dom/client';            // --- Inlined data.ts ---      const allProductLists = [  {    "id": "best-pc-gaming-gear-2025",    "name": "The best PC gaming gear 2025",    "guideUrl": "https://www.pcgamer.com/hardware/this-is-all-the-best-pc-gaming-gear-we-recommend-in-one-techie-tier-list/",    "category": "Best overall",    "products": [      {        "modelName": "Secretlab Titan Evo",        "score": 100,        "category": "BEST GAMING CHAIR",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Btitan%2Bevo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Secretlab Magnus Pro XL",        "score": 90,        "category": "BEST GAMING DESK",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Bmagnus%2Bpro%2Bxl%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "HyperX Cloud Alpha",        "score": 90,        "category": "BEST GAMING HEADSET",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyperx%2Bcloud%2Balpha%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Strix Scope II 96 Wireless",        "score": 90,        "category": "BEST GAMING KEYBOARD",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bscope%2Bii%2B96%2Bwireless%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer DeathAdder V3 HyperSpeed",        "score": 90,        "category": "BEST GAMING MOUSE",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bdeathadder%2Bv3%2Bhyperspeed%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Xbox Wireless Controller",        "score": 90,        "category": "BEST PC CONTROLLER",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Bwireless%2Bcontroller%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech G Pro Racing Wheel",        "score": 90,        "category": "BEST STEERING WHEEL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bg%2Bpro%2Bracing%2Bwheel%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Shure MV6",        "score": 90,        "category": "BEST MICROPHONE",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dshure%2Bmv6%2Busb%2Bgaming%2Bmicrophone%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Elgato Facecam MK.2",        "score": 90,        "category": "BEST WEBCAM",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Delgato%2Bfacecam%2Bmk.2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-cpu-for-gaming-2025",    "name": "Best CPU for gaming 2025",    "guideUrl": "https://www.pcgamer.com/best-cpu-for-gaming/",    "category": "Core Components",    "products": [      {        "modelName": "AMD Ryzen 7 9800X3D",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://images.fie.futurecdn.net/efrb6fzvwvd4jwcd-17308043833633-100-80.jpg.webp",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fdp%2FB0DKFMSMYK%3Ftag%3Dhawk-future-21%26linkCode%3Dogi%26th%3D1%26psc%3D1%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Intel Core i5 13400F",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/41NgKlCJOzL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fdp%2FB0BXH1FTFT%3Ftag%3Dhawk-future-21%26linkCode%3Dogi%26th%3D1%26psc%3D1%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AMD Ryzen 7 9700X",        "score": 100,        "category": "BEST MID-RANGE",        "imageUrl": "https://images.fie.futurecdn.net/juzc6t2ldxs3u4fb-17225908633078-100-80.jpg.webp",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fdp%2FB0D6NMDNNX%3Ftag%3Dhawk-future-21%26linkCode%3Dogi%26th%3D1%26psc%3D1%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AMD Ryzen 9 9950X3D",        "score": 80,        "category": "BEST HIGH-END",        "imageUrl": "https://images.fie.futurecdn.net/ryk5t8z59zcxcdvn-17416887337709-100-80.jpg.webp",        "productUrl": "https://ccl.pxf.io/c/221109/1991091/24481?sharedId=hawk-prefix&subId1=hawk-custom-tracking&prodsku=CPU0943&u=https%3A%2F%2Fwww.cclonline.com%2F100-100000719wof-amd-ryzen-9-9950x3d-16-core-32-thread-am5-cpu-483923%2F&intsrc=CATF_16482"      },      {        "modelName": "AMD Ryzen 7 5700X3D",        "score": 80,        "category": "BEST AM4 UPGRADE",        "imageUrl": "https://m.media-amazon.com/images/I/31Nm8zdEglL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fdp%2FB0CQ4H4H7X%3Ftag%3Dhawk-future-21%26linkCode%3Dogi%26th%3D1%26psc%3D1%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AMD Ryzen 7 8700G",        "score": 90,        "category": "BEST CPU GRAPHICS",        "imageUrl": "https://images.fie.futurecdn.net/l9873tf1jajmus37-1706714580034-100-80.jpg.webp",        "productUrl": "https://ccl.pxf.io/c/221109/1991091/24481?sharedId=hawk-prefix&subId1=hawk-custom-tracking&prodsku=CPU0896&u=https%3A%2F%2Fwww.cclonline.com%2F100-100001236box-amd-ryzen-7-8700g-4-2ghz-octa-core-am5-cpu-437727%2F&intsrc=CATF_16482"      }    ]  },  {    "id": "best-graphics-card-2025",    "name": "Best graphics card 2025",    "guideUrl": "https://www.pcgamer.com/the-best-graphics-cards/",    "category": "Core Components",    "products": [      {        "modelName": "AMD Radeon RX 9070",        "score": 80,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Damd%2Bradeon%2Brx%2B9070%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AMD Radeon RX 9060 XT 16 GB",        "score": 80,        "category": "BEST VALUE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Damd%2Bradeon%2Brx%2B9060%2Bxt%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Intel Arc B570",        "score": 70,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dintel%2Barc%2Bb570%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Nvidia GeForce RTX 5070 Ti",        "score": 90,        "category": "BEST MID-RANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnvidia%2Brtx%2B5070%2Bti%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Nvidia GeForce RTX 5090",        "score": 80,        "category": "BEST HIGH-END",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnvidia%2Brtx%2B5090%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-chair-2025",    "name": "Best gaming chair 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-chairs/",    "category": "Chairs & Desks",    "products": [      {        "modelName": "Secretlab Titan Evo",        "score": 100,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Btitan%2Bevo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Corsair TC100 Relaxed",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcorsair%2Btc100%2Brelaxed%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Herman Miller Embody",        "score": 90,        "category": "BEST LUXURY",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dherman%2Bmiller%2Bembody%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ThunderX3 Core",        "score": 80,        "category": "BEST SUPPORT",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dthunderx3%2Bcore%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AndaSeat Kaiser 4 XL",        "score": 100,        "category": "BEST BIG BOI",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dandaseat%2Bkaiser%2B4%2Bxl%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Neuechair",        "score": 90,        "category": "BEST OFFICE",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dneuechair%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ThunderX3 Flex Pro",        "score": 90,        "category": "BEST BUDGET OFFICE",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dthunderx3%2Bflex%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-laptop-2025",    "name": "Best gaming laptop 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-laptop/",    "category": "Systems & Laptops",    "products": [      {        "modelName": "Razer Blade 16 (2025)",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bblade%2B16%2B2025%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lenovo LOQ 15 Gen 10",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgigabyte%2Bg6x%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer Blade 14 (2025)",        "score": 90,        "category": "BEST 14-INCH",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bblade%2B14%2B2025%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "MSI Vector 16 HX AI A2XWIG",        "score": 80,        "category": "BEST MID-RANGE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bvector%2B16%2Bhx%2Bai%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lenovo Legion Pro 7i (Gen 10)",        "score": 90,        "category": "BEST HIGH-PERFORMANCE",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlenovo%2Blegion%2Bpro%2B7i%2Bgen%2B10%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware 18 Area-51 Gaming Laptop",        "score": 90,        "category": "BEST 18-INCH",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgigabyte%2Baorus%2B17x%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-monitors-2025",    "name": "Best gaming monitors 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-monitor",    "category": "Screens",    "products": [      {        "modelName": "MSI MPG 321URX QD-OLED",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmpg%2B321urx%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "LG Ultragear 27GR93U",        "score": 90,        "category": "BEST 4K",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlg%2Bultragear%2B27gr93u%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Gigabyte M28U",        "score": 90,        "category": "BEST BUDGET 4K",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgigabyte%2Bm28u%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Xiaomi G Pro 27i",        "score": 80,        "category": "BEST 1440P",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxiaomi%2Bg%2Bpro%2B27i%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "KTC H27T22C-3",        "score": 90,        "category": "BEST BUDGET 1440P",        "imageUrl": "https://m.media-amazon.com/images/I/71e9xcyChTL._AC_UY218_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dpixio%2Bpxc277%2Badvanced%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AOC C27G4ZXE",        "score": 70,        "category": "BEST BUDGET 1080P",        "imageUrl": "https://images.fie.futurecdn.net/hsmwjtu6dqod2168-17630297685224.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Daoc%2Bgaming%2Bc27g4zxe%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Swift OLED PG34WCDM",        "score": 90,        "category": "BEST ULTRAWIDE",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bswift%2Boled%2Bpg34wcdm%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Odyssey OLED G9",        "score": 90,        "category": "BEST 32:9",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsamsung%2Bodyssey%2Boled%2Bg9%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock Phantom PG34WQ15R2B",        "score": 90,        "category": "BEST BUDGET ULTRAWIDE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bphantom%2Bpg34wq15r2b%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "LG Ultragear 32GS95UE",        "score": 90,        "category": "BEST WOLED",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlg%2Bultragear%2B32gs95ue%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "MSI MPG271QRX",        "score": 90,        "category": "BEST 1440P OLED",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmpg%2B271qrx%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware AW2725Q",        "score": 100,        "category": "BEST BUDGET OLED ULTRAWIDE",        "imageUrl": "https://m.media-amazon.com/images/I/41HjJn0FcpL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dalienware%2B34%2Bqd-oled%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware AW2725QF",        "score": 90,        "category": "BEST DUAL-MODE",        "imageUrl": "https://m.media-amazon.com/images/I/41HjJn0FcpL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dalienware%2Baw2725qf%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-headset-2025",    "name": "Best gaming headset 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-headset",    "category": "Peripherals",    "products": [      {        "modelName": "HyperX Cloud Alpha",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyperx%2Bcloud%2Balpha%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Corsair HS55 Stereo",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcorsair%2Bhs55%2Bstereo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "HyperX Cloud Alpha Wireless",        "score": 90,        "category": "BEST WIRELESS",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyperx%2Bcloud%2Balpha%2Bwireless%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Turtle Beach Stealth 600 Gen 3",        "score": 90,        "category": "BEST MID-RANGE WIRELESS",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dturtle%2Bbeach%2Bstealth%2B600%2Bgen%2B3%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Beyerdynamic MMX 330 Pro",        "score": 90,        "category": "BEST AUDIOPHILE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbeyerdynamic%2Bmmx%2B330%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Audeze Maxwell",        "score": 90,        "category": "BEST WIRELESS AUDIOPHILE",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Daudeze%2Bmaxwell%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Audio-Technica ATH-M50xSTS StreamSet",        "score": 100,        "category": "BEST FOR STREAMING",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Daudio-technica%2Bath-m50xsts%2Bstreamset%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AceZone A-Spire",        "score": 100,        "category": "BEST NOISE-CANCELLING",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dacezone%2Ba-spire%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Steelseries Arctis GameBuds",        "score": 90,        "category": "BEST EARBUDS",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsteelseries%2Barctis%2Bgamebuds%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-pc-2025",    "name": "Best gaming PC 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-pc/",    "category": "Systems & Laptops",    "products": [      {        "modelName": "HP Omen 35L",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhp%2Bomen%2B35l%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lenovo Legion Tower 5i (Gen 8)",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlenovo%2Blegion%2Btower%2B5i%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Velocity Micro Raptor ES40",        "score": 80,        "category": "BEST COMPACT",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dvelocity%2Bmicro%2Braptor%2Bes40%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware Area-51 Gaming Desktop",        "score": 80,        "category": "ALIENWARE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dalienware%2Baurora%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Minisforum AtomMan G7 PT",        "score": 90,        "category": "BEST MINI PC",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dminisforum%2Batomman%2Bg7%2Bpt%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-rigs-2025",    "name": "Best gaming rigs 2025",    "guideUrl": "https://www.pcgamer.com/hardware/this-is-all-the-best-pc-gaming-gear-we-recommend-in-one-techie-tier-list/",    "category": "Systems & Laptops",    "products": [      {        "modelName": "Razer Blade 16 (2025)",        "score": 90,        "category": "BEST GAMING LAPTOP",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bblade%2B16%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "HP Omen 35L",        "score": 90,        "category": "BEST GAMING PC",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhp%2Bomen%2B35l%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lenovo Legion Go S SteamOS",        "score": 90,        "category": "BEST HANDHELD GAMING PC",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlenovo%2Blegion%2Bgo%2Bs%2Bsteamos%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Meta Quest 3",        "score": 90,        "category": "BEST VR HEADSET",        "imageUrl": "https://m.media-amazon.com/images/I/61tE7IcuLlL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmeta%2Bquest%2B3%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-desk-2025",    "name": "Best gaming desk 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-desk/",    "category": "Chairs & Desks",    "products": [      {        "modelName": "Secretlab Magnus Pro XL",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Bmagnus%2Bpro%2Bxl%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Ikea Utespelare",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dikea%2Butespelare%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Arozzi Arena",        "score": 80,        "category": "BEST MID-RANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darozzi%2Barena%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "E7L Pro L-Shaped Standing Desk",        "score": 90,        "category": "BEST L-SHAPE",        "imageUrl": "https://cnmegk4mhxmt.compat.objectstorage.eu-frankfurt-1.oraclecloud.com/prod-eu-s3/trantor/attachments/UK/E7L_DIY_wei%C3%9F.png",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dflexispot%2Be7l%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Flexispot E1",        "score": 90,        "category": "BEST BUDGET MOTORIZED",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dflexispot%2Be1%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Fnatic X Chopvalue Revive Pro",        "score": 90,        "category": "BEST SUSTAINABLE",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dfnatic%2Bchopvalue%2Brevive%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "VariDesk Pro Plus",        "score": 80,        "category": "BEST CONVERTIBLE",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dvaridesk%2Bpro%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-microphone-for-gaming-2025",    "name": "Best microphone for gaming 2025",    "guideUrl": "https://www.pcgamer.com/best-microphone-gaming-streaming/",    "category": "Peripherals",    "products": [      {        "modelName": "Shure MV6",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dshure%2Bmv6%2Busb%2Bgaming%2Bmicrophone%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Amazon Basics USB Condenser Microphone",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Damazon%2Bbasics%2Busb%2Bcondenser%2Bmicrophone%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT Capsule Elite",        "score": 90,        "category": "BEST MID-RANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bcapsule%2Belite%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Sennheiser Profile Streaming Set",        "score": 90,        "category": "BEST USB BUNDLE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsennheiser%2Bprofile%2Bstreaming%2Bset%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "HyperX Quadcast S",        "score": 90,        "category": "BEST LOOKING",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyperx%2Bquadcast%2Bs%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Shure MV7+",        "score": 90,        "category": "BEST PODCASTING",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dshure%2Bmv7%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "SteelSeries Alias Pro",        "score": 100,        "category": "BEST STREAMING",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsteelseries%2Balias%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Audio-Technica ATH-M50xSTS StreamSet",        "score": 100,        "category": "BEST HEADSET MIC",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Daudio-technica%2Bath-m50xsts%2Bstreamset%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-webcam-2025",    "name": "Best webcam 2025",    "guideUrl": "https://www.pcgamer.com/best-webcams/",    "category": "Peripherals",    "products": [      {        "modelName": "Elgato Facecam MK.2",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Delgato%2Bfacecam%2Bmk.2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech C920",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bc920%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Streamplify Cam",        "score": 80,        "category": "BEST FOR STREAMERS",        "imageUrl": "https://cdn.mos.cms.futurecdn.net/CyP36WRjtY8scD2KqMBaeG-970-80.jpg.webp",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dstreamplify%2Bcam%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Obsbot Meet 2",        "score": 80,        "category": "BEST 4K",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dobsbot%2Bmeet%2B2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Obsbot Tiny 2 Lite 4K",        "score": 90,        "category": "BEST HIGH-END",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dobsbot%2Btiny%2B2%2Blite%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer Kiyo Pro",        "score": 80,        "category": "BEST LOW LIGHT",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bkiyo%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-pc-controller-2025",    "name": "Best PC controller 2025",    "guideUrl": "https://www.pcgamer.com/best-controller-for-pc-gaming/",    "category": "Peripherals",    "products": [      {        "modelName": "Xbox Wireless Controller",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Bwireless%2Bcontroller%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "GameSir Nova Lite",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgamesir%2Bnova%2Blite%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Xbox Elite Series 2",        "score": 90,        "category": "BEST PREMIUM",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Belite%2Bseries%2B2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Scuf Instinct Pro",        "score": 90,        "category": "BEST CUSTOMIZABLE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dscuf%2Binstinct%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Sony DualSense",        "score": 80,        "category": "BEST HAPTICS",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsony%2Bdualsense%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer Wolverine V3 Pro",        "score": 90,        "category": "BEST HALL EFFECT",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bwolverine%2Bv3%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-handheld-pc-2025",    "name": "Best handheld PC 2025",    "guideUrl": "https://www.pcgamer.com/best-handheld-gaming-pc/",    "category": "Systems & Laptops",    "products": [      {        "modelName": "Lenovo Legion Go S SteamOS",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlenovo%2Blegion%2Bgo%2Bs%2Bsteamos%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Valve Steam Deck",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsteam%2Bdeck%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "MSI Claw 8 AI+",        "score": 90,        "category": "BEST WINDOWS",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bclaw%2B8%2Bai%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lenovo Legion Go",        "score": 80,        "category": "BEST BIG SCREEN",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlenovo%2Blegion%2Bgo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Ayaneo Flip DS",        "score": 90,        "category": "BEST COMPACT",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dayaneo%2Bflip%2Bds%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-mini-pc-2025",    "name": "Best mini PC 2025",    "guideUrl": "https://www.pcgamer.com/hardware/gaming-pcs/best-mini-pcs-for-gaming/",    "category": "Systems & Laptops",    "products": [      {        "modelName": "MinisForum AtomMan G7 PT",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dminisforum%2Batomman%2Bg7%2Bpt%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Minisforum Venus UM790 Pro",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dminisforum%2Bvenus%2Bum790%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG NUC 970",        "score": 90,        "category": "BEST PURE GAMING",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bnuc%2B970%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Geekom AX8 Pro",        "score": 80,        "category": "BEST COMPACT",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgeekom%2Bax8%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Ayaneo Retro Mini AM02",        "score": 80,        "category": "BEST LOOKING",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dayaneo%2Bretro%2Bmini%2Bam02%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Beelink SER9",        "score": 90,        "category": "BEST IGPU",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbeelink%2Bser9%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-oled-gaming-monitor-2025",    "name": "Best OLED gaming monitor 2025",    "guideUrl": "https://www.pcgamer.com/best-oled-gaming-monitor/",    "category": "Screens",    "products": [      {        "modelName": "MSI MPG 321URX QD-OLED",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmpg%2B321urx%2Bqd-oled%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "MSI MPG 271QRX",        "score": 90,        "category": "BEST 1440P",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmpg%2B271qrx%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Swift OLED PG34WCDM",        "score": 90,        "category": "BEST ULTRAWIDE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bswift%2Boled%2Bpg34wcdm%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Odyssey OLED G9",        "score": 90,        "category": "BEST 32:9 RATIO",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsamsung%2Bodyssey%2Boled%2Bg9%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware 34 QD-OLED AW3423DWF",        "score": 100,        "category": "BEST BUDGET ULTRAWIDE",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dalienware%2B34%2Bqd-oled%2Baw3423dwf%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "LG UltraGear 32GS95UE",        "score": 90,        "category": "BEST WOLED",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlg%2Bultragear%2B32gs95ue%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware AW2725Q",        "score": 90,        "category": "BEST 27-INCH",        "imageUrl": "https://m.media-amazon.com/images/I/41HjJn0FcpL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dalienware%2B27%2Baw2725q%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-keyboard-2025",    "name": "Best gaming keyboard 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-keyboard/",    "category": "Peripherals",    "products": [      {        "modelName": "Asus ROG Strix Scope II 96 Wireless",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bscope%2Bii%2B96%2Bwireless%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Gamakay x Naughshark NS68",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgamakay%2Bnaughshark%2Bns68%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Ducky Zero 6108",        "score": 90,        "category": "BEST MID-RANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dducky%2Bzero%2B6108%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Wooting 80HE",        "score": 80,        "category": "BEST RAPID TRIGGER",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dwooting%2B80he%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Keychron K2 HE",        "score": 90,        "category": "BEST WIRELESS RAPID TRIGGER",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dkeychron%2Bk2%2Bhe%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Be Quiet! Light Mount",        "score": 90,        "category": "BEST SILENT",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbe%2Bquiet%2Blight%2Bmount%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Keychron Q3 Max",        "score": 90,        "category": "BEST TENKEYLESS",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dkeychron%2Bq3%2Bmax%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NuPhy Air60 HE",        "score": 90,        "category": "BEST LOW PROFILE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnuphy%2Bair60%2Bhe%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Kinesis Freestyle Edge RGB",        "score": 90,        "category": "BEST ERGONOMIC",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dkinesis%2Bfreestyle%2Bedge%2Brgb%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Roccat Magma",        "score": 80,        "category": "BEST MEMBRANE",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Droccat%2Bmagma%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-mouse-2025",    "name": "Best gaming mouse 2025",    "guideUrl": "https://www.pcgamer.com/the-best-gaming-mouse/",    "category": "Peripherals",    "products": [      {        "modelName": "Razer DeathAdder V4 Pro",        "score": 90,        "category": "BEST WIRELESS",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bdeathadder%2Bv4%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech G502 X",        "score": 90,        "category": "BEST WIRED",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bg502%2Bx%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech G305 Lightspeed",        "score": 90,        "category": "BEST BUDGET WIRELESS",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bg305%2Blightspeed%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Glorious Model O Eternal",        "score": 90,        "category": "BEST BUDGET WIRED",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dglorious%2Bmodel%2Bo%2Beternal%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Turtle Beach Burst II Air",        "score": 90,        "category": "BEST LIGHTWEIGHT",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dturtle%2Bbeach%2Bburst%2Bii%2Bair%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer Naga Pro",        "score": 90,        "category": "BEST MMO",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bnaga%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer Cobra Pro",        "score": 80,        "category": "BEST COMPACT",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bcobra%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech G Pro",        "score": 90,        "category": "BEST AMBIDEXTROUS",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bg%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Keychron M5",        "score": 90,        "category": "BEST ERGONOMIC",        "imageUrl": "https://images.fie.futurecdn.net/gp7wdddkdvrzgxox-17630301391647.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dkeychron%2Bm5%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-ssd-for-gaming-2025",    "name": "Best SSD for gaming 2025",    "guideUrl": "https://www.pcgamer.com/best-ssd-for-gaming/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "WD Black SN7100 2TB SSD",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dwd%2Bblack%2Bsn7100%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lexar NM790",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlexar%2Bnm790%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "WD_Black SN8100",        "score": 90,        "category": "BEST PCIE 5.0",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dwd%2Bblack%2Bsn8100%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Crucial P510",        "score": 90,        "category": "BEST BUDGET PCIE 5.0",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcrucial%2Bp510%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "TeamGroup MP44 2TB",        "score": 90,        "category": "BEST 4 TB",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dteamgroup%2Bmp44%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Black SN850X 8TB",        "score": 80,        "category": "BEST 8 TB",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dwd%2Bblack%2Bsn850x%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lexar Play (2230) 1TB SSD",        "score": 80,        "category": "BEST M.2 2230",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlexar%2Bplay%2B2230%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Silicon Power XS70 2TB SSD",        "score": 90,        "category": "BEST FOR PS5",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsilicon%2Bpower%2Bxs70%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Crucial MX500 1TB",        "score": 90,        "category": "BEST SATA",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcrucial%2Bmx500%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-pc-fans-2025",    "name": "Best PC fans 2025",    "guideUrl": "https://www.pcgamer.com/best-pc-fans/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "Noctua NF-A12x25 G2",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnoctua%2Bnf-a12x25%2Bg2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Noctua NF-P12 redux-1700",        "score": 70,        "category": "BEST MIDRANGE",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnoctua%2Bnf-p12%2Bredux-1700%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Arctic P12 PWM PST",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darctic%2Bp12%2Bpwm%2Bpst%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Corsair iCUE LINK QX120 RGB",        "score": 80,        "category": "BEST RGB",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcorsair%2Bicue%2Blink%2Bqx120%2Brgb%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT F120 RGB Duo",        "score": 70,        "category": "BEST BUDGET RGB",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bf120%2Brgb%2Bduo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Arctic P12 Pro",        "score": 80,        "category": "BEST FOR RADIATORS",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darctic%2Bp12%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-cpu-coolers-2025",    "name": "Best CPU coolers 2025",    "guideUrl": "https://www.pcgamer.com/best-cpu-coolers/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "Arctic Liquid Freezer III Pro",        "score": 80,        "category": "BEST AIO",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darctic%2Bliquid%2Bfreezer%2Biii%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Cooler Master MasterLiquid Core II",        "score": 80,        "category": "BEST BUDGET AIO",        "imageUrl": "https://images.fie.futurecdn.net/9si620spbsuucnah-17630323687903.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcooler%2Bmaster%2Bmasterliquid%2Bcore%2Bii%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Be Quiet! Light Loop",        "score": 90,        "category": "BEST HIGH-END AIO",        "imageUrl": "https://m.media-amazon.com/images/I/319y6QO-FlL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbe%2Bquiet%2Blight%2Bloop%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT Kraken Elite",        "score": 80,        "category": "BEST SCREEN",        "imageUrl": "https://images.fie.futurecdn.net/tkq7wk3yx52kqtcj-17630325331208.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bkraken%2Belite%2Brgb%2B2024%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Noctua NH-D15 G2",        "score": 90,        "category": "BEST AIR",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnoctua%2Bnh-d15%2Bg2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Arctic Freezer 36",        "score": 80,        "category": "BEST BUDGET AIR",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darctic%2Bfreezer%2B36%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-liquid-coolers-2025",    "name": "Best liquid coolers 2025",    "guideUrl": "https://www.pcgamer.com/best-cpu-coolers/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "Arctic Liquid Freezer III Pro",        "score": 80,        "category": "BEST AIO",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darctic%2Bliquid%2Bfreezer%2Biii%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Cooler Master MasterLiquid Core II",        "score": 80,        "category": "BEST BUDGET AIO",        "imageUrl": "https://images.fie.futurecdn.net/9si620spbsuucnah-17630323687903.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcooler%2Bmaster%2Bmasterliquid%2Bcore%2Bii%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Be Quiet! Light Loop",        "score": 90,        "category": "BEST HIGH-END AIO",        "imageUrl": "https://m.media-amazon.com/images/I/319y6QO-FlL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbe%2Bquiet%2Blight%2Bloop%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT Kraken Elite",        "score": 80,        "category": "BEST SCREEN",        "imageUrl": "https://images.fie.futurecdn.net/tkq7wk3yx52kqtcj-17630325331208.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bkraken%2Belite%2Brgb%2B2024%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Corsair Nautilus RS",        "score": 80,        "category": "BEST STEALTH",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcorsair%2Bnautilus%2Brs%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-external-ssds-2025",    "name": "Best external SSDs 2025",    "guideUrl": "https://www.pcgamer.com/best-external-ssd-for-game-storage/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "Adata SD810",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dadata%2Bsd810%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Crucial X9",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcrucial%2Bx9%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Samsung T9",        "score": 90,        "category": "BEST FOR VIDEO EDITING",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsamsung%2Bt9%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Sandisk Extreme Pro",        "score": 90,        "category": "BEST USB4",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsandisk%2Bextreme%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Seagate Ultra Compact SSD",        "score": 90,        "category": "BEST THUMB DRIVE REPLACEMENT",        "imageUrl": "https://m.media-amazon.com/images/I/31y74KQc+WL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dseagate%2Bultra%2Bcompact%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "LaCie Rugged Pro 5",        "score": 90,        "category": "BEST DURABLE DRIVE",        "imageUrl": "https://m.media-amazon.com/images/I/31WHE8uVTqL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlacie%2Brugged%2Bpro%2B5%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Samsung T7 Shield",        "score": 90,        "category": "BEST BUDGET DURABLE",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsamsung%2Bt7%2Bshield%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "SanDisk Desk Drive",        "score": 90,        "category": "BEST FOR BACKUPS",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsandisk%2Bdesk%2Bdrive%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-pc-cases-2025",    "name": "Best PC cases 2025",    "guideUrl": "https://www.pcgamer.com/best-pc-case/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "Havn HS 420",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhavn%2Bhs%2B420%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Phanteks Eclipse G400A",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://images.fie.futurecdn.net/dand1e795vud9qus-17630329854271.webp",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dphanteks%2Bg400a%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Hyte Y40",        "score": 80,        "category": "BEST MIDRANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyte%2By40%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Thermaltake S100 TG Snow Edition",        "score": 80,        "category": "BEST BUDGET COMPACT",        "imageUrl": "https://images.fie.futurecdn.net/iulafpmmjvvclyki-17630330556771.webp",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dthermaltake%2Bs100%2Btg%2Bsnow%2Bedition%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT H9 Flow RGB+",        "score": 90,        "category": "BEST HIGH-END",        "imageUrl": "https://images.fie.futurecdn.net/xdt4cjspadsxxczo-17630333059636.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bh9%2Bflow%2Brgb%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Fractal Design Terra",        "score": 80,        "category": "BEST MINI-ITX",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dfractal%2Bdesign%2Bterra%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT H3 Flow",        "score": 80,        "category": "BEST MICRO-ATX",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bh3%2Bflow%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT H7 Flow",        "score": 80,        "category": "BEST FULL-TOWER",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bh7%2Bflow%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Hyte Y70 Touch Infinite",        "score": 90,        "category": "BEST DUAL-CHAMBER",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyte%2By70%2Btouch%2Binfinite%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lian Li O11 Vision Compact",        "score": 90,        "category": "BEST FISH TANK",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlian%2Bli%2Bo11%2Bvision%2Bcompact%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Phanteks Evolv X2",        "score": 80,        "category": "BEST LOOKING",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dphanteks%2Bevolv%2Bx2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Be Quiet! Shadow Base 800 FX",        "score": 80,        "category": "BEST FOR BEGINNERS",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbe%2Bquiet%2Bshadow%2Bbase%2B800%2Bfx%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-pc-speaker-2025",    "name": "Best PC speaker 2025",    "guideUrl": "https://www.pcgamer.com/best-computer-speakers/",    "category": "Peripherals",    "products": [      {        "modelName": "Mackie CR8SBT",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/41wiwArhoVL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmackie%2Bcr3.5bt%2Bcr8sbt%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Creative Pebble Plus",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcreative%2Bpebble%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech Z407",        "score": 80,        "category": "BEST MIDRANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bz407%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Creative Sound Blaster Katana V2",        "score": 90,        "category": "BEST GAMING SOUNDBAR",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcreative%2Bsound%2Bblaster%2Bkatana%2Bv2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "BlueAnt Soundblade",        "score": 90,        "category": "BEST WIRELESS GAMING SOUNDBAR",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dblueant%2Bsoundblade%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "FiiO SP3 BT",        "score": 90,        "category": "BEST BOOKSHELF SPEAKERS",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dfiio%2Bsp3%2Bbt%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Kanto Ora",        "score": 80,        "category": "BEST REFERENCE SPEAKERS",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dkanto%2Bora%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-capture-cards-2025",    "name": "Best capture cards 2025",    "guideUrl": "https://www.pcgamer.com/best-capture-card-for-pc-gaming/",    "category": "Peripherals",    "products": [      {        "modelName": "AverMedia GC553Pro",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://images.fie.futurecdn.net/p2tryxiihh0css2c-17630319116723.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Davermedia%2Blive%2Bgamer%2Bultra%2Bs%2Bgc553pro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Elgato Game Capture Neo",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Delgato%2Bgame%2Bcapture%2Bneo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AVerMedia Live Gamer Duo",        "score": 90,        "category": "BEST TWO SOURCE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Davermedia%2Blive%2Bgamer%2Bduo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AVerMedia Live Gamer Ultra 2.1",        "score": 90,        "category": "BEST 4K",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Davermedia%2Blive%2Bgamer%2Bultra%2B2.1%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Elgato 4K60 S+",        "score": 90,        "category": "BEST STANDALONE",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Delgato%2B4k60%2Bs%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AVerMedia GC313Pro",        "score": 80,        "category": "BEST FOR HANDHELD GAMING PCS",        "imageUrl": "https://images.fie.futurecdn.net/atr01qndlbw7pbtc-17630320130564.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Davermedia%2Belite%2Bgo%2Bgc313pro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-motherboard-2025",    "name": "Best gaming motherboard 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-motherboards/",    "category": "Core Components",    "products": [      {        "modelName": "MAG X870E Tomahawk Wifi",        "score": 90,        "category": "BEST AM5",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmag%2Bx870%2Btomahawk%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus TUF Gaming B650-Plus WiFi",        "score": 80,        "category": "BEST BUDGET AM5",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Btuf%2Bgaming%2Bb650-plus%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock B850 Steel Legend WiFi",        "score": 80,        "category": "BEST MIDRANGE AM5",        "imageUrl": "https://images.fie.futurecdn.net/heweoulvrof3zzc6-17630286906889.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bb850%2Bsteel%2Blegend%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Strix B550-E Gaming",        "score": 80,        "category": "BEST AM4",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bb550-e%2Bgaming%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Maximus Z890 Hero",        "score": 80,        "category": "BEST LGA1851",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bmaximus%2Bz890%2Bhero%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "B860 Steel Legend Wi-Fi",        "score": 90,        "category": "BEST BUDGET LGA1851 - INTEL CORE ULTRA 200S",        "imageUrl": "https://images.fie.futurecdn.net/6mqsb9k9bajh3eki-17630287317002.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bb860%2Bsteel%2Blegend%2Bwi-fi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "MSI MAG Z790 Tomahawk WiFi",        "score": 90,        "category": "BEST LGA1700",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmag%2Bz790%2Btomahawk%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "B760M PG Sonic WiFi",        "score": 80,        "category": "BEST BUDGET LGA1700",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bb760m%2Bpg%2Bsonic%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-mini-itx-motherboard",    "name": "Best Mini-ITX motherboard",    "guideUrl": "https://www.pcgamer.com/hardware/motherboards/best-mini-itx-motherboards/",    "category": "Core Components",    "products": [      {        "modelName": "Asus ROG Strix X870-I Gaming WiFi",        "score": 80,        "category": "BEST AMD AM5",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bx870-i%2Bgaming%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Gigabyte A620I AX",        "score": 90,        "category": "BEST BUDGET AMD AM5",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgigabyte%2Ba620i%2Bax%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Phantom Gaming B850I Lightning Wi-Fi",        "score": 80,        "category": "BEST MID-RANGE AMD AM5",        "imageUrl": "https://images.fie.futurecdn.net/z4a8hrmr3osvenhv-17630287825879.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bphantom%2Bb850i%2Blightning%2Bwi-fi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock A520M-ITX/ac",        "score": 80,        "category": "BEST BUDGET AM4",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Ba520m-itx%2Fac%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock Phantom Gaming B860I Lightning Wi-Fi",        "score": 80,        "category": "BEST INTEL CORE ULTRA 200S",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bphantom%2Bgaming%2Bb860i%2Blightning%2Bwi-fi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Strix Z790-I Gaming WiFi",        "score": 90,        "category": "BEST INTEL 14TH/13TH GEN",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bz790-i%2Bgaming%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock B760I Lightning WiFi",        "score": 80,        "category": "BEST BUDGET INTEL 14TH/13TH GEN",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bb760i%2Blightning%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-ram-for-gaming-2025",    "name": "Best RAM for gaming 2025",    "guideUrl": "https://www.pcgamer.com/best-ram-for-gaming/",    "category": "Core Components",    "products": [      {        "modelName": "Trident Z5 RGB DDR5-7200 CL34 32GB",        "score": 80,        "category": "BEST DDR5 OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dg.skill%2Btrident%2Bz5%2Brgb%2B32gb%2Bddr5-7200%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "TeamGroup T-Force Vulcan DDR5 32GB (2x16GB) 5200MHz",        "score": 80,        "category": "BEST BUDGET DDR5",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dteamgroup%2Bt-force%2Bvulcan%2Bddr5-5200%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "G.Skill Trident Z5 64GB 6400MT/s",        "score": 80,        "category": "BEST HIGH-CAPACITY DDR5",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dg.skill%2Btrident%2Bz5%2B64gb%2Bddr5-6400%2Bcl32%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "TeamGroup T-Force Xtreem ARGB (2x 8GB)",        "score": 90,        "category": "BEST DDR4 OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dteam%2Bxtreem%2B16gb%2Bddr4-3600%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "G.Skill Ripjaws V Series 16GB DDR4-3600 PC4-28800 F4-3600C16D-16GVKC",        "score": 80,        "category": "BEST BUDGET DDR4",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dg.skill%2Bripjaws%2Bv%2B16gb%2Bddr4-3600%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Corsair Dominator Platinum RGB 32GB DDR4-3200MHz",        "score": 90,        "category": "BEST HIGH-CAPACITY DDR4",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcorsair%2Bdominator%2Bplatinum%2Brgb%2B32gb%2Bddr4-3200%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  }];            // --- Inlined components/StarRating.tsx ---      const StarRating = ({ score }) => {        const rating = (score / 100) * 5;        const stars = [];        for (let i = 1; i <= 5; i++) {          const fillAmount = Math.min(1, Math.max(0, rating - (i - 1)));          const clipId = 'pcg-clip-partial-' + i + '-' + Math.random().toString(36).substr(2, 9);          if (fillAmount >= 0.99) {            stars.push(React.createElement('div', { key: i, className: "pcg-star pcg-star-full" }, React.createElement('svg', { className: "pcg-star-svg" }, React.createElement('use', { href: "#pcg-tr-star-full" }))));          } else if (fillAmount > 0.01) {            stars.push(React.createElement('div', { key: i, className: "pcg-star" }, React.createElement('svg', { className: "pcg-star-svg pcg-star-empty" }, React.createElement('use', { href: "#pcg-tr-star-empty" })), React.createElement('div', { className: "pcg-star-partial" }, React.createElement('svg', { className: "pcg-star-svg" }, React.createElement('defs', null, React.createElement('clipPath', { id: clipId }, React.createElement('rect', { x: "0", y: "0", width: (fillAmount * 100) + '%', height: "100%" }))), React.createElement('use', { href: "#pcg-tr-star-full", clipPath: 'url(#' + clipId + ')' })))));          } else {            stars.push(React.createElement('div', { key: i, className: "pcg-star pcg-star-empty" }, React.createElement('svg', { className: "pcg-star-svg" }, React.createElement('use', { href: "#pcg-tr-star-empty" }))));          }        }        return React.createElement('div', { className: "pcg-stars", "aria-label": rating.toFixed(1) + ' out of 5 stars' }, stars);      };      // --- Inlined components/ComparisonList.tsx ---      const ComparisonList = ({ offers, id, productImageUrl, originalModelName, onClose }) => {          const decodeHtmlEntities = (text) => {              if (typeof text !== 'string') return '';              const textArea = document.createElement('textarea');              textArea.innerHTML = text;              return textArea.value;          };                const offerElements = offers.map((offer, index) => {              const modelName = offer.name?.trim() || originalModelName || 'Product';              const isLowest = index === 0;              const rowClassName = 'pcg-comparison-row ' + (isLowest ? 'pcg-comparison-row-sticky' : '');              const linkProps = {                href: offer.productUrl,                target: "_blank",                rel: "noopener noreferrer sponsored",                "data-hawkify-clicked-area": "cta",                "data-hawkify-category": "PC Gamer comparison price button",                "data-hawkify-widget-type": "comparison-buy-now",              };                    const rowHeader = React.createElement('div', { className: 'pcg-comparison-row-header' },                  React.createElement('div', { className: 'pcg-comparison-model-name' }, modelName)              );              const rowContent = React.createElement('div', { className: 'pcg-comparison-row-content' },                  React.createElement('span', { className: "pcg-comparison-number" }, index + 1),                  React.createElement('img', { src: productImageUrl, alt: "", className: "pcg-comparison-product-image", onError: (e) => { e.target.src = 'https://placehold.co/60x60/E2E8F0/4A5568?text=Img'; } }),                  React.createElement('div', { className: "pcg-comparison-retailer-logo-container" },                      offer.logoUrl && React.createElement('img', { src: offer.logoUrl, alt: offer.retailer + ' logo', className: "pcg-retailer-logo", loading: "lazy" })                  ),                  React.createElement('div', { className: 'pcg-comparison-price-wrapper' },                      isLowest && React.createElement('div', { className: 'pcg-lowest-price-badge' }, 'Lowest Price'),                      React.createElement('span', { className: "pcg-comparison-price" }, offer.isPriceVague ? 'Check Price' : decodeHtmlEntities(offer.currencySymbol) + offer.price)                  ),                  React.createElement('a', {...linkProps, className: "pcg-comparison-button"}, 'View')              );                    return React.createElement('div', {                  key: index,                  className: rowClassName,              },                  rowHeader,                  rowContent              );          });                    const chevronUp = React.createElement('svg', { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "currentColor", className: "pcg-chevron", viewBox: "0 0 16 16", "aria-hidden": "true" },             React.createElement('path', { d: "M8 4l6 6H2l6-6z" })          );                const hideButton = React.createElement('div', { className: "pcg-show-more-container" },              React.createElement('button', { onClick: onClose, className: "pcg-show-more-button" }, 'Hide', chevronUp)          );                return React.createElement('div', { id: id, className: "pcg-comparison-container", "aria-label": "Price comparison list" },              React.createElement('div', { className: 'pcg-comparison-list-scrollable' }, offerElements),              hideButton          );      };      // --- Inlined components/ProductRow.tsx ---      const ProductRow = ({ product, index, isExpanded, onToggleCompare }) => {        const decodeHtmlEntities = (text) => {            if (typeof text !== 'string') return '';            const textArea = document.createElement('textarea');            textArea.innerHTML = text;            return textArea.value;        };        const getPriceDisplay = () => {            if (!product.price || product.price === 'Check Amazon') {                return 'Check Amazon';            }            if (product.priceValue !== undefined && product.currencySymbol && product.retailer) {                const formattedPrice = product.priceValue.toLocaleString();                const pricePart = decodeHtmlEntities(product.currencySymbol) + formattedPrice + ' at ';                const retailerPart = product.retailer;                const fullText = pricePart + retailerPart;                const MAX_LENGTH = 22;                if (fullText.length > MAX_LENGTH) {                    const availableLengthForRetailer = MAX_LENGTH - pricePart.length;                    if (availableLengthForRetailer > 3) {                        const truncatedRetailer = retailerPart.substring(0, availableLengthForRetailer - 3) + '...';                        return pricePart + truncatedRetailer;                    } else {                        return decodeHtmlEntities(product.currencySymbol) + formattedPrice;                    }                }                return fullText;            }            return decodeHtmlEntities(product.price);        };                const renderCompareControl = () => {          if (!product.priceCount || product.priceCount < 1) {            return null;          }          if (product.priceCount === 1) {            return React.createElement('span', { className: "pcg-compare-link pcg-compare-link-static" }, React.createElement('strong', null, '1'), ' price found');          }          const chevronDown = React.createElement('svg', { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "currentColor", className: "pcg-chevron", viewBox: "0 0 16 16", "aria-hidden": "true" }, React.createElement('path', { d: "M8 12L2 6h12L8 12z" }));          const chevronUp = React.createElement('svg', { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "currentColor", className: "pcg-chevron", viewBox: "0 0 16 16", "aria-hidden": "true" }, React.createElement('path', { d: "M8 4l6 6H2l6-6z" }));                    return React.createElement('button', {             onClick: () => onToggleCompare(product.modelName),             className: "pcg-compare-link",             "aria-expanded": isExpanded,             "aria-controls": 'comparison-list-' + index          },             React.createElement('span', null,                 React.createElement('strong', null, product.priceCount),                 " prices | ",                 React.createElement('strong', null, isExpanded ? 'Hide' : 'Compare')            ),            isExpanded ? chevronUp : chevronDown          );        };        const canCompare = product.priceCount && product.priceCount > 1;        const productRowContent = React.createElement('div', { className: "pcg-product-row" },             React.createElement('img', { src: product.imageUrl, alt: product.modelName, className: "pcg-product-image", onError: (e) => { e.target.src = 'https://placehold.co/64x64/E2E8F0/4A5568?text=Image'; } }),             React.createElement('div', { className: "pcg-product-content" },                 React.createElement('div', { className: "pcg-product-info" },                     React.createElement('div', { className: "pcg-product-meta" },                         React.createElement('span', { className: "pcg-category-badge" }, product.category),                         React.createElement(StarRating, { score: product.score })                    ),                     React.createElement('a', { href: product.productUrl, target: "_blank", rel: "noopener noreferrer sponsored", className: "pcg-product-link", "data-hawkify-clicked-area": "cta", "data-hawkify-category": "PC Gamer product link", "data-hawkify-widget-type": "product-name" }, (index + 1) + '. ' + product.modelName)                ),                 React.createElement('div', { className: "pcg-price-panel" },                     React.createElement('div', null, React.createElement('a', { href: product.productUrl, target: "_blank", rel: "noopener noreferrer sponsored", className: "pcg-view-button", "data-hawkify-clicked-area": "cta", "data-hawkify-category": "PC Gamer price button", "data-hawkify-widget-type": "buy-now" }, getPriceDisplay())),                     product.price !== 'Check Amazon' && renderCompareControl()                )            )        );        const comparisonContent = canCompare && (          product.allOffers && product.allOffers.length > 0 ?            React.createElement(ComparisonList, { offers: product.allOffers, id: 'comparison-list-' + index, productImageUrl: product.imageUrl, originalModelName: product.modelName, onClose: () => onToggleCompare(product.modelName) }) :            React.createElement('div', { className: "pcg-comparison-container", id: 'comparison-list-' + index },                React.createElement('div', { className: "pcg-no-offers" }, 'No other offers found.')            )        );        return React.createElement('div', { className: 'pcg-product-row-wrapper ' + (isExpanded ? 'pcg-expanded' : '') },          productRowContent,          comparisonContent        );      };      // --- Inlined App.tsx (core logic only) ---      const App = () => {        const [productLists] = useState(allProductLists);        const configuredDefaultListId = 'best-pc-controller-2025';        const defaultList = productLists.find(l => l.id === configuredDefaultListId) || productLists[0];        const [selectedListId, setSelectedListId] = useState(defaultList.id);        const [activeCategory, setActiveCategory] = useState(defaultList.category);        const [processedProducts, setProcessedProducts] = useState([]);        const [isLoading, setIsLoading] = useState(true);        const [productDataCache, setProductDataCache] = useState({});        const [expandedProduct, setExpandedProduct] = useState(null);        const widgetContainerRef = useRef(null);                const currentList = productLists.find(list => list.id === selectedListId) || defaultList;                const categories = [...new Set(productLists.map(p => p.category))];        const filteredLists = productLists.filter(list => list.category === activeCategory);        const showGuideLinkAtTop = false;        const showLivePill = false;        const handleToggleCompare = useCallback((modelName) => {            const isOpening = expandedProduct !== modelName;            setExpandedProduct(isOpening ? modelName : null);        }, [expandedProduct]);                const handleCategoryChange = (newCategory) => {            setActiveCategory(newCategory);            const firstListInNewCategory = productLists.find(list => list.category === newCategory);            setSelectedListId(firstListInNewCategory?.id || '');        };                const handleListChange = (newListId) => {            if (newListId) {              const list = productLists.find(l => l.id === newListId);              if (list) {                setSelectedListId(list.id);                if (list.category !== activeCategory) {                  setActiveCategory(list.category);                }              }            } else {              setSelectedListId(defaultList.id);              setActiveCategory(defaultList.category);            }        };        useEffect(() => {          if (!currentList) return;          const listId = currentList.id;          if (productDataCache[listId]) {            setProcessedProducts(productDataCache[listId]);            setIsLoading(false);          } else {            setIsLoading(true);            const fetchAndCachePrices = async () => {              const productsToFetch = currentList.products;              const updatedProducts = await Promise.all(                productsToFetch.map(async (product) => {                  try {                    const encodedModelName = encodeURIComponent(product.modelName);                    const apiUrl = 'https://hawky.pcgamer.com/widget.php?model_name=' + encodedModelName + '&article_type=deals_compare&article_category=retail&language=en-US&site=PCG&all_filters=false&exclude_unlabelled=false&include_specs=false&offset=0&distinct_networks=0&multi=1&keep_duplicities=1&filter_product_types=deals%2Ccontracts%2Csubscriptions%2Cbroadband%2Csimilar&rows=50&device=mobile&origin=widgets-clientside&only_fallback_offers=false&progressive_filtering=1';                    const response = await fetch(apiUrl);                    if (!response.ok) throw new Error('HTTP error! status: ' + response.status);                    const data = await response.json();                    const offers = data?.widget?.data?.offers;                    const modelInfoData = data?.widget?.data?.model_info;                    const currencySymbolMap = { '£': 'GBP', '$': 'USD', '€': 'EUR', '¥': 'JPY' };                    let bestImage = product.imageUrl;                    const getModelId = () => {                        if (offers && offers.length > 0 && offers[0].model_id) return offers[0].model_id;                        if (modelInfoData && Object.keys(modelInfoData).length > 0) {                            const originalModelName = product.modelName.toLowerCase();                            const matchingKey = Object.keys(modelInfoData).find(key => modelInfoData[key]?.model_name?.toLowerCase().includes(originalModelName));                            if (matchingKey) return matchingKey;                            return Object.keys(modelInfoData)[0];                        }                        return null;                    };                    const modelId = getModelId();                    const allPossibleImages = [];                    if (modelId && modelInfoData && modelInfoData[modelId]?.model_image_url) {                        allPossibleImages.push(modelInfoData[modelId].model_image_url);                    }                    if (offers) {                        offers.forEach(o => { if (o.image) allPossibleImages.push(o.image); if (o.model_image) allPossibleImages.push(o.model_image); });                    }                    const uniqueImages = [...new Set(allPossibleImages.filter(img => typeof img === 'string'))];                    if (uniqueImages.length > 0) {                        const pngs = uniqueImages.filter(img => img.toLowerCase().includes('.png'));                        bestImage = pngs.length > 0 ? pngs[0] : uniqueImages[0];                    }                    if (offers && offers.length > 0) {                        const allOffersUnsorted = offers.map(offer => {                            const offerPrice = parseFloat(offer.offer.price);                            const isOfferAmazonSearch = offer.offer.link && offer.offer.link.includes('amazon.com/s?');                            const isOfferZeroPrice = offer.offer.price === "0.00";                            let name = offer.offer.display_name || offer.offer.name || '';                            if (offer.bundle_models && offer.bundle_models.length > 0) {                                const bundledItems = offer.bundle_models.map(b => b.model_name).join(' + ');                                if (name && bundledItems && !name.toLowerCase().includes(bundledItems.toLowerCase())) { name = name + ' + ' + bundledItems; }                            }                            return { price: Math.round(offerPrice).toLocaleString(), currencySymbol: offer.offer.currency_symbol || '$', retailer: offer.merchant?.name || 'retailer', productUrl: offer.offer.link || '#', isPriceVague: isOfferAmazonSearch || isOfferZeroPrice, logoUrl: offer.merchant?.logo_url, model: offer.model, name: name, priceValue: (isOfferAmazonSearch || isOfferZeroPrice) ? Infinity : offerPrice };                        });                        const allOffersSorted = allOffersUnsorted.sort((a, b) => a.priceValue - b.priceValue);                        const seen = new Set();                        const uniqueOffers = [];                        for (const offer of allOffersSorted) {                            const key = offer.retailer + '-' + offer.price;                            if (!seen.has(key)) {                                const { priceValue, ...rest } = offer;                                uniqueOffers.push(rest);                                seen.add(key);                            }                        }                        const bestOffer = offers[0];                        const price = Math.round(parseFloat(bestOffer.offer.price));                        const formattedPrice = price.toLocaleString();                        const currencySymbol = bestOffer.offer.currency_symbol || '$';                        const merchantName = bestOffer.merchant?.name || 'retailer';                        const productLink = bestOffer.offer.link;                        const isAmazonSearch = productLink && productLink.includes('amazon.com/s?');                        const isZeroPrice = bestOffer.offer.price === "0.00";                        const priceText = (isAmazonSearch || isZeroPrice) ? 'Check Amazon' : currencySymbol + formattedPrice + ' at ' + merchantName;                        const priceCount = (isZeroPrice || isAmazonSearch) ? 0 : (data?.widget?.data?.counts?.deals || 0);                        return { ...product, imageUrl: bestImage, price: priceText, productUrl: productLink || product.productUrl, compareUrl: 'https://www.pcgamer.com/deals/compare/?model_name=' + encodedModelName, priceCount: priceCount, priceValue: price, currencyCode: currencySymbolMap[currencySymbol] || 'USD', allOffers: uniqueOffers, retailer: merchantName, currencySymbol: currencySymbol };                    } else {                        return { ...product, imageUrl: bestImage, price: 'Check Amazon', compareUrl: 'https://www.pcgamer.com/deals/compare/?model_name=' + encodedModelName, allOffers: [] };                    }                  } catch (error) { console.error('Error fetching price for ' + product.modelName + ':', error); }                  return { ...product, price: 'Check Amazon', compareUrl: 'https://www.pcgamer.com/deals/compare/?model_name=' + encodeURIComponent(product.modelName), allOffers: [] };                })              );              setProductDataCache(prevCache => ({ ...prevCache, [listId]: updatedProducts }));              setProcessedProducts(updatedProducts);              setIsLoading(false);            };            fetchAndCachePrices();          }        }, [currentList, productDataCache]);        useEffect(() => {          if (isLoading || processedProducts.length === 0) return;          const schema = { '@context': 'https://schema.org', '@type': 'ItemList', 'name': currentList.name, 'url': currentList.guideUrl, 'itemListElement': processedProducts.map((product, index) => ({ '@type': 'ListItem', 'position': index + 1, 'item': { '@type': 'Product', 'name': product.modelName, 'image': product.imageUrl, 'url': product.productUrl, ...(product.priceValue && product.currencyCode && { 'offers': { '@type': 'Offer', 'price': product.priceValue, 'priceCurrency': product.currencyCode, 'availability': 'https://schema.org/InStock', 'url': product.productUrl } }), 'aggregateRating': { '@type': 'AggregateRating', 'ratingValue': (product.score / 100 * 5).toFixed(1), 'bestRating': '5', 'ratingCount': '1' } } })) };          let scriptTag = document.getElementById('pcg-widget-json-ld');          if (!scriptTag) { scriptTag = document.createElement('script'); scriptTag.id = 'pcg-widget-json-ld'; scriptTag.type = 'application/ld+json'; document.head.appendChild(scriptTag); }          scriptTag.textContent = JSON.stringify(schema);          const widgetContainer = widgetContainerRef.current;          if (widgetContainer) {             document.dispatchEvent(new CustomEvent("processArticle", { detail: { element: widgetContainer } }));           }        }, [processedProducts, isLoading, currentList]);        if (!currentList) return React.createElement('div', { className: "p-5 text-center text-red-500" }, "No product list found.");        const themeClassName = "standard" !== 'standard' ? 'theme-' + "standard" : '';        const outlineClassName = true ? 'pcg-widget-outline' : '';        const finalClassName = [themeClassName, outlineClassName].filter(Boolean).join(' ');        const guideLinkElement = React.createElement('div', { className: 'pcg-footer-link ' + (showGuideLinkAtTop ? 'pcg-footer-link-top' : '') }, "Read the full guide:", " ", React.createElement('a', { href: currentList.guideUrl, target: "_blank", rel: "noopener noreferrer", "data-hawkify-clicked-area": "cta", "data-hawkify-category": "PC Gamer buying guide", "data-hawkify-widget-type": "guide-link" }, currentList.name));        return React.createElement('div', { id: "pcg-cpu-widget-container", className: finalClassName, ref: widgetContainerRef },          React.createElement('svg', { style: { display: 'none' }, "aria-hidden": "true" }, React.createElement('defs', null, React.createElement('symbol', { id: "pcg-tr-star-full", viewBox: "0 0 20 20" }, React.createElement('path', { d: "M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z" })), React.createElement('symbol', { id: "pcg-tr-star-empty", viewBox: "0 0 20 20" }, React.createElement('path', { d: "M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z" })))),          React.createElement('div', { className: "pcg-widget-container" },            React.createElement('div', { className: "pcg-header-section" }, React.createElement('div', { className: "pcg-header-content" }, React.createElement('img', { src: "https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png", alt: "PC Gamer Logo", className: "pcg-header-image" }), React.createElement('div', { className: "pcg-header-text" }, React.createElement('h2', { id: "pcg-current-list-title", className: "pcg-header-title" }, currentList.name), React.createElement('p', { className: "pcg-header-subtitle" }, "All our current recommendations"))), showLivePill && React.createElement('div', { className: "pcg-live-pill" }, React.createElement('span', { className: "pcg-live-dot" }), React.createElement('span', null, "Live"))),            showGuideLinkAtTop && guideLinkElement,            React.createElement('div', { className: "pcg-dropdown-controls" },               React.createElement('div', { className: 'pcg-select-wrapper' },                React.createElement('select', { className: "pcg-select-dropdown", value: activeCategory, onChange: (e) => handleCategoryChange(e.target.value), "aria-label": "Select product category", "data-hawkify-clicked-area": "filter", "data-hawkify-category": "PC Gamer category filter", "data-hawkify-widget-type": "dropdown" },                   React.createElement('option', { value: "" }, "Pick a category"),                  categories.map(category => React.createElement('option', { key: category, value: category }, category))                )              ),              React.createElement('div', { className: 'pcg-select-wrapper' },                React.createElement('select', { className: "pcg-select-dropdown", value: selectedListId, onChange: (e) => handleListChange(e.target.value), "aria-label": "Select buying guide", "data-hawkify-clicked-area": "filter", "data-hawkify-category": "PC Gamer guide selector", "data-hawkify-widget-type": "dropdown", disabled: filteredLists.length <= 1 },                    React.createElement('option', { value: "" }, "Choose a list"),                   filteredLists.map(list => React.createElement('option', { key: list.id, value: list.id }, list.name))                )              )            ),            React.createElement('hr', { className: "pcg-separator" }),            React.createElement('div', { id: "pcg-products-container" }, isLoading ? React.createElement('div', { className: "pcg-loading" }, "Loading recommendations...") : React.createElement('div', { className: "pcg-group" }, processedProducts.map((product, index) => React.createElement(ProductRow, { product: product, index: index, key: product.modelName + '-' + index, isExpanded: expandedProduct === product.modelName, onToggleCompare: handleToggleCompare })))),            React.createElement('hr', { className: "pcg-separator" }),            !showGuideLinkAtTop && guideLinkElement,            React.createElement('div', { className: "pcg-powered-by" }, React.createElement('span', { className: "pcg-powered-by-text" }, "POWERED BY"), React.createElement('img', { src: "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb-200-100.png", alt: "PC Gamer Logo", className: "pcg-powered-by-logo" }))          )        );      };      // --- Inlined index.tsx ---      const rootElement = document.getElementById('root');      if (!rootElement) {        throw new Error("Could not find root element to mount to");      }      const root = ReactDOM.createRoot(rootElement);      root.render(React.createElement(React.StrictMode, null, React.createElement(App, null)));      // --- Iframe Resizing Script ---      const sendHeight = () => {        // We add a small buffer to prevent scrollbars from appearing due to sub-pixel rendering        const height = document.documentElement.scrollHeight + 5;        window.parent.postMessage({ type: 'pcg-widget-resize', height: height }, '*');      };            const observer = new ResizeObserver(() => {        // Defer the execution to the next frame to avoid ResizeObserver loop errors.        window.requestAnimationFrame(sendHeight);      });      observer.observe(document.body);            window.addEventListener('load', () => {          setTimeout(sendHeight, 200);      });            document.getElementById('root').addEventListener('click', () => {        setTimeout(sendHeight, 450);      });    </script>      </div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I can't live without the Steam Deck's trackpads anymore, and I hope the Steam Controller forces the competition to adopt them ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/i-cant-live-without-the-steam-decks-trackpads-anymore-and-i-hope-the-steam-controller-forces-the-competition-to-adopt-them/</link>
                                                                            <description>
                            <![CDATA[ Trackpads could be the 21st century’s analog sticks. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">cNwatgaAEkqiZyF4qYgWgC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/JVzVspDAf3wen3Zpg7z8-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 13 Nov 2025 22:18:14 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/VHK6WWHuYbRyFX3dSXbr3G.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/JVzVspDAf3wen3Zpg7z8-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:description>                                                            <media:text><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:text>
                                <media:title type="plain"><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/JVzVspDAf3wen3Zpg7z8-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Of the three hardware announcements Valve made yesterday, the <a href="https://www.pcgamer.com/hardware/controllers/steam-controller-specs-availability-hands-on/">Steam Controller</a> is probably the least exciting at face value. It looks a whole lot like the original Steam controller, which hardly set the world ablaze. Also, it’s a gamepad. There are countless PC gamepads on the market, and many are better than what Microsoft or Sony have to offer. We have 1000 Hz polling rates, TMR sticks, and near-mandatory paddle buttons. Sometimes they even have a screen on them, and if you’re lucky, a sprinkling of RGB too. Surely we’re good. </p><div  class="fancy-box"><div class="fancy_box-title">Valve's hot hardware</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WX5CBPYBtDzfHtHQNeUz" name="steam-controller-08" caption="" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." src="https://cdn.mos.cms.futurecdn.net/WX5CBPYBtDzfHtHQNeUz.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text"><a data-analytics-id="inline-link" href="https://www.pcgamer.com/hardware/vr-hardware/steam-frame-specs-availability" target="_blank"><strong>Steam Frame</strong></a>: Valve's new wireless VR headset<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/hardware/gaming-pcs/steam-machine-specs-availability" target="_blank"><strong>Steam Machine</strong></a>: Compact living room gaming box<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/hardware/controllers/steam-controller-specs-availability-hands-on" target="_blank"><strong>Steam Controller</strong></a>: A controller to replace your mouse</p></div></div><p>We’re good if we think about a gamepad as a fast-track to a conventional console experience on our PCs. But after a year spent with Steam Deck and its trackpads, I’ve come to appreciate, at least in part, why Valve put those gargantuan circular trackpads on their original design: because it makes swathes of otherwise unplayable PC games playable under circumstances where a mouse and keyboard isn’t practical or desirable. </p><p>Valve’s infiltration of console orthodoxy with the Steam Deck was so much more subtle than just: Cyberpunk 2077 on the bus and you can tweak the graphics. Among other things, it was soft power advocacy for onboard trackpads. Taking trackpads mainstream could be part of the Steam Deck’s legacy, or at least I hope that’s the case. I’m so trackpad-pilled that I can’t imagine another generation of consoles that doesn’t adopt Valve’s implementation. There are more powerful handheld PCs on the market than Steam Deck, but I will never consider buying them if they don’t have trackpads.</p><p>Pillars of Eternity turned me into a trackpad truther. It seemed a perfect Steam Deck candidate. It was among the first games I installed on the handheld when I got one, mostly because it’s a very text-heavy game (basically a novel at times) and I didn’t want to bend over a laptop or sit at a desk while reading tracts of high fantasy lore. Alas, while Obsidian’s CRPG eventually released for consoles, the console gamepad UI was never patched into the PC version. A community layout implementing the trackpads as a stand-in for a mouse is pretty much essential for the handheld-determined. I begrudgingly made do. </p><p>I begrudgingly made do for a while: for about an hour I was still annoyed that Obsidian hadn’t patched the PC version with the gamepad trimmings (I almost posted on Reddit). But after about an hour—no longer—I became accustomed to using the trackpads, and had a grand time over the ensuing 80 hours playing this ostensibly mouse-and-keyboard CRPG without a mouse and keyboard. I came to love it so much that when I installed Wasteland 3—which does have gamepad functionality built-in—I much preferred using a mouse-and-keyboard system adapted for trackpads, despite the enduring annoyance of keyboard UI prompts. Rather than learn which trigger or bumper accesses a certain nested sub-menu, or which long-press initiated a hidden menu, I could simply—without a mouse—point ‘n’ click. Adapting to a new thumb-centric muscle memory is about three-quarters of an hour of your time at worst. It pays off.</p><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="xBYTSnp2cpMvDXfNzQGETP" name="valve-steam-controller" alt="Valve Steam controller angled on a blue background" src="https://cdn.mos.cms.futurecdn.net/xBYTSnp2cpMvDXfNzQGETP.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The original 2015 Steam Controller. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Valve)</span></figcaption></figure><p>The beauty of the trackpads was well ingrained by the time I completed Pillars of Eternity on a handheld: I enjoyed the game with no sense of being at a disadvantage, and handling it on a Steam Deck felt normal and good, usually great. But that’s not what sold me entirely on trackpads. Earlier this year I was taken by a fleeting obsession with 1990s point ‘n’ click adventures. I bought Sanitarium, Harvester, a couple of Gabriel Knight games (rocky affairs thanks to a wily Linux-filtered DOSBox, but still playable) and even the keyboard-shortcut-heavy Realms of Arcadia blobbers. It probably goes without saying that none of these games were designed with gamepads in mind.</p><p>Sanitarium (1998) is completely, comfortably playable on the Steam Deck thanks to the track pads. Harvester (1996), while cheerfully dumb as shit, was perfectly playable too. Gabriel Knight: Sins of the the Fathers (1993) and the Realms of Arcadia games (1992 onwards) took a little more adjustment, thanks to their reliance on keyboard inputs, and I can’t say I stuck with them long, but I was definitely able to navigate them for an hour or so with increasing comfort, and I knew that a bit of fiddling could have made them sing.</p><p>The significance of this might be lost on younger readers, but it’s worth being specific for the elders: it’s provenly possible to play the ghastly point ‘n’ click deep cut <a href="https://www.pcgamer.com/saturday-crapshoot-badmojo/"><u>Bad Mojo</u></a> (1996) on Steam Deck. Which means, it’ll theoretically be possible to sit on a couch, vomit bag in tow, with a Steam controller, and play that old cockroach odyssey on a large screen in the very near future. Perhaps you’ve already done so, with the old Steam Controller. If that’s you, great: you’re akin to the uncle who saw Hendrix at Isle of Wight. The overall point is this: trackpads render wide swathes of otherwise gamepad-unfriendly PC games gamepad friendly. For people who love PC gaming, but don’t always love the whole sitting-at-a-desktop-PC aspect of it, it’s transformative.</p><div><blockquote><p>There’s a reason the Steam Controller of 2025 looks a whole lot like the Steam Controller of 2015: It’s a good idea, but it didn’t have an obvious use case to justify it</p></blockquote></div><p>PlayStation’s DualSense has a trackpad, and so does the DualShock 4, but they’re awkwardly placed. They’re tentative toe dips, scarcely used and when they are, a superfluous novelty, untethered from moment-to-moment interaction. Their implementation reminds me, for its infancy, of the analog stick on the Nintendo 64 controller. Nintendo knew that an eight-directional stick would factor heavily into the future, but they didn’t know exactly how to execute on it. PlayStation was watching, and eventually adopted not one but two symmetrical sticks on its own controller, thus completely changing the way we handle games into the 21st century. </p><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="THJSoi9B2op3Sv7eyzD5So" name="steam-deck-steam-button.jpg" alt="Steam Deck with menu screen" src="https://cdn.mos.cms.futurecdn.net/THJSoi9B2op3Sv7eyzD5So.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>PlayStation and Nintendo are inarguably pioneers when it comes to how games are controlled in a modern gamepad context, but in the current climate, their implementation of new technologies, such as trackpad and touchscreen, feels rudimentary. For the most part, PlayStation games use the trackpad for menu navigation or, at best, tactile mini-games. At worst, it’s just a big ol’ button to access an open world map. Nintendo’s dalliances with touchscreen across Wii U and Switch haven’t been much more innovative. But the way we handle games defines them, almost entirely. The envelope cannot be pushed past a certain threshold without the widely accepted input language evolving, even a tad, and that means not <em>more </em>inputs, but potentially different ways to input.</p><p>The trackpad probably won’t be as revolutionary as the analog stick, but it definitely opens avenues for different kinds of experiences in vastly different playing contexts. We certainly won’t be comfortably playing text adventures or Dwarf Fortress with a Steam Controller, but the finer gradients of control—if it catches on—could give rise to different kinds of game, or at least better varieties of games we’ve played, merging the fine grain specificity of a drag-and-pull mouse with the pleasures of analog sticks and microswitches. It’s not just about, for example, precision in first-person shooters, which is how I remember a lot of people justifying the touchpads on the original Steam Controller. </p><p>In 2015, Valve seemed mad for its weirdo trackpad controller and the market told it so: in 2025, Valve has demonstrated not only that it can work, but that it feels good. There’s a reason the Steam Controller of 2025 looks a whole lot like the Steam Controller of 2015: It’s a good idea, but it didn’t have an obvious use case to justify it. Steam Deck is the use case's trojan horse. </p><p>Valve is well-placed to demonstrate it too. Half-Life 3 comes to mind, though Deadlock will probably do. Knowing Valve, they’ll let users and other studios do the talking.</p><div id="crow-inpage-content"><style>      @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');      #pcg-cpu-widget-container *, #pcg-cpu-widget-container *::before, #pcg-cpu-widget-container *::after { box-sizing: border-box !important; margin: 0 !important; padding: 0 !important; border: 0 !important; vertical-align: baseline !important; line-height: 1.5 !important; text-decoration: none !important; font-family: 'Inter', sans-serif !important; }      #pcg-cpu-widget-container { margin-bottom: 48px !important; padding-top: 16px !important; padding-bottom: 24px !important; background-color: transparent !important; display: block !important; overflow: visible !important; position: relative !important; container-type: inline-size !important; }      #pcg-cpu-widget-container.pcg-widget-outline { border: 1px solid #d1d5db !important; border-radius: 8px !important; padding: 16px 16px 24px !important; }      #pcg-cpu-widget-container .pcg-group > .pcg-product-row-wrapper:not(.pcg-expanded):last-child .pcg-product-row { border-bottom-width: 0 !important; }      #pcg-cpu-widget-container .pcg-widget-container { width: 100% !important; margin: 0 auto !important; display: block !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-header-section { display: flex !important; justify-content: space-between !important; align-items: flex-start !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-header-content { display: flex !important; align-items: center !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-header-image { width: 35px !important; height: 35px !important; border-radius: 8px !important; object-fit: cover !important; mix-blend-mode: multiply !important; display: block !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-header-text { margin-left: 16px !important; display: block !important; }      #pcg-cpu-widget-container .pcg-header-title { font-size: 18px !important; font-weight: bold !important; color: #1f2937 !important; margin: 0 !important; display: block !important; }      #pcg-cpu-widget-container .pcg-header-subtitle { font-size: 14px !important; color: #6b7280 !important; margin: 0 !important; display: block !important; }      #pcg-cpu-widget-container .pcg-separator { border: none !important; border-top: 1px solid #d1d5db !important; margin: 16px 0 !important; display: block !important; }      #pcg-cpu-widget-container .pcg-product-row-wrapper { display: flex !important; flex-direction: column !important; transition: all 0.2s ease-in-out; }      #pcg-cpu-widget-container .pcg-product-row-wrapper.pcg-expanded { border: 1px solid #e5e7eb !important; border-radius: 8px !important; margin-top: 8px !important; margin-bottom: 8px !important; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04) !important; overflow: hidden !important; background-color: #ffffff !important; }      #pcg-cpu-widget-container .pcg-product-row-wrapper.pcg-expanded .pcg-product-row { padding-left: 12px !important; padding-right: 12px !important; border-bottom-width: 1px !important; border-bottom-color: #e5e7eb !important; }      #pcg-cpu-widget-container .pcg-product-row { display: flex !important; align-items: flex-start !important; padding: 12px 0 !important; border-bottom: 1px solid #d1d5db !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-product-image { display: block !important; width: 48px !important; height: 48px !important; border-radius: 6px !important; object-fit: contain !important; margin-right: 16px !important; flex-shrink: 0 !important; mix-blend-mode: multiply !important; }      #pcg-cpu-widget-container .pcg-product-content { flex-grow: 1 !important; display: flex !important; justify-content: space-between !important; align-items: stretch !important; min-width: 0 !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-product-info { flex: 1 1 0 !important; min-width: 0 !important; display: block !important; overflow: visible !important; margin-right: 8px !important; }      #pcg-cpu-widget-container .pcg-mobile-price-container { display: none !important; }      #pcg-cpu-widget-container .pcg-product-meta { display: flex !important; flex-direction: column !important; align-items: flex-start !important; gap: 8px !important; margin-bottom: 8px !important; height: auto !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-category-badge { font-size: 12px !important; color: #000000 !important; font-weight: bold !important; line-height: 12px !important; flex-shrink: 0 !important; white-space: nowrap !important; display: inline-block !important; }      #pcg-cpu-widget-container .pcg-stars { display: flex !important; flex-direction: row !important; flex-wrap: nowrap !important; gap: 1px !important; height: auto !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-star { position: relative !important; width: 12px !important; height: 12px !important; flex-shrink: 0 !important; display: block !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-star-svg { width: 100% !important; height: 100% !important; display: block !important; fill: currentColor !important; }      #pcg-cpu-widget-container .pcg-star-empty .pcg-star-svg { color: #d1d5db !important; }      #pcg-cpu-widget-container .pcg-star-full .pcg-star-svg { color: #ef4444 !important; }      #pcg-cpu-widget-container .pcg-star-partial { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; display: block !important; }      #pcg-cpu-widget-container .pcg-star-partial .pcg-star-svg { color: #ef4444 !important; }      #pcg-cpu-widget-container .pcg-product-link { display: block !important; font-weight: 600 !important; color: #dc2626 !important; text-decoration: none !important; font-size: 13px !important; white-space: normal !important; }      #pcg-cpu-widget-container .pcg-product-link:hover { text-decoration: underline !important; } #pcg-cpu-widget-container .pcg-product-link:visited { color: #b91c1c !important; }      #pcg-cpu-widget-container .pcg-price-panel { flex-shrink: 0 !important; display: flex !important; flex-direction: column !important; align-items: flex-end !important; justify-content: flex-end !important; gap: 10px !important; overflow: visible !important; text-align: right !important; }      #pcg-cpu-widget-container .pcg-view-button { display: inline-flex !important; align-items: center !important; justify-content: center !important; font-weight: bold !important; border-radius: 8px !important; transition: all 0.2s !important; background-color: #dc2626 !important; color: white !important; border: none !important; text-decoration: none !important; width: 120px !important; font-size: 12px !important; padding: 10px 12px !important; white-space: nowrap !important; line-height: 1.5 !important; text-overflow: ellipsis !important; overflow: hidden !important; }      #pcg-cpu-widget-container .pcg-view-button:hover, #pcg-cpu-widget-container .pcg-view-button:visited { background-color: #b91c1c !important; color: white !important; }      #pcg-cpu-widget-container .pcg-compare-link { font-size: 13px !important; color: #dc2626 !important; text-decoration: none !important; display: inline-flex !important; align-items: center !important; gap: 4px !important; background: none !important; border: none !important; padding: 4px 0 !important; cursor: pointer !important; font-family: inherit !important; text-transform: none !important; }      #pcg-cpu-widget-container .pcg-compare-link:hover:not(:disabled) { text-decoration: underline !important; }      #pcg-cpu-widget-container .pcg-compare-link.pcg-compare-link-static { cursor: default !important; justify-content: center !important; width: 120px !important; }      #pcg-cpu-widget-container .pcg-compare-link.pcg-compare-link-static:hover { text-decoration: none !important; }      #pcg-cpu-widget-container .pcg-compare-link strong { font-weight: bold !important; }      #pcg-cpu-widget-container .pcg-footer-link { font-weight: 600 !important; color: #1f2937 !important; display: block !important; }      #pcg-cpu-widget-container .pcg-footer-link.pcg-footer-link-top { margin-top: 16px !important; }      #pcg-cpu-widget-container .pcg-footer-link a { color: #dc2626 !important; text-decoration: none !important; display: inline !important; }      #pcg-cpu-widget-container .pcg-footer-link a:hover { text-decoration: underline !important; } #pcg-cpu-widget-container .pcg-footer-link a:visited { color: #b91c1c !important; }      #pcg-cpu-widget-container .pcg-powered-by { margin-top: 16px !important; display: flex !important; justify-content: center !important; align-items: center !important; gap: 4px !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-powered-by-text { font-size: 10px !important; font-weight: 600 !important; color: #6b7280 !important; display: inline !important; }      #pcg-cpu-widget-container .pcg-powered-by-logo { height: 10px !important; width: auto !important; mix-blend-mode: multiply !important; display: inline-block !important; }      #pcg-cpu-widget-container .pcg-dropdown-controls { display: flex !important; gap: 16px !important; margin-top: 16px !important; flex-direction: row !important; }      #pcg-cpu-widget-container .pcg-select-wrapper { flex: 1; min-width: 0; }      #pcg-cpu-widget-container .pcg-select-dropdown { width: 100% !important; padding: 8px 12px !important; font-size: 14px !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; background-color: white !important; color: #1f2937 !important; -webkit-appearance: none; -moz-appearance: none; appearance: none; 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; padding-right: 2.5rem !important; cursor: pointer !important; }      #pcg-cpu-widget-container .pcg-loading { font-size: 12px !important; color: #6b7280 !important; display: block !important; padding: 12px 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-container { max-height: 0 !important; overflow: hidden !important; transition: max-height 0.4s ease-in-out, padding 0.4s ease-in-out !important; background-color: #f9fafb !important; border-bottom: 1px solid #d1d5db !important; padding: 0 16px !important; }      #pcg-cpu-widget-container .pcg-product-row-wrapper.pcg-expanded .pcg-comparison-container { max-height: 1000px !important; padding: 12px 12px 8px 12px !important; border-bottom-width: 0 !important; background-color: #f9fafb !important; }      #pcg-cpu-widget-container .pcg-product-row-wrapper:last-child .pcg-comparison-container { border-bottom-width: 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-row-header { display: flex !important; justify-content: space-between !important; align-items: flex-start !important; margin-bottom: 8px !important; }      #pcg-cpu-widget-container .pcg-comparison-model-name { font-size: 13px !important; font-weight: 600 !important; color: #4b5563 !important; text-align: left !important; margin-bottom: 0 !important; padding-right: 8px !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }      #pcg-cpu-widget-container .pcg-comparison-row-content { display: flex !important; align-items: center !important; justify-content: space-between !important; width: 100% !important; gap: 8px !important; }      #pcg-cpu-widget-container .pcg-comparison-row { display: flex !important; flex-direction: column !important; align-items: stretch !important; padding: 8px 0 !important; justify-content: space-between !important; color: inherit !important; text-decoration: none !important; transition: background-color 0.2s ease-in-out !important; }      #pcg-cpu-widget-container .pcg-comparison-row:hover { background-color: #f3f4f6 !important; }      #pcg-cpu-widget-container .pcg-comparison-row:not(:last-child) { border-bottom: 1px solid #e5e7eb !important; }      #pcg-cpu-widget-container .pcg-lowest-price-badge { background-color: #dc2626 !important; color: white !important; padding: 1px 6px !important; font-size: 10px !important; font-weight: 700 !important; display: inline-block !important; border-radius: 0 !important; flex-shrink: 0 !important; position: absolute !important; top: 0 !important; left: 50% !important; transform: translateX(-50%) !important; white-space: nowrap !important; }      #pcg-cpu-widget-container .pcg-comparison-number { display: none !important; font-size: 12px !important; font-weight: 600 !important; color: #4b5563 !important; min-width: 24px !important; height: 24px !important; align-items: center !important; justify-content: center !important; background-color: #e5e7eb !important; border-radius: 4px !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-product-image { display: none !important; width: 60px !important; height: 60px !important; border-radius: 4px !important; object-fit: contain !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-retailer-logo-container { display: flex !important; align-items: center !important; justify-content: center !important; height: 60px !important; width: 120px !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-retailer-logo { max-height: 100% !important; max-width: 100% !important; width: auto !important; height: auto !important; object-fit: contain !important; }      #pcg-cpu-widget-container .pcg-comparison-price-wrapper { position: relative !important; display: flex !important; align-items: center !important; justify-content: center !important; min-height: 60px !important; }      #pcg-cpu-widget-container .pcg-comparison-price { font-size: 14px !important; font-weight: 600 !important; color: #1f2937 !important; white-space: nowrap !important; }      #pcg-cpu-widget-container .pcg-comparison-button { display: inline-flex !important; align-items: center !important; justify-content: center !important; font-weight: 600 !important; border-radius: 6px !important; transition: all 0.2s !important; background-color: #008000 !important; color: #ffffff !important; border: none !important; text-decoration: none !important; font-size: 14px !important; padding: 8px 16px !important; white-space: nowrap !important; width: auto !important; min-width: 80px !important; text-align: center !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-row:hover .pcg-comparison-button { background-color: #006400 !important; } #pcg-cpu-widget-container .pcg-comparison-button:visited { background-color: #006400 !important; }      #pcg-cpu-widget-container .pcg-show-more-container { padding: 12px 0 4px !important; text-align: center !important; border-top: 1px solid #e5e7eb !important; display: flex !important; justify-content: center !important; gap: 16px !important; flex-wrap: wrap !important; }      #pcg-cpu-widget-container .pcg-show-more-button { background-color: transparent !important; border: none !important; color: #dc2626 !important; font-weight: 600 !important; font-size: 14px !important; cursor: pointer !important; padding: 8px !important; display: inline-flex !important; align-items: center !important; gap: 4px !important; }      #pcg-cpu-widget-container .pcg-show-more-button:hover { text-decoration: underline !important; }      #pcg-cpu-widget-container .pcg-chevron { font-size: .8em !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-list-scrollable { max-height: 294px !important; overflow-y: auto !important; position: relative !important; scrollbar-width: thin; scrollbar-color: #dc2626 #f9fafb !important; margin-right: -10px !important; padding-right: 10px !important; } #pcg-cpu-widget-container .pcg-comparison-list-scrollable::-webkit-scrollbar { width: 6px !important; } #pcg-cpu-widget-container .pcg-comparison-list-scrollable::-webkit-scrollbar-track { background: #f9fafb !important; } #pcg-cpu-widget-container .pcg-comparison-list-scrollable::-webkit-scrollbar-thumb { background-color: #dc2626 !important; border-radius: 3px !important; } #pcg-cpu-widget-container .pcg-comparison-list-scrollable::-webkit-scrollbar-thumb:hover { background-color: #b91c1c !important; }      #pcg-cpu-widget-container .pcg-comparison-row-sticky { background-color: #f9fafb !important; }      #pcg-cpu-widget-container .pcg-comparison-loading, #pcg-cpu-widget-container .pcg-no-offers { text-align: center !important; padding: 24px 16px !important; font-size: 14px !important; font-weight: 500 !important; color: #6b7280 !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 8px !important; }      #pcg-cpu-widget-container .pcg-spinner { animation: pcg-rotate 2s linear infinite !important; width: 20px !important; height: 20px !important; }      #pcg-cpu-widget-container .pcg-path { stroke: #dc2626 !important; stroke-linecap: round !important; animation: pcg-dash 1.5s ease-in-out infinite !important; }      #pcg-cpu-widget-container .pcg-live-pill { display: inline-flex !important; align-items: center !important; gap: 6px !important; background-color: #dc2626 !important; color: #ffffff !important; padding: 6px 12px !important; border-radius: 9999px !important; font-size: 14px !important; font-weight: 600 !important; flex-shrink: 0 !important; white-space: nowrap !important; }      #pcg-cpu-widget-container .pcg-live-dot { width: 8px !important; height: 8px !important; background-color: #ffffff !important; border-radius: 50% !important; animation: pcg-live-pulse 1.5s infinite ease-in-out !important; }      @keyframes pcg-rotate { 100% { transform: rotate(360deg); } }      @keyframes pcg-dash { 0% { stroke-dasharray: 1, 150; stroke-dashoffset: 0; } 50% { stroke-dasharray: 90, 150; stroke-dashoffset: -35; } 100% { stroke-dasharray: 90, 150; stroke-dashoffset: -124; } }      @keyframes pcg-live-pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(0.8); opacity: 0.8; } }      @container (min-width: 500px) { #pcg-cpu-widget-container .pcg-price-panel { gap: 4px !important; } #pcg-cpu-widget-container .pcg-product-row { align-items: stretch !important; } #pcg-cpu-widget-container .pcg-product-info { display: flex !important; flex-direction: column !important; justify-content: center !important; } #pcg-cpu-widget-container .pcg-product-image { width: 64px !important; height: 64px !important; } #pcg-cpu-widget-container .pcg-category-badge { font-size: 13px !important; white-space: nowrap !important; } #pcg-cpu-widget-container .pcg-star { width: 14px !important; height: 14px !important; } #pcg-cpu-widget-container .pcg-header-image { width: 46px !important; height: 46px !important; } #pcg-cpu-widget-container .pcg-header-title { font-size: 20px !important; } #pcg-cpu-widget-container .pcg-header-subtitle { font-size: 16px !important; } #pcg-cpu-widget-container .pcg-product-meta { flex-direction: row !important; align-items: center !important; gap: 8px !important; margin-bottom: 8px !important; flex-wrap: nowrap !important; } #pcg-cpu-widget-container .pcg-product-link { font-size: 18px !important; } #pcg-cpu-widget-container .pcg-powered-by-text { font-size: 12px !important; } #pcg-cpu-widget-container .pcg-powered-by-logo { height: 12px !important; } #pcg-cpu-widget-container .pcg-comparison-number { display: flex !important; } #pcg-cpu-widget-container .pcg-comparison-product-image { display: block !important; } #pcg-cpu-widget-container .pcg-compare-link.pcg-compare-link-static { width: 160px !important; } #pcg-cpu-widget-container .pcg-view-button { width: 160px !important; font-size: 14px !important; padding: 8px 16px !important; } #pcg-cpu-widget-container .pcg-compare-link { font-size: 14px !important; padding: 0 !important; } }          </style><script type="importmap">          {            "imports": {              "react-dom/": "https://aistudiocdn.com/react-dom@^19.1.1/",              "react/": "https://aistudiocdn.com/react@^19.1.1/",              "react": "https://aistudiocdn.com/react@^19.1.1"            }          }          </script>          <div id="root">            <div id="pcg-cpu-widget-container" class="pcg-widget-outline">                <svg style="display: none;" aria-hidden="true"><defs><symbol id="pcg-tr-star-full" viewbox="0 0 20 20"><path d="M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z"></path></symbol><symbol id="pcg-tr-star-empty" viewbox="0 0 20 20"><path d="M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z"></path></symbol></defs></svg>                <div class="pcg-widget-container">                    <div class="pcg-header-section"><div class="pcg-header-content"><img src="https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png" alt="PC Gamer Logo" class="pcg-header-image"><div class="pcg-header-text"><h2 id="pcg-current-list-title" class="pcg-header-title">The best PC gaming gear 2025</h2><p class="pcg-header-subtitle">All our current recommendations</p></div></div></div>                                        <div class="pcg-dropdown-controls">                        <div class="pcg-select-wrapper">                            <select class="pcg-select-dropdown" aria-label="Select product category" data-hawkify-clicked-area="filter" data-hawkify-category="PC Gamer category filter" data-hawkify-widget-type="dropdown">                                <option value="">Pick a category</option>                                <option value="Best overall" selected>Best overall</option><option value="Core Components">Core Components</option><option value="Chairs & Desks">Chairs & Desks</option><option value="Systems & Laptops">Systems & Laptops</option><option value="Screens">Screens</option><option value="Peripherals">Peripherals</option><option value="Cases, Cooling & Storage">Cases, Cooling & Storage</option>                            </select>                        </div>                        <div class="pcg-select-wrapper">                            <select class="pcg-select-dropdown" aria-label="Select buying guide" data-hawkify-clicked-area="filter" data-hawkify-category="PC Gamer guide selector" data-hawkify-widget-type="dropdown" disabled>                                <option value="">Choose a list</option>                                <option value="best-pc-gaming-gear-2025" selected>The best PC gaming gear 2025</option>                            </select>                        </div>                    </div>                    <hr class="pcg-separator">                    <div id="pcg-products-container"><div class="pcg-group">                <div class="pcg-product-row-wrapper" data-model-name="Secretlab Titan Evo">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg" alt="Secretlab Titan Evo" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST GAMING CHAIR</span>                                    <div class="pcg-stars" aria-label="5.0 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Btitan%2Bevo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    1. Secretlab Titan Evo                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Btitan%2Bevo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Secretlab Magnus Pro XL">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg" alt="Secretlab Magnus Pro XL" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST GAMING DESK</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-qip9nc7zs"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-qip9nc7zs)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Bmagnus%2Bpro%2Bxl%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    2. Secretlab Magnus Pro XL                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Bmagnus%2Bpro%2Bxl%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="HyperX Cloud Alpha">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg" alt="HyperX Cloud Alpha" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST GAMING HEADSET</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-774in1tav"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-774in1tav)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyperx%2Bcloud%2Balpha%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    3. HyperX Cloud Alpha                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyperx%2Bcloud%2Balpha%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Asus ROG Strix Scope II 96 Wireless">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg" alt="Asus ROG Strix Scope II 96 Wireless" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST GAMING KEYBOARD</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-k6nsjpkgr"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-k6nsjpkgr)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bscope%2Bii%2B96%2Bwireless%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    4. Asus ROG Strix Scope II 96 Wireless                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bscope%2Bii%2B96%2Bwireless%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Razer DeathAdder V3 HyperSpeed">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg" alt="Razer DeathAdder V3 HyperSpeed" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST GAMING MOUSE</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-o48qaf8ho"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-o48qaf8ho)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bdeathadder%2Bv3%2Bhyperspeed%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    5. Razer DeathAdder V3 HyperSpeed                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bdeathadder%2Bv3%2Bhyperspeed%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Xbox Wireless Controller">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg" alt="Xbox Wireless Controller" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST PC CONTROLLER</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-w0uctxtkq"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-w0uctxtkq)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Bwireless%2Bcontroller%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    6. Xbox Wireless Controller                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Bwireless%2Bcontroller%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Logitech G Pro Racing Wheel">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg" alt="Logitech G Pro Racing Wheel" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST STEERING WHEEL</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-8j89oqakn"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-8j89oqakn)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bg%2Bpro%2Bracing%2Bwheel%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    7. Logitech G Pro Racing Wheel                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bg%2Bpro%2Bracing%2Bwheel%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Shure MV6">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg" alt="Shure MV6" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST MICROPHONE</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-tupzjs8e4"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-tupzjs8e4)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dshure%2Bmv6%2Busb%2Bgaming%2Bmicrophone%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    8. Shure MV6                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dshure%2Bmv6%2Busb%2Bgaming%2Bmicrophone%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Elgato Facecam MK.2">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg" alt="Elgato Facecam MK.2" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST WEBCAM</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-jn2uw32jq"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-jn2uw32jq)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Delgato%2Bfacecam%2Bmk.2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    9. Elgato Facecam MK.2                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Delgato%2Bfacecam%2Bmk.2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div></div></div>                    <hr class="pcg-separator">                                <div class="pcg-footer-link ">                Read the full guide: <a href="https://www.pcgamer.com/hardware/this-is-all-the-best-pc-gaming-gear-we-recommend-in-one-techie-tier-list/" target="_blank" rel="noopener noreferrer" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer buying guide" data-hawkify-widget-type="guide-link">The best PC gaming gear 2025</a>            </div>                    <div class="pcg-powered-by"><span class="pcg-powered-by-text">POWERED BY</span><img src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb-200-100.png" alt="PC Gamer Logo" class="pcg-powered-by-logo"></div>                </div>            </div></div>          <script type="module">      import React, { useState, useEffect, useCallback, useRef } from 'react';      import ReactDOM from 'react-dom/client';            // --- Inlined data.ts ---      const allProductLists = [  {    "id": "best-pc-gaming-gear-2025",    "name": "The best PC gaming gear 2025",    "guideUrl": "https://www.pcgamer.com/hardware/this-is-all-the-best-pc-gaming-gear-we-recommend-in-one-techie-tier-list/",    "category": "Best overall",    "products": [      {        "modelName": "Secretlab Titan Evo",        "score": 100,        "category": "BEST GAMING CHAIR",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Btitan%2Bevo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Secretlab Magnus Pro XL",        "score": 90,        "category": "BEST GAMING DESK",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Bmagnus%2Bpro%2Bxl%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "HyperX Cloud Alpha",        "score": 90,        "category": "BEST GAMING HEADSET",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyperx%2Bcloud%2Balpha%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Strix Scope II 96 Wireless",        "score": 90,        "category": "BEST GAMING KEYBOARD",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bscope%2Bii%2B96%2Bwireless%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer DeathAdder V3 HyperSpeed",        "score": 90,        "category": "BEST GAMING MOUSE",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bdeathadder%2Bv3%2Bhyperspeed%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Xbox Wireless Controller",        "score": 90,        "category": "BEST PC CONTROLLER",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Bwireless%2Bcontroller%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech G Pro Racing Wheel",        "score": 90,        "category": "BEST STEERING WHEEL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bg%2Bpro%2Bracing%2Bwheel%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Shure MV6",        "score": 90,        "category": "BEST MICROPHONE",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dshure%2Bmv6%2Busb%2Bgaming%2Bmicrophone%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Elgato Facecam MK.2",        "score": 90,        "category": "BEST WEBCAM",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Delgato%2Bfacecam%2Bmk.2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-cpu-for-gaming-2025",    "name": "Best CPU for gaming 2025",    "guideUrl": "https://www.pcgamer.com/best-cpu-for-gaming/",    "category": "Core Components",    "products": [      {        "modelName": "AMD Ryzen 7 9800X3D",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://images.fie.futurecdn.net/efrb6fzvwvd4jwcd-17308043833633-100-80.jpg.webp",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fdp%2FB0DKFMSMYK%3Ftag%3Dhawk-future-21%26linkCode%3Dogi%26th%3D1%26psc%3D1%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Intel Core i5 13400F",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/41NgKlCJOzL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fdp%2FB0BXH1FTFT%3Ftag%3Dhawk-future-21%26linkCode%3Dogi%26th%3D1%26psc%3D1%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AMD Ryzen 7 9700X",        "score": 100,        "category": "BEST MID-RANGE",        "imageUrl": "https://images.fie.futurecdn.net/juzc6t2ldxs3u4fb-17225908633078-100-80.jpg.webp",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fdp%2FB0D6NMDNNX%3Ftag%3Dhawk-future-21%26linkCode%3Dogi%26th%3D1%26psc%3D1%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AMD Ryzen 9 9950X3D",        "score": 80,        "category": "BEST HIGH-END",        "imageUrl": "https://images.fie.futurecdn.net/ryk5t8z59zcxcdvn-17416887337709-100-80.jpg.webp",        "productUrl": "https://ccl.pxf.io/c/221109/1991091/24481?sharedId=hawk-prefix&subId1=hawk-custom-tracking&prodsku=CPU0943&u=https%3A%2F%2Fwww.cclonline.com%2F100-100000719wof-amd-ryzen-9-9950x3d-16-core-32-thread-am5-cpu-483923%2F&intsrc=CATF_16482"      },      {        "modelName": "AMD Ryzen 7 5700X3D",        "score": 80,        "category": "BEST AM4 UPGRADE",        "imageUrl": "https://m.media-amazon.com/images/I/31Nm8zdEglL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fdp%2FB0CQ4H4H7X%3Ftag%3Dhawk-future-21%26linkCode%3Dogi%26th%3D1%26psc%3D1%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AMD Ryzen 7 8700G",        "score": 90,        "category": "BEST CPU GRAPHICS",        "imageUrl": "https://images.fie.futurecdn.net/l9873tf1jajmus37-1706714580034-100-80.jpg.webp",        "productUrl": "https://ccl.pxf.io/c/221109/1991091/24481?sharedId=hawk-prefix&subId1=hawk-custom-tracking&prodsku=CPU0896&u=https%3A%2F%2Fwww.cclonline.com%2F100-100001236box-amd-ryzen-7-8700g-4-2ghz-octa-core-am5-cpu-437727%2F&intsrc=CATF_16482"      }    ]  },  {    "id": "best-graphics-card-2025",    "name": "Best graphics card 2025",    "guideUrl": "https://www.pcgamer.com/the-best-graphics-cards/",    "category": "Core Components",    "products": [      {        "modelName": "AMD Radeon RX 9070",        "score": 80,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Damd%2Bradeon%2Brx%2B9070%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AMD Radeon RX 9060 XT 16 GB",        "score": 80,        "category": "BEST VALUE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Damd%2Bradeon%2Brx%2B9060%2Bxt%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Intel Arc B570",        "score": 70,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dintel%2Barc%2Bb570%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Nvidia GeForce RTX 5070 Ti",        "score": 90,        "category": "BEST MID-RANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnvidia%2Brtx%2B5070%2Bti%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Nvidia GeForce RTX 5090",        "score": 80,        "category": "BEST HIGH-END",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnvidia%2Brtx%2B5090%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-chair-2025",    "name": "Best gaming chair 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-chairs/",    "category": "Chairs & Desks",    "products": [      {        "modelName": "Secretlab Titan Evo",        "score": 100,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Btitan%2Bevo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Corsair TC100 Relaxed",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcorsair%2Btc100%2Brelaxed%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Herman Miller Embody",        "score": 90,        "category": "BEST LUXURY",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dherman%2Bmiller%2Bembody%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ThunderX3 Core",        "score": 80,        "category": "BEST SUPPORT",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dthunderx3%2Bcore%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AndaSeat Kaiser 4 XL",        "score": 100,        "category": "BEST BIG BOI",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dandaseat%2Bkaiser%2B4%2Bxl%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Neuechair",        "score": 90,        "category": "BEST OFFICE",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dneuechair%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ThunderX3 Flex Pro",        "score": 90,        "category": "BEST BUDGET OFFICE",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dthunderx3%2Bflex%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-laptop-2025",    "name": "Best gaming laptop 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-laptop/",    "category": "Systems & Laptops",    "products": [      {        "modelName": "Razer Blade 16 (2025)",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bblade%2B16%2B2025%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lenovo LOQ 15 Gen 10",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgigabyte%2Bg6x%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer Blade 14 (2025)",        "score": 90,        "category": "BEST 14-INCH",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bblade%2B14%2B2025%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "MSI Vector 16 HX AI A2XWIG",        "score": 80,        "category": "BEST MID-RANGE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bvector%2B16%2Bhx%2Bai%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lenovo Legion Pro 7i (Gen 10)",        "score": 90,        "category": "BEST HIGH-PERFORMANCE",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlenovo%2Blegion%2Bpro%2B7i%2Bgen%2B10%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware 18 Area-51 Gaming Laptop",        "score": 90,        "category": "BEST 18-INCH",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgigabyte%2Baorus%2B17x%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-monitors-2025",    "name": "Best gaming monitors 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-monitor",    "category": "Screens",    "products": [      {        "modelName": "MSI MPG 321URX QD-OLED",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmpg%2B321urx%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "LG Ultragear 27GR93U",        "score": 90,        "category": "BEST 4K",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlg%2Bultragear%2B27gr93u%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Gigabyte M28U",        "score": 90,        "category": "BEST BUDGET 4K",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgigabyte%2Bm28u%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Xiaomi G Pro 27i",        "score": 80,        "category": "BEST 1440P",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxiaomi%2Bg%2Bpro%2B27i%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "KTC H27T22C-3",        "score": 90,        "category": "BEST BUDGET 1440P",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dpixio%2Bpxc277%2Badvanced%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AOC Gaming C27G4ZXE",        "score": 70,        "category": "BEST BUDGET 1080P",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Daoc%2Bgaming%2Bc27g4zxe%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Swift OLED PG34WCDM",        "score": 90,        "category": "BEST ULTRAWIDE",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bswift%2Boled%2Bpg34wcdm%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Odyssey OLED G9",        "score": 90,        "category": "BEST 32:9",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsamsung%2Bodyssey%2Boled%2Bg9%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock Phantom PG34WQ15R2B",        "score": 90,        "category": "BEST BUDGET ULTRAWIDE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bphantom%2Bpg34wq15r2b%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "LG Ultragear 32GS95UE",        "score": 90,        "category": "BEST WOLED",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlg%2Bultragear%2B32gs95ue%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "MSI MPG271QRX",        "score": 90,        "category": "BEST 1440P OLED",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmpg%2B271qrx%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware AW3423DWF",        "score": 100,        "category": "BEST BUDGET OLED ULTRAWIDE",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dalienware%2B34%2Bqd-oled%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware AW2725QF",        "score": 90,        "category": "BEST DUAL-MODE",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dalienware%2Baw2725qf%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-headset-2025",    "name": "Best gaming headset 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-headset",    "category": "Peripherals",    "products": [      {        "modelName": "HyperX Cloud Alpha",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyperx%2Bcloud%2Balpha%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Corsair HS55 Stereo",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcorsair%2Bhs55%2Bstereo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "HyperX Cloud Alpha Wireless",        "score": 90,        "category": "BEST WIRELESS",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyperx%2Bcloud%2Balpha%2Bwireless%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Turtle Beach Stealth 600 Gen 3",        "score": 90,        "category": "BEST MID-RANGE WIRELESS",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dturtle%2Bbeach%2Bstealth%2B600%2Bgen%2B3%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Beyerdynamic MMX 330 Pro",        "score": 90,        "category": "BEST AUDIOPHILE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbeyerdynamic%2Bmmx%2B330%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Audeze Maxwell",        "score": 90,        "category": "BEST WIRELESS AUDIOPHILE",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Daudeze%2Bmaxwell%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Audio-Technica ATH-M50xSTS StreamSet",        "score": 100,        "category": "BEST FOR STREAMING",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Daudio-technica%2Bath-m50xsts%2Bstreamset%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AceZone A-Spire",        "score": 100,        "category": "BEST NOISE-CANCELLING",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dacezone%2Ba-spire%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Steelseries Arctis GameBuds",        "score": 90,        "category": "BEST EARBUDS",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsteelseries%2Barctis%2Bgamebuds%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-pc-2025",    "name": "Best gaming PC 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-pc/",    "category": "Systems & Laptops",    "products": [      {        "modelName": "HP Omen 35L",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhp%2Bomen%2B35l%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lenovo Legion Tower 5i (Gen 8)",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlenovo%2Blegion%2Btower%2B5i%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Velocity Micro Raptor ES40",        "score": 80,        "category": "BEST COMPACT",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dvelocity%2Bmicro%2Braptor%2Bes40%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware Area-51 Gaming Desktop",        "score": 80,        "category": "ALIENWARE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dalienware%2Baurora%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Minisforum AtomMan G7 PT",        "score": 90,        "category": "BEST MINI PC",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dminisforum%2Batomman%2Bg7%2Bpt%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-desk-2025",    "name": "Best gaming desk 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-desk/",    "category": "Chairs & Desks",    "products": [      {        "modelName": "Secretlab Magnus Pro XL",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Bmagnus%2Bpro%2Bxl%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Ikea Utespelare",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dikea%2Butespelare%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Arozzi Arena",        "score": 80,        "category": "BEST MID-RANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darozzi%2Barena%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Flexispot E7L",        "score": 90,        "category": "BEST L-SHAPE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dflexispot%2Be7l%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Flexispot E1",        "score": 90,        "category": "BEST BUDGET MOTORIZED",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dflexispot%2Be1%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Fnatic X Chopvalue Revive Pro",        "score": 90,        "category": "BEST SUSTAINABLE",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dfnatic%2Bchopvalue%2Brevive%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "VariDesk Pro Plus",        "score": 80,        "category": "BEST CONVERTIBLE",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dvaridesk%2Bpro%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-microphone-for-gaming-2025",    "name": "Best microphone for gaming 2025",    "guideUrl": "https://www.pcgamer.com/best-microphone-gaming-streaming/",    "category": "Peripherals",    "products": [      {        "modelName": "Shure MV6",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dshure%2Bmv6%2Busb%2Bgaming%2Bmicrophone%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Amazon Basics USB Condenser Microphone",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Damazon%2Bbasics%2Busb%2Bcondenser%2Bmicrophone%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT Capsule Elite",        "score": 90,        "category": "BEST MID-RANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bcapsule%2Belite%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Sennheiser Profile Streaming Set",        "score": 90,        "category": "BEST USB BUNDLE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsennheiser%2Bprofile%2Bstreaming%2Bset%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "HyperX Quadcast S",        "score": 90,        "category": "BEST LOOKING",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyperx%2Bquadcast%2Bs%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Shure MV7+",        "score": 90,        "category": "BEST PODCASTING",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dshure%2Bmv7%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "SteelSeries Alias Pro",        "score": 100,        "category": "BEST STREAMING",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsteelseries%2Balias%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Audio-Technica ATH-M50xSTS StreamSet",        "score": 100,        "category": "BEST HEADSET MIC",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Daudio-technica%2Bath-m50xsts%2Bstreamset%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-webcam-2025",    "name": "Best webcam 2025",    "guideUrl": "https://www.pcgamer.com/best-webcams/",    "category": "Peripherals",    "products": [      {        "modelName": "Elgato Facecam MK.2",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Delgato%2Bfacecam%2Bmk.2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech C920",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bc920%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Streamplify Cam",        "score": 80,        "category": "BEST FOR STREAMERS",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dstreamplify%2Bcam%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Obsbot Meet 2",        "score": 80,        "category": "BEST 4K",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dobsbot%2Bmeet%2B2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Obsbot Tiny 2 Lite 4K",        "score": 90,        "category": "BEST HIGH-END",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dobsbot%2Btiny%2B2%2Blite%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer Kiyo Pro",        "score": 80,        "category": "BEST LOW LIGHT",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bkiyo%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-pc-controller-2025",    "name": "Best PC controller 2025",    "guideUrl": "https://www.pcgamer.com/best-controller-for-pc-gaming/",    "category": "Peripherals",    "products": [      {        "modelName": "Xbox Wireless Controller",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Bwireless%2Bcontroller%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "GameSir Nova Lite",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgamesir%2Bnova%2Blite%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Xbox Elite Series 2",        "score": 90,        "category": "BEST PREMIUM",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Belite%2Bseries%2B2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Scuf Instinct Pro",        "score": 90,        "category": "BEST CUSTOMIZABLE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dscuf%2Binstinct%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Sony DualSense",        "score": 80,        "category": "BEST HAPTICS",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsony%2Bdualsense%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer Wolverine V3 Pro",        "score": 90,        "category": "BEST HALL EFFECT",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bwolverine%2Bv3%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-handheld-pc-2025",    "name": "Best handheld PC 2025",    "guideUrl": "https://www.pcgamer.com/best-handheld-gaming-pc/",    "category": "Systems & Laptops",    "products": [      {        "modelName": "Lenovo Legion Go S SteamOS",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlenovo%2Blegion%2Bgo%2Bs%2Bsteamos%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Valve Steam Deck",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsteam%2Bdeck%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "MSI Claw 8 AI+",        "score": 90,        "category": "BEST WINDOWS",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bclaw%2B8%2Bai%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lenovo Legion Go",        "score": 80,        "category": "BEST BIG SCREEN",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlenovo%2Blegion%2Bgo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Ayaneo Flip DS",        "score": 90,        "category": "BEST COMPACT",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dayaneo%2Bflip%2Bds%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-mini-pc-2025",    "name": "Best mini PC 2025",    "guideUrl": "https://www.pcgamer.com/hardware/gaming-pcs/best-mini-pcs-for-gaming/",    "category": "Systems & Laptops",    "products": [      {        "modelName": "MinisForum AtomMan G7 PT",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dminisforum%2Batomman%2Bg7%2Bpt%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Minisforum Venus UM790 Pro",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dminisforum%2Bvenus%2Bum790%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG NUC 970",        "score": 90,        "category": "BEST PURE GAMING",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bnuc%2B970%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Geekom AX8 Pro",        "score": 80,        "category": "BEST COMPACT",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgeekom%2Bax8%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Ayaneo Retro Mini AM02",        "score": 80,        "category": "BEST LOOKING",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dayaneo%2Bretro%2Bmini%2Bam02%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Beelink SER9",        "score": 90,        "category": "BEST IGPU",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbeelink%2Bser9%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-oled-gaming-monitor-2025",    "name": "Best OLED gaming monitor 2025",    "guideUrl": "https://www.pcgamer.com/best-oled-gaming-monitor/",    "category": "Screens",    "products": [      {        "modelName": "MSI MPG 321URX QD-OLED",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmpg%2B321urx%2Bqd-oled%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "MSI MPG 271QRX",        "score": 90,        "category": "BEST 1440P",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmpg%2B271qrx%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Swift OLED PG34WCDM",        "score": 90,        "category": "BEST ULTRAWIDE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bswift%2Boled%2Bpg34wcdm%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Odyssey OLED G9",        "score": 90,        "category": "BEST 32:9 RATIO",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsamsung%2Bodyssey%2Boled%2Bg9%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware 34 QD-OLED AW3423DWF",        "score": 100,        "category": "BEST BUDGET ULTRAWIDE",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dalienware%2B34%2Bqd-oled%2Baw3423dwf%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "LG UltraGear 32GS95UE",        "score": 90,        "category": "BEST WOLED",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlg%2Bultragear%2B32gs95ue%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware 27 AW2725Q",        "score": 90,        "category": "BEST 27-INCH",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dalienware%2B27%2Baw2725q%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-keyboard-2025",    "name": "Best gaming keyboard 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-keyboard/",    "category": "Peripherals",    "products": [      {        "modelName": "Asus ROG Strix Scope II 96 Wireless",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bscope%2Bii%2B96%2Bwireless%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Gamakay x Naughshark NS68",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgamakay%2Bnaughshark%2Bns68%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Ducky Zero 6108",        "score": 90,        "category": "BEST MID-RANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dducky%2Bzero%2B6108%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Wooting 80HE",        "score": 80,        "category": "BEST RAPID TRIGGER",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dwooting%2B80he%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Keychron K2 HE",        "score": 90,        "category": "BEST WIRELESS RAPID TRIGGER",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dkeychron%2Bk2%2Bhe%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Be Quiet! Light Mount",        "score": 90,        "category": "BEST SILENT",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbe%2Bquiet%2Blight%2Bmount%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Keychron Q3 Max",        "score": 90,        "category": "BEST TENKEYLESS",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dkeychron%2Bq3%2Bmax%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NuPhy Air60 HE",        "score": 90,        "category": "BEST LOW PROFILE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnuphy%2Bair60%2Bhe%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Kinesis Freestyle Edge RGB",        "score": 90,        "category": "BEST ERGONOMIC",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dkinesis%2Bfreestyle%2Bedge%2Brgb%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Roccat Magma",        "score": 80,        "category": "BEST MEMBRANE",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Droccat%2Bmagma%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-mouse-2025",    "name": "Best gaming mouse 2025",    "guideUrl": "https://www.pcgamer.com/the-best-gaming-mouse/",    "category": "Peripherals",    "products": [      {        "modelName": "Razer DeathAdder V4 Pro",        "score": 90,        "category": "BEST WIRELESS",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bdeathadder%2Bv4%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech G502 X",        "score": 90,        "category": "BEST WIRED",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bg502%2Bx%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech G305 Lightspeed",        "score": 90,        "category": "BEST BUDGET WIRELESS",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bg305%2Blightspeed%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Glorious Model O Eternal",        "score": 90,        "category": "BEST BUDGET WIRED",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dglorious%2Bmodel%2Bo%2Beternal%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Turtle Beach Burst II Air",        "score": 90,        "category": "BEST LIGHTWEIGHT",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dturtle%2Bbeach%2Bburst%2Bii%2Bair%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer Naga Pro",        "score": 90,        "category": "BEST MMO",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bnaga%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer Cobra Pro",        "score": 80,        "category": "BEST COMPACT",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bcobra%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech G Pro",        "score": 90,        "category": "BEST AMBIDEXTROUS",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bg%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Keychron M5",        "score": 90,        "category": "BEST ERGONOMIC",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dkeychron%2Bm5%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-ssd-for-gaming-2025",    "name": "Best SSD for gaming 2025",    "guideUrl": "https://www.pcgamer.com/best-ssd-for-gaming/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "WD Black SN7100 2TB SSD",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dwd%2Bblack%2Bsn7100%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lexar NM790",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlexar%2Bnm790%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "WD_Black SN8100",        "score": 90,        "category": "BEST PCIE 5.0",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dwd%2Bblack%2Bsn8100%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Crucial P510",        "score": 90,        "category": "BEST BUDGET PCIE 5.0",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcrucial%2Bp510%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "TeamGroup MP44 2TB",        "score": 90,        "category": "BEST 4 TB",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dteamgroup%2Bmp44%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Black SN850X 8TB",        "score": 80,        "category": "BEST 8 TB",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dwd%2Bblack%2Bsn850x%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lexar Play (2230) 1TB SSD",        "score": 80,        "category": "BEST M.2 2230",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlexar%2Bplay%2B2230%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Silicon Power XS70 2TB SSD",        "score": 90,        "category": "BEST FOR PS5",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsilicon%2Bpower%2Bxs70%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Crucial MX500 1TB",        "score": 90,        "category": "BEST SATA",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcrucial%2Bmx500%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-pc-fans-2025",    "name": "Best PC fans 2025",    "guideUrl": "https://www.pcgamer.com/best-pc-fans/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "Noctua NF-A12x25 G2",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnoctua%2Bnf-a12x25%2Bg2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Noctua NF-P12 redux-1700",        "score": 70,        "category": "BEST MIDRANGE",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnoctua%2Bnf-p12%2Bredux-1700%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Arctic P12 PWM PST",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darctic%2Bp12%2Bpwm%2Bpst%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Corsair iCUE LINK QX120 RGB",        "score": 80,        "category": "BEST RGB",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcorsair%2Bicue%2Blink%2Bqx120%2Brgb%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT F120 RGB Duo",        "score": 70,        "category": "BEST BUDGET RGB",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bf120%2Brgb%2Bduo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Arctic P12 Pro",        "score": 80,        "category": "BEST FOR RADIATORS",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darctic%2Bp12%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-cpu-coolers-2025",    "name": "Best CPU coolers 2025",    "guideUrl": "https://www.pcgamer.com/best-cpu-coolers/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "Arctic Liquid Freezer III Pro",        "score": 80,        "category": "BEST AIO",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darctic%2Bliquid%2Bfreezer%2Biii%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Cooler Master MasterLiquid Core II",        "score": 80,        "category": "BEST BUDGET AIO",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcooler%2Bmaster%2Bmasterliquid%2Bcore%2Bii%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Be Quiet! Light Loop",        "score": 90,        "category": "BEST HIGH-END AIO",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbe%2Bquiet%2Blight%2Bloop%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT Kraken Elite RGB (2024)",        "score": 80,        "category": "BEST SCREEN",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bkraken%2Belite%2Brgb%2B2024%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Noctua NH-D15 G2",        "score": 90,        "category": "BEST AIR",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnoctua%2Bnh-d15%2Bg2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Arctic Freezer 36",        "score": 80,        "category": "BEST BUDGET AIR",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darctic%2Bfreezer%2B36%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-liquid-coolers-2025",    "name": "Best liquid coolers 2025",    "guideUrl": "https://www.pcgamer.com/best-cpu-coolers/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "Arctic Liquid Freezer III Pro",        "score": 80,        "category": "BEST AIO",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darctic%2Bliquid%2Bfreezer%2Biii%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Cooler Master MasterLiquid Core II",        "score": 80,        "category": "BEST BUDGET AIO",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcooler%2Bmaster%2Bmasterliquid%2Bcore%2Bii%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Be Quiet! Light Loop",        "score": 90,        "category": "BEST HIGH-END AIO",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbe%2Bquiet%2Blight%2Bloop%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT Kraken Elite RGB (2024)",        "score": 80,        "category": "BEST SCREEN",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bkraken%2Belite%2Brgb%2B2024%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Corsair Nautilus RS",        "score": 80,        "category": "BEST STEALTH",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcorsair%2Bnautilus%2Brs%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-external-ssds-2025",    "name": "Best external SSDs 2025",    "guideUrl": "https://www.pcgamer.com/best-external-ssd-for-game-storage/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "Adata SD810",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dadata%2Bsd810%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Crucial X9",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcrucial%2Bx9%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Samsung T9",        "score": 90,        "category": "BEST FOR VIDEO EDITING",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsamsung%2Bt9%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Sandisk Extreme Pro",        "score": 90,        "category": "BEST USB4",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsandisk%2Bextreme%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Seagate Ultra Compact",        "score": 90,        "category": "BEST THUMB DRIVE REPLACEMENT",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dseagate%2Bultra%2Bcompact%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "LaCie Rugged Pro 5",        "score": 90,        "category": "BEST DURABLE DRIVE",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlacie%2Brugged%2Bpro%2B5%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Samsung T7 Shield",        "score": 90,        "category": "BEST BUDGET DURABLE",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsamsung%2Bt7%2Bshield%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "SanDisk Desk Drive",        "score": 90,        "category": "BEST FOR BACKUPS",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsandisk%2Bdesk%2Bdrive%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-pc-cases-2025",    "name": "Best PC cases 2025",    "guideUrl": "https://www.pcgamer.com/best-pc-case/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "Havn HS 420",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhavn%2Bhs%2B420%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Phanteks G400A",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dphanteks%2Bg400a%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Hyte Y40",        "score": 80,        "category": "BEST MIDRANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyte%2By40%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Thermaltake S100 TG Snow Edition",        "score": 80,        "category": "BEST BUDGET COMPACT",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dthermaltake%2Bs100%2Btg%2Bsnow%2Bedition%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT H9 Flow RGB+",        "score": 90,        "category": "BEST HIGH-END",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bh9%2Bflow%2Brgb%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Fractal Design Terra",        "score": 80,        "category": "BEST MINI-ITX",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dfractal%2Bdesign%2Bterra%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT H3 Flow",        "score": 80,        "category": "BEST MICRO-ATX",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bh3%2Bflow%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT H7 Flow",        "score": 80,        "category": "BEST FULL-TOWER",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bh7%2Bflow%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Hyte Y70 Touch Infinite",        "score": 90,        "category": "BEST DUAL-CHAMBER",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyte%2By70%2Btouch%2Binfinite%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lian Li O11 Vision Compact",        "score": 90,        "category": "BEST FISH TANK",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlian%2Bli%2Bo11%2Bvision%2Bcompact%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Phanteks Evolv X2",        "score": 80,        "category": "BEST LOOKING",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dphanteks%2Bevolv%2Bx2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Be Quiet! Shadow Base 800 FX",        "score": 80,        "category": "BEST FOR BEGINNERS",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbe%2Bquiet%2Bshadow%2Bbase%2B800%2Bfx%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-pc-speaker-2025",    "name": "Best PC speaker 2025",    "guideUrl": "https://www.pcgamer.com/best-computer-speakers/",    "category": "Peripherals",    "products": [      {        "modelName": "Mackie CR3.5BT + CR8SBT",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmackie%2Bcr3.5bt%2Bcr8sbt%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Creative Pebble Plus",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcreative%2Bpebble%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech Z407",        "score": 80,        "category": "BEST MIDRANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bz407%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Creative Sound Blaster Katana V2",        "score": 90,        "category": "BEST GAMING SOUNDBAR",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcreative%2Bsound%2Bblaster%2Bkatana%2Bv2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "BlueAnt Soundblade",        "score": 90,        "category": "BEST WIRELESS GAMING SOUNDBAR",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dblueant%2Bsoundblade%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "FiiO SP3 BT",        "score": 90,        "category": "BEST BOOKSHELF SPEAKERS",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dfiio%2Bsp3%2Bbt%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Kanto Ora",        "score": 80,        "category": "BEST REFERENCE SPEAKERS",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dkanto%2Bora%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-capture-cards-2025",    "name": "Best capture cards 2025",    "guideUrl": "https://www.pcgamer.com/best-capture-card-for-pc-gaming/",    "category": "Peripherals",    "products": [      {        "modelName": "AverMedia Live Gamer Ultra S GC553Pro",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Davermedia%2Blive%2Bgamer%2Bultra%2Bs%2Bgc553pro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Elgato Game Capture Neo",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Delgato%2Bgame%2Bcapture%2Bneo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AVerMedia Live Gamer Duo",        "score": 90,        "category": "BEST TWO SOURCE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Davermedia%2Blive%2Bgamer%2Bduo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AVerMedia Live Gamer Ultra 2.1",        "score": 90,        "category": "BEST 4K",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Davermedia%2Blive%2Bgamer%2Bultra%2B2.1%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Elgato 4K60 S+",        "score": 90,        "category": "BEST STANDALONE",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Delgato%2B4k60%2Bs%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AVerMedia Elite Go GC313Pro",        "score": 80,        "category": "BEST FOR HANDHELD GAMING PCS",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Davermedia%2Belite%2Bgo%2Bgc313pro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-motherboard-2025",    "name": "Best gaming motherboard 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-motherboards/",    "category": "Core Components",    "products": [      {        "modelName": "MAG X870E Tomahawk Wifi",        "score": 90,        "category": "BEST AM5",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmag%2Bx870%2Btomahawk%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus TUF Gaming B650-Plus WiFi",        "score": 80,        "category": "BEST BUDGET AM5",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Btuf%2Bgaming%2Bb650-plus%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock B850 Steel Legend WiFi",        "score": 80,        "category": "BEST MIDRANGE AM5",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bb850%2Bsteel%2Blegend%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Strix B550-E Gaming",        "score": 80,        "category": "BEST AM4",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bb550-e%2Bgaming%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Maximus Z890 Hero",        "score": 80,        "category": "BEST LGA1851",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bmaximus%2Bz890%2Bhero%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "B860 Steel Legend Wi-Fi",        "score": 90,        "category": "BEST BUDGET LGA1851 - INTEL CORE ULTRA 200S",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bb860%2Bsteel%2Blegend%2Bwi-fi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "MSI MAG Z790 Tomahawk WiFi",        "score": 90,        "category": "BEST LGA1700",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmag%2Bz790%2Btomahawk%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "B760M PG Sonic WiFi",        "score": 80,        "category": "BEST BUDGET LGA1700",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bb760m%2Bpg%2Bsonic%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-mini-itx-motherboard",    "name": "Best Mini-ITX motherboard",    "guideUrl": "https://www.pcgamer.com/hardware/motherboards/best-mini-itx-motherboards/",    "category": "Core Components",    "products": [      {        "modelName": "Asus ROG Strix X870-I Gaming WiFi",        "score": 80,        "category": "BEST AMD AM5",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bx870-i%2Bgaming%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Gigabyte A620I AX",        "score": 90,        "category": "BEST BUDGET AMD AM5",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgigabyte%2Ba620i%2Bax%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock Phantom B850I Lightning Wi-Fi",        "score": 80,        "category": "BEST MID-RANGE AMD AM5",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bphantom%2Bb850i%2Blightning%2Bwi-fi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock A520M-ITX/ac",        "score": 80,        "category": "BEST BUDGET AM4",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Ba520m-itx%2Fac%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock Phantom Gaming B860I Lightning Wi-Fi",        "score": 80,        "category": "BEST INTEL CORE ULTRA 200S",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bphantom%2Bgaming%2Bb860i%2Blightning%2Bwi-fi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Strix Z790-I Gaming WiFi",        "score": 90,        "category": "BEST INTEL 14TH/13TH GEN",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bz790-i%2Bgaming%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock B760I Lightning WiFi",        "score": 80,        "category": "BEST BUDGET INTEL 14TH/13TH GEN",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bb760i%2Blightning%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-ram-for-gaming-2025",    "name": "Best RAM for gaming 2025",    "guideUrl": "https://www.pcgamer.com/best-ram-for-gaming/",    "category": "Core Components",    "products": [      {        "modelName": "G.Skill Trident Z5 RGB 32 GB DDR5-7200",        "score": 80,        "category": "BEST DDR5 OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dg.skill%2Btrident%2Bz5%2Brgb%2B32gb%2Bddr5-7200%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "TeamGroup T-Force Vulcan DDR5 32GB (2x16GB) 5200MHz",        "score": 80,        "category": "BEST BUDGET DDR5",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dteamgroup%2Bt-force%2Bvulcan%2Bddr5-5200%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "G.Skill Trident Z5 64GB 6400MT/s",        "score": 80,        "category": "BEST HIGH-CAPACITY DDR5",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dg.skill%2Btrident%2Bz5%2B64gb%2Bddr5-6400%2Bcl32%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "TeamGroup T-Force Xtreem ARGB (2x 8GB)",        "score": 90,        "category": "BEST DDR4 OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dteam%2Bxtreem%2B16gb%2Bddr4-3600%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "G.Skill Ripjaws V Series 16GB DDR4-3600 PC4-28800 F4-3600C16D-16GVKC",        "score": 80,        "category": "BEST BUDGET DDR4",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dg.skill%2Bripjaws%2Bv%2B16gb%2Bddr4-3600%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Corsair Dominator Platinum RGB 32GB DDR4-3200MHz",        "score": 90,        "category": "BEST HIGH-CAPACITY DDR4",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcorsair%2Bdominator%2Bplatinum%2Brgb%2B32gb%2Bddr4-3200%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  }];            // --- Inlined components/StarRating.tsx ---      const StarRating = ({ score }) => {        const rating = (score / 100) * 5;        const stars = [];        for (let i = 1; i <= 5; i++) {          const fillAmount = Math.min(1, Math.max(0, rating - (i - 1)));          const clipId = 'pcg-clip-partial-' + i + '-' + Math.random().toString(36).substr(2, 9);          if (fillAmount >= 0.99) {            stars.push(React.createElement('div', { key: i, className: "pcg-star pcg-star-full" }, React.createElement('svg', { className: "pcg-star-svg" }, React.createElement('use', { href: "#pcg-tr-star-full" }))));          } else if (fillAmount > 0.01) {            stars.push(React.createElement('div', { key: i, className: "pcg-star" }, React.createElement('svg', { className: "pcg-star-svg pcg-star-empty" }, React.createElement('use', { href: "#pcg-tr-star-empty" })), React.createElement('div', { className: "pcg-star-partial" }, React.createElement('svg', { className: "pcg-star-svg" }, React.createElement('defs', null, React.createElement('clipPath', { id: clipId }, React.createElement('rect', { x: "0", y: "0", width: (fillAmount * 100) + '%', height: "100%" }))), React.createElement('use', { href: "#pcg-tr-star-full", clipPath: 'url(#' + clipId + ')' })))));          } else {            stars.push(React.createElement('div', { key: i, className: "pcg-star pcg-star-empty" }, React.createElement('svg', { className: "pcg-star-svg" }, React.createElement('use', { href: "#pcg-tr-star-empty" }))));          }        }        return React.createElement('div', { className: "pcg-stars", "aria-label": rating.toFixed(1) + ' out of 5 stars' }, stars);      };      // --- Inlined components/ComparisonList.tsx ---      const ComparisonList = ({ offers, id, productImageUrl, originalModelName, onClose }) => {          const decodeHtmlEntities = (text) => {              if (typeof text !== 'string') return '';              const textArea = document.createElement('textarea');              textArea.innerHTML = text;              return textArea.value;          };                const offerElements = offers.map((offer, index) => {              const modelName = offer.name?.trim() || originalModelName || 'Product';              const isLowest = index === 0;              const rowClassName = 'pcg-comparison-row ' + (isLowest ? 'pcg-comparison-row-sticky' : '');              const linkProps = {                href: offer.productUrl,                target: "_blank",                rel: "noopener noreferrer sponsored",                "data-hawkify-clicked-area": "cta",                "data-hawkify-category": "PC Gamer comparison price button",                "data-hawkify-widget-type": "comparison-buy-now",              };                    const rowHeader = React.createElement('div', { className: 'pcg-comparison-row-header' },                  React.createElement('div', { className: 'pcg-comparison-model-name' }, modelName)              );              const rowContent = React.createElement('div', { className: 'pcg-comparison-row-content' },                  React.createElement('span', { className: "pcg-comparison-number" }, index + 1),                  React.createElement('img', { src: productImageUrl, alt: "", className: "pcg-comparison-product-image", onError: (e) => { e.target.src = 'https://placehold.co/60x60/E2E8F0/4A5568?text=Img'; } }),                  React.createElement('div', { className: "pcg-comparison-retailer-logo-container" },                      offer.logoUrl && React.createElement('img', { src: offer.logoUrl, alt: offer.retailer + ' logo', className: "pcg-retailer-logo", loading: "lazy" })                  ),                  React.createElement('div', { className: 'pcg-comparison-price-wrapper' },                      isLowest && React.createElement('div', { className: 'pcg-lowest-price-badge' }, 'Lowest Price'),                      React.createElement('span', { className: "pcg-comparison-price" }, offer.isPriceVague ? 'Check Price' : decodeHtmlEntities(offer.currencySymbol) + offer.price)                  ),                  React.createElement('a', {...linkProps, className: "pcg-comparison-button"}, 'View')              );                    return React.createElement('div', {                  key: index,                  className: rowClassName,              },                  rowHeader,                  rowContent              );          });                    const chevronUp = React.createElement('svg', { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "currentColor", className: "pcg-chevron", viewBox: "0 0 16 16", "aria-hidden": "true" },             React.createElement('path', { d: "M8 4l6 6H2l6-6z" })          );                const hideButton = React.createElement('div', { className: "pcg-show-more-container" },              React.createElement('button', { onClick: onClose, className: "pcg-show-more-button" }, 'Hide', chevronUp)          );                return React.createElement('div', { id: id, className: "pcg-comparison-container", "aria-label": "Price comparison list" },              React.createElement('div', { className: 'pcg-comparison-list-scrollable' }, offerElements),              hideButton          );      };      // --- Inlined components/ProductRow.tsx ---      const ProductRow = ({ product, index, isExpanded, onToggleCompare }) => {        const decodeHtmlEntities = (text) => {            if (typeof text !== 'string') return '';            const textArea = document.createElement('textarea');            textArea.innerHTML = text;            return textArea.value;        };        const getPriceDisplay = () => {            if (!product.price || product.price === 'Check Amazon') {                return 'Check Amazon';            }            if (product.priceValue !== undefined && product.currencySymbol && product.retailer) {                const formattedPrice = product.priceValue.toLocaleString();                const pricePart = decodeHtmlEntities(product.currencySymbol) + formattedPrice + ' at ';                const retailerPart = product.retailer;                const fullText = pricePart + retailerPart;                const MAX_LENGTH = 22;                if (fullText.length > MAX_LENGTH) {                    const availableLengthForRetailer = MAX_LENGTH - pricePart.length;                    if (availableLengthForRetailer > 3) {                        const truncatedRetailer = retailerPart.substring(0, availableLengthForRetailer - 3) + '...';                        return pricePart + truncatedRetailer;                    } else {                        return decodeHtmlEntities(product.currencySymbol) + formattedPrice;                    }                }                return fullText;            }            return decodeHtmlEntities(product.price);        };                const renderCompareControl = () => {          if (!product.priceCount || product.priceCount < 1) {            return null;          }          if (product.priceCount === 1) {            return React.createElement('span', { className: "pcg-compare-link pcg-compare-link-static" }, React.createElement('strong', null, '1'), ' price found');          }          const chevronDown = React.createElement('svg', { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "currentColor", className: "pcg-chevron", viewBox: "0 0 16 16", "aria-hidden": "true" }, React.createElement('path', { d: "M8 12L2 6h12L8 12z" }));          const chevronUp = React.createElement('svg', { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "currentColor", className: "pcg-chevron", viewBox: "0 0 16 16", "aria-hidden": "true" }, React.createElement('path', { d: "M8 4l6 6H2l6-6z" }));                    return React.createElement('button', {             onClick: () => onToggleCompare(product.modelName),             className: "pcg-compare-link",             "aria-expanded": isExpanded,             "aria-controls": 'comparison-list-' + index          },             React.createElement('span', null,                 React.createElement('strong', null, product.priceCount),                 " prices | ",                 React.createElement('strong', null, isExpanded ? 'Hide' : 'Compare')            ),            isExpanded ? chevronUp : chevronDown          );        };        const canCompare = product.priceCount && product.priceCount > 1;        const productRowContent = React.createElement('div', { className: "pcg-product-row" },             React.createElement('img', { src: product.imageUrl, alt: product.modelName, className: "pcg-product-image", onError: (e) => { e.target.src = 'https://placehold.co/64x64/E2E8F0/4A5568?text=Image'; } }),             React.createElement('div', { className: "pcg-product-content" },                 React.createElement('div', { className: "pcg-product-info" },                     React.createElement('div', { className: "pcg-product-meta" },                         React.createElement('span', { className: "pcg-category-badge" }, product.category),                         React.createElement(StarRating, { score: product.score })                    ),                     React.createElement('a', { href: product.productUrl, target: "_blank", rel: "noopener noreferrer sponsored", className: "pcg-product-link", "data-hawkify-clicked-area": "cta", "data-hawkify-category": "PC Gamer product link", "data-hawkify-widget-type": "product-name" }, (index + 1) + '. ' + product.modelName)                ),                 React.createElement('div', { className: "pcg-price-panel" },                     React.createElement('div', null, React.createElement('a', { href: product.productUrl, target: "_blank", rel: "noopener noreferrer sponsored", className: "pcg-view-button", "data-hawkify-clicked-area": "cta", "data-hawkify-category": "PC Gamer price button", "data-hawkify-widget-type": "buy-now" }, getPriceDisplay())),                     product.price !== 'Check Amazon' && renderCompareControl()                )            )        );        const comparisonContent = canCompare && (          product.allOffers && product.allOffers.length > 0 ?            React.createElement(ComparisonList, { offers: product.allOffers, id: 'comparison-list-' + index, productImageUrl: product.imageUrl, originalModelName: product.modelName, onClose: () => onToggleCompare(product.modelName) }) :            React.createElement('div', { className: "pcg-comparison-container", id: 'comparison-list-' + index },                React.createElement('div', { className: "pcg-no-offers" }, 'No other offers found.')            )        );        return React.createElement('div', { className: 'pcg-product-row-wrapper ' + (isExpanded ? 'pcg-expanded' : '') },          productRowContent,          comparisonContent        );      };      // --- Inlined App.tsx (core logic only) ---      const App = () => {        const [productLists] = useState(allProductLists);        const configuredDefaultListId = 'best-pc-gaming-gear-2025';        const defaultList = productLists.find(l => l.id === configuredDefaultListId) || productLists[0];        const [selectedListId, setSelectedListId] = useState(defaultList.id);        const [activeCategory, setActiveCategory] = useState(defaultList.category);        const [processedProducts, setProcessedProducts] = useState([]);        const [isLoading, setIsLoading] = useState(true);        const [productDataCache, setProductDataCache] = useState({});        const [expandedProduct, setExpandedProduct] = useState(null);        const widgetContainerRef = useRef(null);                const currentList = productLists.find(list => list.id === selectedListId) || defaultList;                const categories = [...new Set(productLists.map(p => p.category))];        const filteredLists = productLists.filter(list => list.category === activeCategory);        const showGuideLinkAtTop = false;        const showLivePill = false;        const handleToggleCompare = useCallback((modelName) => {            const isOpening = expandedProduct !== modelName;            setExpandedProduct(isOpening ? modelName : null);        }, [expandedProduct]);                const handleCategoryChange = (newCategory) => {            setActiveCategory(newCategory);            const firstListInNewCategory = productLists.find(list => list.category === newCategory);            setSelectedListId(firstListInNewCategory?.id || '');        };                const handleListChange = (newListId) => {            if (newListId) {              const list = productLists.find(l => l.id === newListId);              if (list) {                setSelectedListId(list.id);                if (list.category !== activeCategory) {                  setActiveCategory(list.category);                }              }            } else {              setSelectedListId(defaultList.id);              setActiveCategory(defaultList.category);            }        };        useEffect(() => {          if (!currentList) return;          const listId = currentList.id;          if (productDataCache[listId]) {            setProcessedProducts(productDataCache[listId]);            setIsLoading(false);          } else {            setIsLoading(true);            const fetchAndCachePrices = async () => {              const productsToFetch = currentList.products;              const currencySymbolMap = { '£': 'GBP', '$': 'USD', '€': 'EUR', '¥': 'JPY' };              const updatedProducts = await Promise.all(                productsToFetch.map(async (product) => {                  try {                    const encodedModelName = encodeURIComponent(product.modelName);                    const apiUrl = 'https://hawky.pcgamer.com/widget.php?model_name=' + encodedModelName + '&article_type=deals_compare&article_category=retail&language=en-US&site=PCG&all_filters=false&exclude_unlabelled=false&include_specs=false&offset=0&distinct_networks=0&multi=1&keep_duplicities=1&filter_product_types=deals%2Ccontracts%2Csubscriptions%2Cbroadband%2Csimilar&rows=50&device=mobile&origin=widgets-clientside&only_fallback_offers=false&progressive_filtering=1';                    const response = await fetch(apiUrl);                    if (!response.ok) throw new Error('HTTP error! status: ' + response.status);                    const data = await response.json();                    const offers = data?.widget?.data?.offers;                    const modelInfoData = data?.widget?.data?.model_info;                    let allOffers = [];                    if (offers && offers.length > 0) {                      const allOffersUnsorted = offers.map((offer) => {                          const offerPrice = parseFloat(offer.offer.price);                          const isOfferAmazonSearch = offer.offer.link && offer.offer.link.includes('amazon.com/s?');                          const isOfferZeroPrice = offer.offer.price === "0.00";                          let name = offer.offer.display_name || offer.offer.name || '';                          if (offer.bundle_models && offer.bundle_models.length > 0) {                              const bundledItems = offer.bundle_models.map(b => b.model_name).join(' + ');                              if (name && bundledItems && !name.toLowerCase().includes(bundledItems.toLowerCase())) { name = name + ' + ' + bundledItems; }                          }                          return { price: Math.round(offerPrice).toLocaleString(), currencySymbol: offer.offer.currency_symbol || '$', retailer: offer.merchant?.name || 'retailer', productUrl: offer.offer.link || '#', isPriceVague: isOfferAmazonSearch || isOfferZeroPrice, logoUrl: offer.merchant?.logo_url, model: offer.model, name: name, priceValue: (isOfferAmazonSearch || isOfferZeroPrice) ? Infinity : offerPrice };                      });                      const allOffersSorted = allOffersUnsorted.sort((a, b) => a.priceValue - b.priceValue);                      const seen = new Set();                      const finalOffers = [];                      for (const offer of allOffersSorted) {                          const key = offer.retailer + '-' + offer.price;                          if (!seen.has(key)) {                              const { priceValue, ...rest } = offer;                              finalOffers.push(rest);                              seen.add(key);                          }                      }                      allOffers = finalOffers;                                          const bestOffer = offers[0];                      const modelId = bestOffer.model_id;                      const allPossibleImages = [];                      if (modelInfoData?.[modelId]?.model_image_url) { allPossibleImages.push(modelInfoData[modelId].model_image_url); }                      offers.forEach(o => { if (o.image) allPossibleImages.push(o.image); if (o.model_image) allPossibleImages.push(o.model_image); });                      const uniqueImages = [...new Set(allPossibleImages.filter(img => typeof img === 'string'))];                      let bestImage = product.imageUrl;                      if (uniqueImages.length > 0) { const pngs = uniqueImages.filter(img => img.toLowerCase().includes('.png')); bestImage = pngs.length > 0 ? pngs[0] : uniqueImages[0]; }                      const price = Math.round(parseFloat(bestOffer.offer.price));                      const formattedPrice = price.toLocaleString();                      const currencySymbol = bestOffer.offer.currency_symbol || '$';                      const merchantName = bestOffer.merchant?.name || 'retailer';                      const productLink = bestOffer.offer.link;                      const isAmazonSearch = productLink && productLink.includes('amazon.com/s?');                      const isZeroPrice = bestOffer.offer.price === "0.00";                      const priceText = (isAmazonSearch || isZeroPrice) ? 'Check Amazon' : currencySymbol + formattedPrice + ' at ' + merchantName;                      const priceCount = (isZeroPrice || isAmazonSearch) ? 0 : (data?.widget?.data?.counts?.deals || 0);                      return { ...product, imageUrl: bestImage, price: priceText, productUrl: productLink || product.productUrl, compareUrl: 'https://www.pcgamer.com/deals/compare/?model_name=' + encodedModelName, priceCount: priceCount, priceValue: price, currencyCode: currencySymbolMap[currencySymbol] || 'USD', allOffers: allOffers, retailer: merchantName, currencySymbol: currencySymbol };                    }                  } catch (error) { console.error('Error fetching price for ' + product.modelName + ':', error); }                  return { ...product, price: 'Check Amazon', compareUrl: 'https://www.pcgamer.com/deals/compare/?model_name=' + encodeURIComponent(product.modelName), allOffers: [] };                })              );              setProductDataCache(prevCache => ({ ...prevCache, [listId]: updatedProducts }));              setProcessedProducts(updatedProducts);              setIsLoading(false);            };            fetchAndCachePrices();          }        }, [currentList, productDataCache]);        useEffect(() => {          if (isLoading || processedProducts.length === 0) return;          const schema = { '@context': 'https://schema.org', '@type': 'ItemList', 'name': currentList.name, 'url': currentList.guideUrl, 'itemListElement': processedProducts.map((product, index) => ({ '@type': 'ListItem', 'position': index + 1, 'item': { '@type': 'Product', 'name': product.modelName, 'image': product.imageUrl, 'url': product.productUrl, ...(product.priceValue && product.currencyCode && { 'offers': { '@type': 'Offer', 'price': product.priceValue, 'priceCurrency': product.currencyCode, 'availability': 'https://schema.org/InStock', 'url': product.productUrl } }), 'aggregateRating': { '@type': 'AggregateRating', 'ratingValue': (product.score / 100 * 5).toFixed(1), 'bestRating': '5', 'ratingCount': '1' } } })) };          let scriptTag = document.getElementById('pcg-widget-json-ld');          if (!scriptTag) { scriptTag = document.createElement('script'); scriptTag.id = 'pcg-widget-json-ld'; scriptTag.type = 'application/ld+json'; document.head.appendChild(scriptTag); }          scriptTag.textContent = JSON.stringify(schema);          const widgetContainer = widgetContainerRef.current;          if (widgetContainer) {             document.dispatchEvent(new CustomEvent("processArticle", { detail: { element: widgetContainer } }));           }        }, [processedProducts, isLoading, currentList]);        if (!currentList) return React.createElement('div', { className: "p-5 text-center text-red-500" }, "No product list found.");        const themeClassName = "standard" !== 'standard' ? 'theme-' + "standard" : '';        const outlineClassName = true ? 'pcg-widget-outline' : '';        const finalClassName = [themeClassName, outlineClassName].filter(Boolean).join(' ');        const guideLinkElement = React.createElement('div', { className: 'pcg-footer-link ' + (showGuideLinkAtTop ? 'pcg-footer-link-top' : '') }, "Read the full guide:", " ", React.createElement('a', { href: currentList.guideUrl, target: "_blank", rel: "noopener noreferrer", "data-hawkify-clicked-area": "cta", "data-hawkify-category": "PC Gamer buying guide", "data-hawkify-widget-type": "guide-link" }, currentList.name));        return React.createElement('div', { id: "pcg-cpu-widget-container", className: finalClassName, ref: widgetContainerRef },          React.createElement('svg', { style: { display: 'none' }, "aria-hidden": "true" }, React.createElement('defs', null, React.createElement('symbol', { id: "pcg-tr-star-full", viewBox: "0 0 20 20" }, React.createElement('path', { d: "M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z" })), React.createElement('symbol', { id: "pcg-tr-star-empty", viewBox: "0 0 20 20" }, React.createElement('path', { d: "M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z" })))),          React.createElement('div', { className: "pcg-widget-container" },            React.createElement('div', { className: "pcg-header-section" }, React.createElement('div', { className: "pcg-header-content" }, React.createElement('img', { src: "https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png", alt: "PC Gamer Logo", className: "pcg-header-image" }), React.createElement('div', { className: "pcg-header-text" }, React.createElement('h2', { id: "pcg-current-list-title", className: "pcg-header-title" }, currentList.name), React.createElement('p', { className: "pcg-header-subtitle" }, "All our current recommendations"))), showLivePill && React.createElement('div', { className: "pcg-live-pill" }, React.createElement('span', { className: "pcg-live-dot" }), React.createElement('span', null, "Live"))),            showGuideLinkAtTop && guideLinkElement,            React.createElement('div', { className: "pcg-dropdown-controls" },               React.createElement('div', { className: 'pcg-select-wrapper' },                React.createElement('select', { className: "pcg-select-dropdown", value: activeCategory, onChange: (e) => handleCategoryChange(e.target.value), "aria-label": "Select product category", "data-hawkify-clicked-area": "filter", "data-hawkify-category": "PC Gamer category filter", "data-hawkify-widget-type": "dropdown" },                   React.createElement('option', { value: "" }, "Pick a category"),                  categories.map(category => React.createElement('option', { key: category, value: category }, category))                )              ),              React.createElement('div', { className: 'pcg-select-wrapper' },                React.createElement('select', { className: "pcg-select-dropdown", value: selectedListId, onChange: (e) => handleListChange(e.target.value), "aria-label": "Select buying guide", "data-hawkify-clicked-area": "filter", "data-hawkify-category": "PC Gamer guide selector", "data-hawkify-widget-type": "dropdown", disabled: filteredLists.length <= 1 },                    React.createElement('option', { value: "" }, "Choose a list"),                   filteredLists.map(list => React.createElement('option', { key: list.id, value: list.id }, list.name))                )              )            ),            React.createElement('hr', { className: "pcg-separator" }),            React.createElement('div', { id: "pcg-products-container" }, isLoading ? React.createElement('div', { className: "pcg-loading" }, "Loading recommendations...") : React.createElement('div', { className: "pcg-group" }, processedProducts.map((product, index) => React.createElement(ProductRow, { product: product, index: index, key: product.modelName + '-' + index, isExpanded: expandedProduct === product.modelName, onToggleCompare: handleToggleCompare })))),            React.createElement('hr', { className: "pcg-separator" }),            !showGuideLinkAtTop && guideLinkElement,            React.createElement('div', { className: "pcg-powered-by" }, React.createElement('span', { className: "pcg-powered-by-text" }, "POWERED BY"), React.createElement('img', { src: "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb-200-100.png", alt: "PC Gamer Logo", className: "pcg-powered-by-logo" }))          )        );      };      // --- Inlined index.tsx ---      const rootElement = document.getElementById('root');      if (!rootElement) {        throw new Error("Could not find root element to mount to");      }      const root = ReactDOM.createRoot(rootElement);      root.render(React.createElement(React.StrictMode, null, React.createElement(App, null)));      // --- Iframe Resizing Script ---      const sendHeight = () => {        // We add a small buffer to prevent scrollbars from appearing due to sub-pixel rendering        const height = document.documentElement.scrollHeight + 5;        window.parent.postMessage({ type: 'pcg-widget-resize', height: height }, '*');      };            const observer = new ResizeObserver(() => {        // Defer the execution to the next frame to avoid ResizeObserver loop errors.        window.requestAnimationFrame(sendHeight);      });      observer.observe(document.body);            window.addEventListener('load', () => {          setTimeout(sendHeight, 200);      });            document.getElementById('root').addEventListener('click', () => {        setTimeout(sendHeight, 450);      });    </script>      </div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Victrix Pro BFG Reloaded review ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/victrix-pro-bfg-reloaded-review/</link>
                                                                            <description>
                            <![CDATA[ A boon for fight pad lovers, but not a controller for the mainstream. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">NobwmgxJUWpkrLFPmkrnxL</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/w5YASeamdYp7YnYfoUvq-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 05 Nov 2025 10:33:51 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/VHK6WWHuYbRyFX3dSXbr3G.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/w5YASeamdYp7YnYfoUvq-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Victrix Pro BFG Reloaded sitting in its carrying case on a wooden table]]></media:description>                                                            <media:text><![CDATA[The Victrix Pro BFG Reloaded sitting in its carrying case on a wooden table]]></media:text>
                                <media:title type="plain"><![CDATA[The Victrix Pro BFG Reloaded sitting in its carrying case on a wooden table]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/w5YASeamdYp7YnYfoUvq-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>In early 2024, Turtle Beach bought gamepad and peripherals company PDP for $118 million. Just before that happened, PDP released the Victrix Pro BFG. It was a pro gamepad with some neat customization features: The left stick and the D-Pad, and the right stick and the face buttons, both lived on modules which could be removed and reversed to toggle between symmetrical and asymmetrical analog stick layouts. A fightpad module was included too, so you could swap out either the left or right modules for some tactile six-button action.</p><p>I'm describing this older model in such detail because this newer <a href="https://www.turtlebeach.com/products/victrix-pro-bfg-reloaded-wireless-controller" target="_blank">Victrix Pro BFG Reloaded</a> (now labelled 'by Turtle Beach') is functionally identical to that older <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">PC controller</a>. There are some minor changes once you scratch the surface, but before I get to those, let's re-iterate what carries forward. </p><p>Like its predecessor, the Victrix Pro Reloaded has the nowadays essential "pro" features, including four programmable paddle buttons, trigger stops on the L2 / R2 switches, and Hall effect analog sticks. Three d-pad variations are included, which accommodate both Xbox and Switch Pro variations, as well as a hybrid of both, and these can be popped in and out on the fly. There's even swappable octagonal housing for the analog sticks, lest you want a more toothy eight-directional feel.</p><p>Removing the modules with the included precision screwdriver and swapping them around is dead easy, though you'll need to be careful not to lose the tiny screws. Like its predecessor, the Victrix Pro Reloaded also includes two analog stick replacements. One of these is a simple 5mm replacement for the standard stick height, but there's also a 12mm stick that could possibly simulate a fight pad joystick, or else gratify the niche who love higher sticks for more accurate first-person aiming. Swapping them is as simple as unscrewing the module housing and then popping the sticks off with a little bit of force.</p><div  class="fancy-box"><div class="fancy_box-title">Pro BFG Reloaded specs</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9jmt5W3tckB6YnZgabSV2g" name="Victrix Pro BFG Reloaded" caption="" alt="Victrix Pro BFG Reloaded on a wooden table" src="https://cdn.mos.cms.futurecdn.net/9jmt5W3tckB6YnZgabSV2g.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text"><strong>Compatibility: </strong>Windows 10 and 11, Xbox, Android<br><strong>Connectivity: </strong>2.4 GHz wireless, Bluetooth, wired<br><strong>Ports:</strong> USB-C, 3.5 mm stereo headset jack<br><strong>Thumbstick layout: </strong>Modular, both asymmetric and symmetric<br><strong>Weight:</strong> 265g<br><strong>Dimensions: </strong>120x165x50 mm<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://www.turtlebeach.com/products/victrix-pro-bfg-reloaded-wireless-controller" target="_blank">$210</a> | <a data-analytics-id="inline-link" href="https://uk.turtlebeach.com/products/victrix-pro-bfg-reloaded-wireless-controller" target="_blank"><em>£</em>180</a> | <a data-analytics-id="inline-link" href="https://au.turtlebeach.com/products/victrix-pro-bfg-reloaded-wireless-controller" target="_blank">AU$309</a></p></div></div><p>So what's different? The first is specific to the model I'm using: the Xbox Pro BFG Reloaded lacks the PlayStation trackpad, though if you want one there's a new Sony-centric model <em>and</em> a PC Edition with a trackpad also included (the latter was announced shortly after I received the present sample). These might be ideal if the Steam Deck has alerted you to the conveniences of a gamepad trackpad. The biggest difference shared across both models is that the Victrix Pro Reloaded has rumble support, whereas the older models did not, but unfortunately there's no gyro support. </p><p>The same imperfections are here, too. The trigger stop toggles lie exactly where most users will rest their middle fingers, which is probably by design, but it's far too easy to accidentally adjust the trigger depth during Heated Gaming Moments. Likewise, the paddle buttons cannot be toggled off or frozen, which can lead to erroneous inputs, and I found the left trigger a little over-sensitive. I also really wish the face buttons were more tactile and clicky. Your attitude may vary, but I think a pro controller needs better face buttons if they're to truly feel better than Sony and Xbox's stock offerings.</p><div  class="fancy-box"><div class="fancy_box-title">BFG Reloaded PC Edition</div><div class="fancy_box_body"><p class="fancy-box__body-text">Announced last week, the Victrix Pro BFG Reloaded - PC Edition is cheaper than the model under review at $189.99 / £159.99. While its polling rate is significantly higher at 1 kHz, it also lacks the fight pad module. That said, it's still a modular controller, only the fight pad needs to be purchased separately for $24.99 / £16.99.</p></div></div><p>The other issue worth noting is that the polling rate here is the standard 125 Hz, which is the same as the Xbox controller, but far beneath what modern "pro" gamepads are capable of offering. Even the new Victrix Pro Reloaded PC edition has a polling rate of 1000 Hz, not to mention the much cheaper <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro</a>. For most players this decrease in latency won't make any noticeable difference, but for people who are or consider themselves to be "pro", it could be a deal breaker. And honestly, only people who consider themselves pro are likely to get much out of this controller.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/9jmt5W3tckB6YnZgabSV2g.jpg" alt="Victrix Pro BFG Reloaded on a wooden table" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/yoZjUJfQSzVv6FeXb5LXZK.jpg" alt="Victrix Pro BFG Reloaded on a wooden table" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/jRVhEebuxMYcQyCVpB3XkX.jpg" alt="Victrix Pro BFG Reloaded on a wooden table" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/coFsLzZ7t3JdqiogkcJG6d.jpg" alt="Victrix Pro BFG Reloaded close-up showing a 12mm analog stick" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FKH84bn5oZHJvrfv36oMMj.jpg" alt="The rear of the Victrix Pro BFG Reloaded, showing its paddle buttons and trigger stop switches" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rZdQzXVZ8o8gptn5xHJ783.jpg" alt="A close up of the right trigger and bumper on the Victrix Pro BFG Reloaded" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YcmHqbeKJX5EYqMiq6gvs7.jpg" alt="A close up of the fightpad module on the Victrix Pro BFG Reloaded" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/X6Q5nKJ5PzXZTtNNsvcQ2D.jpg" alt="Victrix Pro BFG Reloaded in its included carrying case" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Connectivity is what you'd expect nowadays: there's a 2.4 GHz wireless dongle, Bluetooth connectivity, and an impressively long (3 metres) and robust USB-A to USB-C cord included. All the modular parts, as well as the screwdriver, the cord and the gamepad itself, come in a solid carrying case. Battery life is advertised at 20 hours, which checks out with what I experienced.</p><div  class="fancy-box"><div class="fancy_box-title">Buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text">✅ <strong>You want a pro gamepad that's also a fight pad:</strong> This gamepad has modules that can be interchanged, transforming a regular 'ol controller into a portable fight pad.<br><br>✅ <strong>You want to be able to swap between asymmetric and symmetric stick layout: </strong>It's one of the few controllers that make this easy.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text">❌<strong> You don't want the fight pad functionality: </strong>Without its hero feature, the Victrix Pro BFG Reloaded lacks the lustre of the competition.</p></div></div><p>If you need a gamepad that will morph into a serviceable fight pad, I think the Victrix Pro BFG pulls that function off more serviceably than some of the competition, chiefly the <a href="https://www.pcgamer.com/hardware/controllers/turtle-beach-stealth-pivot-review/" target="_blank">Turtle Beach Stealth Pivot</a>. Whereas the Stealth Pivot swaps between two configurations, there's quite a lot more flexibility with the Pro BFG, though you'll be paying more for that privilege. </p><p>And it's really the price where the Victrix Pro BFG kinda falls behind. During a time when great TMR-equipped pro gamepads can be had for less than $100, splashy and expensive devices need to work very hard for their bread money. Whereas two years ago it might have been easy to recommend the Victrix Pro BFG Reloaded to just about anyone after a pro controller, nowadays you really need to want, nay need, that modular design to make it worth the outlay. Though if you're a PS5 gamer you don't have a heap of alternatives; in that context this model might shine.</p><p>But PC gamers have a mind-boggling array of options. If you need fight pad functionality on your pro controller, this is better than the competition. For anyone outside that niche, there are better and cheaper gamepads on the market.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Razer Raiju V3 Pro review ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/razer-raiju-v3-pro-review/</link>
                                                                            <description>
                            <![CDATA[ PlayStation stylings coming at a premium. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">rQ8uhNQYFLwVZWwhaozRY4</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/GwrxAaZxjxZ2HCifPmyEXP-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Thu, 23 Oct 2025 16:42:18 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/Md68GDXhupcXtwAacuPKrd.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/GwrxAaZxjxZ2HCifPmyEXP-1280-80.png">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Razer Raiju V3 Pro wireless controller seen from various angles.]]></media:description>                                                            <media:text><![CDATA[The Razer Raiju V3 Pro wireless controller seen from various angles.]]></media:text>
                                <media:title type="plain"><![CDATA[The Razer Raiju V3 Pro wireless controller seen from various angles.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/GwrxAaZxjxZ2HCifPmyEXP-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Razer has been on a tear. Not satisfied with being our top pick for <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-high-end-controller" target="_blank">the best high-end controller</a> once, they've only gone and done it again with the <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro 8K</a>. But if you're not a fan of this pad's Xbox-style asymmetric sticks and button glyphs, Razer has another 'don't worry, I've got you' offering.</p><p>Enter the <a href="https://www.pcgamer.com/hardware/controllers/razer-is-finally-giving-a-playstation-style-controller-the-full-competitive-treatment-and-its-called-the-raiju-v3-pro/" target="_blank">Raiju V3 Pro</a>, another wireless controller pitched towards the Esports scene but instead featuring symmetrical TMR sticks and PlayStation stylings. All for $220, which is $20 more than the latest iteration of the Wolverine. Sorry, <em>what</em>?</p><p>The TMR sticks contribute in part to that steep premium. For those unaware, the Hall effect is one magnetic tech that effectively banishes stick drift, and TMR (or tunnelling magnetoresistance) is another.</p><p>The difference is that the way TMR leverages its electromagnetic sensors allows the controller's sticks to pick up really minute movements, making for a level of precision above even what the Hall effect can offer. Oh, and on the Raiju V3 Pro, you can swap in a long, long thumbstick topper for even more precise movement if that's your jam (though I'm not sure it's mine).</p><div  class="fancy-box"><div class="fancy_box-title">Razer Raiju V3 Pro tech specs</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Lgw43mAi97THwt3A48PetN" name="Razer Raiju V3 Pro" caption="" alt="The Razer Raiju V3 Pro wireless controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/Lgw43mAi97THwt3A48PetN.png" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text"><strong>Compatibility:</strong> Windows, PS5<br><strong>Connectivity:</strong> USB-C, 2.4 GHz<br><strong>Ports:</strong> USB-C, 3.5 mm audio jack<br><strong>Thumbsticks:</strong> TMR<br><strong>Thumbstick layout:</strong> Symmetrical (PlayStation-style)<br><strong>Polling rate:</strong> Up to 2,000 Hz (PC), 250 Hz (PS5)<br><strong>Weight:</strong> 260 g<br><strong>Price:</strong> $220/£200</p></div></div><p>The pad's triggers and bumpers are also tuned in the name of Pro-level precision. The shoulder bumpers already serve mouse-click quickness, but the triggers can be toggled between a similarly responsive clicky mode or a more typical, fuller range of movement via corresponding flicky switches on the gamepad's underside. On top of that, you can dive into Razer's Synapse software and fine-tune the triggers' actuation point to suit you.</p><p>Alongside the typical PlayStation R1/L1 shoulder buttons and R2/L2 triggers, you also get the bonus M1/M2 clickers a little further in. These are the most pronounced of the Raiju V3 Pro's six remappable buttons.</p><p>As my first exposure to remappable back buttons was the <a href="https://www.playstation.com/en-gb/accessories/dualsense-edge-wireless-controller/" target="_blank">DualSense Edge</a>, I couldn't help but wrinkle my nose at the raised paddle shape of M buttons 3 through to 6 on first brush; on the Edge, I'm always misclicking the floating back paddles, and the alternate back button toppers that jut out even more aren't really much better in my uncoordinated grip. </p><p>However, the angle of the Raiju V3 Pro's buttons and their placement make way more sense for my grabby little hands. The shape of the M3 to M6 buttons reminds me a bit of helicopter seeds, flicking up at the outer edge end to better cradle your fingertips. It's possible to register a click at the inner part of these remappable buttons, but it's far more comfortable to click at the more raised end.</p><p>It's a small bit of smart design that felt like it genuinely reduced the number of times I misclicked one of the back buttons. Still, when clumsiness does inevitably get the better of me, it's good to know I can also disable the Raiju V3 Pro's back buttons not just via the Synapse software but also on a hardware level, too.</p><p>Yes, it's finally time to talk about what that itty bitty bespoke screwdriver in the box is all about. As a hardware writer, I already have more tiny tools than I know what to do with, but at least here you can slot Razer's screwdriver into a designated cubby within the included carry case. As to why you might want to take this tiny tool on the road with you, let me explain.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/d7EemxFsftSnTzuPtdKB4P.png" alt="The Razer Raiju V3 Pro wireless controller seen from various angles." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2PYxE6jtegUrKjQoUUb4KN.png" alt="The Razer Raiju V3 Pro wireless controller seen from various angles." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>On top of the M3, M4, M5 and M6 back buttons is a wee silicone shield. Pry this up (which is easier said than done with short nails), and a teeny tiny screw will be exposed. Unscrew this with the included screwdriver, and you can replace the raised back buttons with one of the included 'blanking slates' to smooth out the underside of your controller, should you so wish. If you'd rather not remove the back buttons, you can alternatively just press 'disable' in the Synapse software—troublesome misclicks begone!</p><p>As you might expect, there's actually a lot more besides the back buttons you can noodle with in Synapse. Let's talk about the TMR thumbsticks again: via Synapse, you can really finely tune your sticks' dead zones, as well as toggle on a setting that prevents doubling up on dead zones introduced at a software level in-game.</p><p>You can also toggle a setting that either keeps your directional movements pronounced or smoothes them out. Last but certainly not least, you can also set up a DPI-reducing sensitivity clutch for more precise aiming, say, down the sights of a sniper rifle. All of this can then be calibrated across four different on-board profiles.</p><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="YvqUZVm6gNH6tB4UwCE8TN" name="Razer Raiju V3 Pro" alt="The Razer Raiju V3 Pro wireless controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/YvqUZVm6gNH6tB4UwCE8TN.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Make no mistake, the Razer Raiju V3 Pro is an impressively customisable controller. But I'm still fairly certain that even with this snazzy bit of kit in hand, any opposing Azucena player in <a href="https://www.pcgamer.com/tekken-8-review/" target="_blank">Tekken 8</a> is still going to kick my arse.</p><p>My own skill issues aside, it's worth also mentioning that the Raiju V3 Pro offers an up to 2,000 Hz polling rate (which is only available on PC because the PS5's standard polling rate caps out at 250 Hz). I say 'up to' because, yes, you can fiddle with this in Synapse too; under 'wired polling rate,' you can choose between 250 Hz, 500 Hz, 1,000 Hz, and 2,000 Hz options.</p><p>Now, lest owners of the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-deathadder-v3-hyperspeed-review/" target="_blank">Razer Deathadder V3 Hyperspeed mouse</a> with its 8,000 Hz polling rate think they'd be getting shortchanged by this controller, let me be clear: an 8,000 Hz polling rate is frankly ridiculous—and I say this as someone who uses the Razer Deathadder V3 Hyperspeed every day.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/aMpJwgSYxJRkRjTcMB3pdN.png" alt="The Razer Raiju V3 Pro wireless controller seen from various angles." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WKWLdULbhbfk35kuvHC3AN.png" alt="The Razer Raiju V3 Pro wireless controller seen from various angles." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>A 2,000 Hz polling rate on a controller, combined with everything else you can minutely customise in the name of precision on the Raiju V3 Pro, is more than enough. Those playing at a competitive level are unlikely to find a 2,000 Hz polling rate wanting, and those who just want to, say, mash devils in <a href="https://www.pcgamer.com/games/rpg/raidou-remastered-the-mystery-of-the-soulless-army-review/" target="_blank">Raidou Remastered: The Mystery of the Soulless Army</a>, will be similarly satisfied.</p><p>But enough about what you can fiddle with—let's unplug this bad boy and actually talk about how it feels in the hands. Just for a start, I definitely like this more than <a href="https://direct.playstation.com/en-us/buy-accessories/dualsense-edge-wireless-controller?smcid=pdc:gb-en:web-pdc-accessories-dualsense-edge-wireless-controller:buttonblock-buy-now&clickref=1110lwFfnCC&emcid=ot-ps-456950" target="_blank">the similarly priced DualSense Edge</a>—though that's arguably a low bar to clear</p><p>The Razer Raiju V3 Pro is a surprisingly lightweight bit of kit, while also offering fairly robust build quality. I appreciate the included carry case, but I'm also not fretting that this controller will get chewed up in a bag without it.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="R5NkwnNnEpzugmNpXe5H5N" name="Razer Raiju V3 Pro" alt="The Razer Raiju V3 Pro wireless controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/R5NkwnNnEpzugmNpXe5H5N.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I also appreciate the symmetrical TMR sticks and the PlayStation button glyphs. The floating D-Pad and face buttons are fairly clicky on the Raiju V3 Pro, though there's some tactile resistance to each of my button presses I'm not really loving. As with the shoulder bumpers and M buttons, it's more of a mouse click.</p><p>That's great for demanding play that requires lightning-fast reactions, but I don't think it's really my cup of tea. After all, I'm not lining up play of the game headshots on the regular, I'm just over here trying to fill out my devil chart in Raidou Remastered.</p><p>Personally, I prefer how the face buttons feel on the similarly priced wireless version of the <a href="https://www.pcgamer.com/hardware/game-pads/scuf-valor-pro-review/" target="_blank">Scuf Valor Pro</a> and even the far, <em>far </em>cheaper <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">GameSir Nova Lite</a>. What can I say? I just like my face buttons to offer a little more THOK. Sure, there's no accounting for taste, but if you're also not a fan of mouse-style clicks on a controller, then the Raiju V3 Pro may not be for you.</p><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="ZaRmvsrGpRVwqekW6tYE6P" name="Razer Raiju V3 Pro" alt="The Razer Raiju V3 Pro wireless controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/ZaRmvsrGpRVwqekW6tYE6P.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>On the subject of controller comparisons, the Valor Pro is a heavier bit of kit than the Razer Raiju V3 Pro, but I prefer the heftier, more ergonomic handles on the Scuf. Both controllers feature textured non-slip grips too, but in two different flavours: If you're after a subtle, totally unobtrusive texture under your palms and forefingers, the Raiju V3 Pro has got you covered; If you like a rugged, almost tractor tyre track vibe mostly localised to your palms, then you'll love the Valor Pro.</p><div  class="fancy-box"><div class="fancy_box-title">buy if…</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>✅ You want a deeply customisable pro controller:</strong> Though this works great out of the box, there are lots of settings to noodle with in the Razer Synapse software. You can also entirely remove four of the six remappable back buttons—neat!<br><br><strong>✅ You want a pro controller you can use on both your PC plus your PS5:</strong> The Razer Raiju V3 Pro can be used on either your rig or Sony console—just don't forget to flick the switch on the controller's underside before you connect.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">don't buy if…</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>❌ You have a strict budget:</strong> Even our favourite high-end controller, the Razer Wolverine V3 Pro 8K PC, is cheaper than this.</p></div></div><p>Scuf's Pro controller also comes with removable back buttons and blanking slates too, though the process of removing them requires more scrabbling around with just your nails—unfortunately, there's no bespoke screwdriver to be found there. Otherwise, the wireless Scuf Pro Valor is another sturdy controller pitched towards competitive play <a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-wireless-steel-gray?utm_source=Skimbit%20Ltd._10078&utm_medium=affiliates&utm_campaign=1897353_Online%20Tracking%20Link_&utm_content=scuf&clickid=QaKx3bWfjxycTh7zFWyZ4WU4UkpU0cUcC18%3Axw0&utm_coupon=&irgwc=1" target="_blank">for $30 less</a> than the Razer Raiju V3 Pro. Scuf also offers interchangeable faceplates and more colourways besides just black and white.</p><p>Mind you, if you're already in the market for a pricey pro controller and you're not fussed about the Raiju's specifically PlayStation layout, there's always the previously mentioned Razer Wolverine V3 Pro 8K PC. Featuring Xbox-style asymmetric sticks and face button glyphs, you're also getting a ridiculous 8,000Hz polling rate—but<a href="https://www.razer.com/gaming-controllers/razer-wolverine-v3-pro-8k-pc/RZ06-05540100-R3U1?irclickid=2sf2atRLDxycUPNUl8VA22RPUkpU0ZzUC18:xw0&irgwc=1&utm_source=Future%20PLC.&utm_medium=affiliate&utm_content=221109&utm_term=Future%20PLC.&utm_sharedid=pcg-gb&cid=Future%20PLC.-affiliate" target="_blank"> for $20 less</a> than the Raiju V3 Pro.</p><p>As a filthy console convert myself, I do think it's a bit of a shame that a pro controller with PlayStation-stylings doesn't feature in our <a href="https://www.pcgamer.com/best-controller-for-pc-gaming" target="_blank">best PC controller</a> guide—but the Razer Raiju V3 Pro isn't going to change that. I just keep coming back to that $220 price tag. As nice as it is that I can use this controller on both my PC and my PS5, most of my Steam games default to Xbox-style button glyphs within the UI.</p><p>Again, this probably speaks more to my far-from-toned muscle memory, but this disconnect between what I'm seeing in-game and what's on my controller adds more of a delay to punishing my opponents than I'd like. Alas, trounced by an Azucena player <em>again</em>.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Scuf Valor Pro review ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/scuf-valor-pro-review/</link>
                                                                            <description>
                            <![CDATA[ When Scuf design meets Razer pricing. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">4L7J8j3bhNHfuaSsQ4C9WX</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/baY5oTU8rfV2RJ4hbe8H88-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Wed, 22 Oct 2025 10:01:38 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/Md68GDXhupcXtwAacuPKrd.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/baY5oTU8rfV2RJ4hbe8H88-1280-80.png">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Scuf Valor Pro wireless controller seen from various angles.]]></media:description>                                                            <media:text><![CDATA[The Scuf Valor Pro wireless controller seen from various angles.]]></media:text>
                                <media:title type="plain"><![CDATA[The Scuf Valor Pro wireless controller seen from various angles.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/baY5oTU8rfV2RJ4hbe8H88-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The wireless version of the Scuf Valor Pro is finally here, offering everything we loved about the wired version, just minus the wire and all of its tangle potential. That means I'm gonna award this a high score, and we can all go home early, right? Unfortunately, even without a wire, the Scuf Valor Pro controller still gets in its own way.</p><p>Don't misunderstand, everything our Jacob loved in his <a href="https://www.pcgamer.com/hardware/controllers/scuf-valor-pro-review/" target="_blank">wired Scuf Valor Pro review</a> is here too—just at a much higher price point. Whereas the wired version of this controller will <a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-smoke?utm_source=Skimbit%20Ltd._10078&utm_medium=affiliates&utm_campaign=1897353_Online%20Tracking%20Link_&utm_content=scuf&clickid=QaKx3bWfjxycTh7zFWyZ4WU4UkpyZ3XcC18%3Axw0&utm_coupon=&irgwc=1" target="_blank">set you back $100</a>, this wireless update is <a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-wireless-steel-gray" target="_blank">asking just shy of $190</a>. Offering 'Tri-mode connectivity' for your PC, Xbox, and Bluetooth devices, it's not just the wireless functionality pushing the price uncomfortably close to 200 big ones, but new asymmetric TMR thumbsticks too.</p><p>Utilising magnetism like the Hall effect, TMR (tunnelling magnetoresistance) also offers the same longevity and effective banishment of stick drift. However, TMR is far more sensitive than the Hall effect, with the electromagnetic sensors able to pick up far slighter stick movements for an even greater level of precision—so, <em>that's </em>what you're paying a premium for.</p><p>However, unless you're a picky pro player, I'd argue Hall effect sticks will still suit most. Even so, as Jacob notes in his <a href="https://www.pcgamer.com/hardware/controllers/scuf-valor-pro-review/" target="_blank">wired Scuf Valor Pro review</a>, outside of some very specific genre examples like fighting games, the tippy top of esports still has a demonstrable preference for keyboard and mouse controls. So, who is the Scuf Valor Pro wireless controller <em>for</em>? Arguably, a filthy console convert like me.</p><div  class="fancy-box"><div class="fancy_box-title">Scuf Valor Pro wireless specs</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="E2vossDMETWg3UJGUt5K78" name="Scuf Valor Pro wireless controller" caption="" alt="The Scuf Valor Pro wireless controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/E2vossDMETWg3UJGUt5K78.png" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text"><strong>Compatibility:</strong> Xbox, Windows, Android<br><strong>Connectivity: </strong>USB-C, 2.4 GHz, Bluetooth<br><strong>Ports: </strong>USB-C, 3.5 mm audio jack<br><strong>Thumbsticks:</strong> TMR<br><strong>Thumbstick layout: </strong>Asymmetric (Xbox-style)<br><strong>Weight: </strong>260 g<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-wireless-steel-gray" target="_blank">$190</a>/ <a data-analytics-id="inline-link" href="https://www.scufgaming.com/uk/en/p/scuf-valor-pro-wireless-steel-gray-eu" target="_blank">£180</a></p></div></div><p>In fact, I may like this even more than the <a href="https://www.playstation.com/en-gb/accessories/dualsense-edge-wireless-controller/" target="_blank">DualSense Edge</a>. Sony's similarly customisable pro effort also doesn't justify its shocking asking price, not even offering Hall effect sticks in this here year of our gourd, 2025. It also gave me a perhaps unearned dislike of remappable back buttons. On the Edge, I feel all thumbs with the default floating paddle shape of its back buttons. You can swap these out for a design that juts out, only serving to make me feel even more uncoordinated.</p><p>Oh, and the rubberised palm grips on my Edge have gone all bubbly too. Maybe my sweaty mitts harbour a uniquely corrosive quality, but the palm grips are already coming unstuck from the controller body after only a couple of years of heavy use. Add to that how I seem to always be needing to charge the blooming thing, and <a href="https://direct.playstation.com/en-us/buy-accessories/dualsense-edge-wireless-controller?smcid=pdc:gb-en:web-pdc-accessories-dualsense-edge-wireless-controller:buttonblock-buy-now" target="_blank">how's that for nearly $200</a>? For that kind of money, you can get slightly less detailed haptics plus Hall effect sticks <em>and </em>triggers in the <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-review/" target="_blank">Razer Wolverine V3 Pro</a>.</p><p>So, how does Scuf's effort stack up against that point of comparison? Feeling a bit heavier than the Edge, the Valor Pro doesn't just deftly trick my brain into going 'Oo, premium,' it also has the good sense to back it up with quality construction and ergonomic design.</p><p>Just for starters, the rubber palm grips are ruggedly textured to ensure this controller won't slip out of even the sweatiest of mitts. The contour of this controller leading from these grips and into the main controller body feels flush too, making me fairly confident these textured palm wrests aren't going to make a break for it any time soon.</p><p>And for another, the wireless Valor Pro's battery life alone puts it head and shoulders above the DualSense Edge. The 2.5 GHz mode served me well through a weekend of devil summoning and playing detective in <a href="https://www.pcgamer.com/games/rpg/raidou-remastered-the-mystery-of-the-soulless-army-review/" target="_blank">Raidou Remastered: The Mystery of the Soulless Army</a> straight out of the box.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/o8bhky3ZjwG96rdZaCB3B8.png" alt="The Scuf Valor Pro wireless controller seen from various angles." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/idaudyNvSXmoJSfwLExaA8.png" alt="The Scuf Valor Pro wireless controller seen from various angles." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The Scuf Valor Pro also enjoys the same ergonomic silhouette that saw its predecessor slot in so neatly as our top pick for <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">the best wired controller</a>. Besides hefty hand grips making this an exceptionally comfortable controller to hold through hours of play, the angle of approach into the Valor Pro's back buttons makes way more sense for my grabby little raccoon hands.</p><p>Not only do you have two elegant little flippers to hook your middle fingers around, but you also have two additional clicky buttons nearby. My review unit came with lightly textured button covers featuring an angular, raised profile. I enjoyed the tactility of these slightly pointy buttons, especially as they're pronounced enough to easily find without also resulting in constant misclicks. But, as I fidget through long play sessions, the same cannot be said for the nearby side-paddles.</p><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="DnUeJY5FfhmNfCBQqkPR98" name="Scuf Valor Pro wireless controller" alt="The Scuf Valor Pro wireless controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/DnUeJY5FfhmNfCBQqkPR98.png" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/DnUeJY5FfhmNfCBQqkPR98.png' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Thankfully, it's easy enough to remap these—I may be constantly misclicking, but I might as well map it to something useful. You can't create bespoke button layouts, but rather 'mirror' existing inputs across three different button layout profiles. So, rather than accidentally skipping through important dialogue in Raidou Remastered: The Mystery of the Soulless Army, I can set that right underside paddle to bring up the log to ensure there's nothing I've missed instead (devil summoning is serious business, after all).</p><p>It's really easy to either plug your controller in and do this via the very basic <a href="https://apps.microsoft.com/detail/9n6xj7k1k9jn?hl=en-US&gl=GB" target="_blank">companion app</a>, or adjust it via the controller alone (it's also super simple to <a href="https://www.youtube.com/watch?v=oTUHCvEZ6EU&t=29s" target="_blank">disable the bonus backside paddles</a> and <a href="https://www.youtube.com/watch?v=tj66OdSW2To&t=20s" target="_blank">replace the pointy underside buttons with the inert blanking plates</a> included in the box). Unlike with the <a href="https://www.pcgamer.com/hardware/controllers/scuf-envision-pro-review/" target="_blank">Scuf Envision Pro</a> at launch, there's no annoying iCue software integration here, and the Valor Pro works great right out of the box. That said, though not required for setup, its respective companion app is mercifully streamlined and straightforward to use.</p><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="cnJncWnkSUJTifGKfL6y78" name="Scuf Valor Pro wireless controller" alt="The Scuf Valor Pro wireless controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/cnJncWnkSUJTifGKfL6y78.png" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/cnJncWnkSUJTifGKfL6y78.png' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Both the standard buttons and the back paddles are pleasingly clicky, though I'm particularly taken with the shoulder bumpers and triggers. For one thing, the triggers offer two levels of resistance you can flick between via a couple of corresponding switches on the controller's underside. For another, the bumpers have an elongated design that drapes over the controller's outermost corners, ensuring they're always in reach for smaller hands—stubby digit squad, represent!</p><p>Speaking of features that feel kind to your hands, my <a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-wireless-steel-gray" target="_blank">Steel Gray Valor Pro</a> review unit features an almost velvet-y finish, rather than the chilly plastic veneer of the Edge. This does show up finger smears like nobody's business, though thankfully, your palms will cover the worst of your greasy sins.</p><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="hQSDma7GS7erXjUT2PZPVE" name="Scuf Valor Pro wireless on blue 8 - face off (1)" alt="The Scuf Valor Pro wireless controller seen with the magnetic faceplate removed and laid beside it." src="https://cdn.mos.cms.futurecdn.net/hQSDma7GS7erXjUT2PZPVE.png" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/hQSDma7GS7erXjUT2PZPVE.png' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>But on the subject of faceplates, the Valor Pro's can be swapped out for something a little more colourful, as with Scuf's other controllers (but the sold separately Valor Pro specific faceplates weren't yet live on Scuf's website at the time of writing). As it's held in place magnetically, popping off the faceplate is a doddle, and also allows you to noodle around with the long, long, analogue stick that Jacob was so taken with in his review (though I'm less convinced it has much application in devil summoning <em>or </em>slaying).</p><p>Customisability is a major selling point for Scuf's controllers, and I'm impressed by how sturdy this bit of kit feels while also offering a number of composite parts that are easy to switch out.</p><p><a href="https://www.scufgaming.com/us/en/configurator/p/505-178-05-015-000/valor-pro-builder?options=505-718-01-001-000,505-178-05-001-000,505-247-01-050-000,505-104-01-001-000,505-104-01-001-000,505-560-01-001-000,505-560-01-001-000,505-716-01-001-000,505-786-01-001-000,505-403-01-001-000,505-178-05-015-999&step=Faceplate" target="_blank">Scuf also offers lots of options for styling your own Valor Pro</a> from the ground up. You can pick from some intense single colourway faceplates in black, orange, red, blue, and green, or you can go for a number of obnoxious patterns. Even more egregious, those patterned designs cost $10 more, with creator collaboration faceplates adding $20 on top of what is already a pretty pricey wireless controller. Sometimes a garish bit of kit is fun, and sometimes I enjoy the option of a slightly more tasteful pastel—is that so wrong?</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/5tzZtBguFbvGt53nQmaJ78.png" alt="The Scuf Valor Pro wireless controller seen from various angles." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TcUHuZXxN6rXAzi8szh598.png" alt="The Scuf Valor Pro wireless controller seen from various angles." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FHnJGkggE7s7CsjgkVjT78.png" alt="The Scuf Valor Pro wireless controller seen from various angles." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Anyway, matters of taste aside, let's return to the subject of pricing. Without snazzy styling, you're still paying almost $200 for this wireless controller. For as much as I like the Scuf Valor Pro wireless controller, that seems ludicrous to me—especially as that touted Tri-mode connectivity isn't as far ranging as I'd like.</p><p>While my PC can detect the Valor Pro over Bluetooth and even connect, I found my inputs wouldn't register—even after I double checked the controller's firmware was up to date via the companion app. I didn't have this issue if I connected the controller to my ageing Samsung Galaxy A52s, though. It turns out the controller's Bluetooth mode isn't technically intended for desktop use. <a href="https://customercare.scufgaming.com/hc/en-us/articles/32817286660753-How-to-Connect-to-Xbox-and-PC-with-Valor-Pro" target="_blank">To quote the company's own help pages</a>, "SCUF recommends users to use a wired or low-latency wireless connection when playing on PC. Additionally, SCUF recommends using a Bluetooth connection when using your controller with mobile devices."</p><div  class="fancy-box"><div class="fancy_box-title">Buy if…</div><div class="fancy_box_body"><p class="fancy-box__body-text">✅ <strong>Comfort matters to you: </strong>The handles here are hefty but feel great in your palm. Add to that ruggedly textured non-slip grips, and the Valor Pro will comfortably see you through many hours of gaming.<br><br>✅ <strong>You're big on customisation:</strong> It's easy peasy to set up mirrored button inputs and swap out the magnetic faceplates. It takes a bit more welly to pop off the thumbstick toppers and back buttons, but it's no less neat.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if…</div><div class="fancy_box_body"><p class="fancy-box__body-text">❌ <strong>You really want a Bluetooth PC controller (for some reason):</strong> Though great on your phone, your PC may not even register the Valor Pro inputs over Bluetooth. Plugging in the 2.4 GHz dongle is the way to go for wireless gaming here.<br><br>❌ <strong>You're on a tight budget: </strong>This wireless controller costs almost $200 even before you get lost in the weeds of snazzy faceplates or Scuf's smorgasbord of customisation options.</p></div></div><p>While I like the Valor Pro's 2.4 GHz mode, I would've also enjoyed the opportunity to reclaim one of my PC's USB ports from yet another dongle. To be fair to Scuf, Bluetooth is hardly the most ideal connection for a wireless controller anyway, as this tends to come with the baggage of much higher latency compared to 2.4 GHz mode—neither the previously mentioned Razer Wolverine V3 Pro nor our latest top pick for the best high-end controller, the <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro 8K PC</a>, even offers a Bluetooth mode.</p><p>With all of that in mind, it makes sense for Scuf to deprioritise the Valor Pro's Bluetooth connection on PC. However, as I'm personally not deep into any kind of competitive scene, I am disappointed that there isn't a better Bluetooth mode for a bit of empty-headed devil mashing.</p><p>Before this funky, chunky pad waltzed across my desk, my go-to PC controller was the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">GameSir Nova Lite</a>. Costing only $25 on a bad day, it still offers Hall effect sticks and remains our budget champion for more good reasons besides. That said, there's no ignoring its cheap and cheerful construction. Besides how cheap it feels in the hand, it also doesn't even feature a 3.5 mm jack, and, for one other cost-cutting thing, its nine-hour battery life also leaves much to be desired.</p><p>The Valor Pro is a treat to have and to hold. Indeed, Scuf may yet put out a faceplate I just <em>have </em>to have, but if it were my money on the table, I'd still be happy enough with GameSir's budget Hall effect controller…now, if only <em>that </em>came in other colours besides white and a 'dark purple' that's giving 'navy' rather than 'grape'.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ CRKD Neo S review ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/crkd-neo-s-review/</link>
                                                                            <description>
                            <![CDATA[ Looks a little square but is actually one of the coolest dudes you know. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">J5KnDovdL8KdLwQxoQHY9n</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/gSHcV2yi7ymQBBFnAerb5j-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 21 Jan 2025 17:11:25 +0000</pubDate>                                                                                                                                <updated>Tue, 04 Nov 2025 13:28:31 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Hope Corrigan ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/8GHv7ZUGwf8bhinBRgQGjb.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/gSHcV2yi7ymQBBFnAerb5j-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Classic Clear CRKD NEO S rectangular controller sits on a desk between one black keyboard and one grey keyboard. The controller takes up much of the frame, but is clearly much smaller than both of the keyboards. The controller body is made of cloudy, clear plastic, allowing the viewer to see the internals.]]></media:description>                                                            <media:text><![CDATA[A Classic Clear CRKD NEO S rectangular controller sits on a desk between one black keyboard and one grey keyboard. The controller takes up much of the frame, but is clearly much smaller than both of the keyboards. The controller body is made of cloudy, clear plastic, allowing the viewer to see the internals.]]></media:text>
                                <media:title type="plain"><![CDATA[A Classic Clear CRKD NEO S rectangular controller sits on a desk between one black keyboard and one grey keyboard. The controller takes up much of the frame, but is clearly much smaller than both of the keyboards. The controller body is made of cloudy, clear plastic, allowing the viewer to see the internals.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/gSHcV2yi7ymQBBFnAerb5j-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Controllers are better than mice and keyboard for gaming [Editor's note: <em>nope</em>]. A keebmouse set-up is definitely going to get you the better kill death score yet controllers are more comfortable, accessible, intuitive, flexible, and fun. As you can see, I have my funeral plot all picked out atop this contrary PC gaming take hill, that puts the joy of experience above my score, and am more than willing to die there. The Neo S controller from CRKD really seems to get this mentality, offering a great gaming companion far beyond what its looks and dollar tag suggest.</p><p>Quality and comfort are paramount to controller choice. These aren’t things I expected of the Neo S based on initial impressions garnered from its awkwardly boxy looking form. </p><p>This large rectangle looks about as comfortable as a dad delivering ‘the talk’ far too late while sitting on a pineapple, wearing wet socks. In reality, this deceptive daddy is surprisingly cool with everything. What I mean is, CRKD's Neo S is super, and surprisingly, comfortable. I’ve gamed for hours on this thing and haven’t had so much as a hand twinge.</p><p>It’ll also pair with basically anything willing, and quickly change between them as necessary. Once set up, I can easily swap the Bluetooth connection from Switch to iPad to Android phone by holding different buttons on the D-pad when connecting. What's really surprising is how responsive the connection is.</p><div  class="fancy-box"><div class="fancy_box-title"></div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2L9r2acFcJbQKq6F9nhYiT" name="CRKD NEO S weight spec" caption="" alt="A Classic Clear edition of the CRKD NEO S rectangular controller sits on a small kitchen scale. The digital read out on the scale reveals the tiny controller weighs only 192 grams. The body of the controller is made of a cloudy clear plastic allowing the viewer to see the internals." src="https://cdn.mos.cms.futurecdn.net/2L9r2acFcJbQKq6F9nhYiT.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text"><strong>Weight:</strong> 192 g<br><strong>Connectivity: </strong>Bluetooth 5.0, USB Type-C, Aux<br><strong>Features: </strong>Hall effect sticks with deadzone options, motion controls, remappable buttons including back triggers, customisable rumble and trigger actuation depth<br><strong>Battery: </strong>Internal rechargeable 750 mAh<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://www.amazon.com/CRKD-NEO-Wireless-Collectible-Controller-Nintendo/dp/B0CVYBGYBB" target="_blank">$50 | £50 | $91 AUD</a></p></div></div><p>In this house we've been hammering some Teenage Mutant Ninja Turtles: Splintered Fate—aka TMNT flavoured Hades with couch coop—so out of curiosity we did some controller swapping. None of us noticed much difference between the CRKD's connection and that of the Xbox controllers on their specialised dongle. We did the same test with some Serious Sam silliness and were all just as happy to play on the Neo S for both connection and comfort. This led me to getting in some Doom eternal—changing between the Neo S and Xbox and not really feeling like either performed better.</p><p>At only 192 grams, according to two of my kitchen scales, it’s quite nifty to have while travelling and the Bluetooth connection holds really well as long as the device is within a few metres, with no latency issues so far. The internal battery lasts an age and it sports a USB Type-C port for charging as well as a wired connection (you better believe it can even do both at once) so I don’t have to bring any extra lengths of wire for my journey. </p><p>With enjoyment being key in gaming, customisation to personal satisfaction is a huge boon. This CRKD brick once again surprises in being one of the more flexible controllers in this regard. Software isn't required as everything can be altered via button combinations on the controller itself, if you can remember them. It's possible to adjust the rumble motor side and strength, trigger sensitivity, stick dead zones, configuring turbo mode, and full button remapping, including turning off the back triggers.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/2phpBTdh9HyndmXGCLQtKZ.jpg" alt="A Classic clear edition of the CRKD NEO S rectangular controller sits on a desk, beside a ruler. The ruler shows that that the compact controller is about 14.5 centimetres in width. The ruler is made out of clear plastic, while the body of the controller is made out of a cloudy clear plastic that allows the viewer to see the internals." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/dvKcptpsqKLMHrEtbBvLmF.jpg" alt="A Classic Clear edition of the CRKD NEO S rectangular controller sits on a desk, with a DualSense PS5 controller and a Xbox controller vaguely visible behind it. The perspective of the image is quite dramatic, with the CRKD controller dominating the frame, but one still gets a sense of how much smaller it is compared to the other two controllers. The body of the controller is made of a cloudy clear plastic that allows the viewer to see the internals." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ZiUBjwDhTTAE6iF9UUZtnY.jpg" alt="A Classic Clear edition of the CRKD NEO S rectangular controller sits on a wooden countertop next to a Dualsense PS5 controller, and an Xbox controller. The CRKD controller is about half the size of the other two gamepads. The body of the CRKD controller is made from a cloudy clear plastic that allows the viewer to see the internals." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/NeyLbRt9pxBBKB6exFXkJB.jpg" alt="A Classic Clear edition of the CRKD NEO S rectangular controller sits upon a wooden countertop, placed beside a Nintendo Switch game console with docked Joycon controllers. The CRKD controller is half the size of the Nintendo Switch's screen, but not as small or as light weight as the Joycons. The body of the CRKD controller is made out of a cloudy clear plastic that allows the viewer to see the internals." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SA7xVbtGXbWqc3xcDFxQdZ.jpg" alt="A Classic Clear edition of the CRKD NEO S rectangular controller. It is placed upon a wooden countertop in such a manner that the underside of the controller is facing up, towards the viewer. The body of the controller is made out of a cloudy clear plastic that allows the viewer to see the internals." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/e75yd7QTN5gif5xyqQRswG.jpg" alt="A close up of a Classic Clear edition of the CRKD NEO S rectangular controller. The frame focusses primarily on the right thumbstick and the face buttons. Alongside other fixtures and fittings in black, the colourful face buttons stand out: the leftmost 'Y' button is yellow, the topmost 'X' button is green, the rightmost 'A' button is blue, and the bottommost 'B' button is red. This design flourish is also notable as the main body of the controller is made out of a grey-ish cloudy clear plastic that allows the viewer to see the controller's internals." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Thankfully, the mobile app is available and gives a straightforward alternative method to change most of these, complete with visuals. I just wish it gave options to save different configs to profiles or even connections. Having it automatically load up my Zelda config when paired to the Switch and Hades when on PC, for example, would be next level. Still this is a lot of functionality and quality for a controller that’s only $90 AUD.</p><div  class="fancy-box"><div class="fancy_box-title">Buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text">✅ <strong>You're after a travel companion:</strong> The deceptively comfortable brick design makes this an easy controller to bag and go, and it's very light. Plus, it can be remapped on the fly, pairs with everything and swaps between them easily.<br><br></p><p class="fancy-box__body-text">✅ <strong>You're a functions fan:</strong> It's not that common for a controller to feel this good, be affordable, and let you remap the entire thing.<br><br></p><p class="fancy-box__body-text">✅ <strong>You're a collector: </strong>Between number rarities, app registration, and retro style featuring a range of different designs these are made with collectors in mind. You can even grab matching docks and wall mounts for them to display.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text">❌ <strong>You want a pro controller:</strong> The CRKD Neo S feels damned good for a sub $100 unit but you'll need to drop the big bux on something shinier or if you want pro options, like stick swapping or reactive triggers.</p></div></div><p>The app can also pair, register and even check the rarity of the controller which is assigned by an arbitrary number, if you’re into that sort of thing. There’s a manual section that links to the downloadable PDF. It’s refreshingly full of useful, clear instructions for pairing, plus all those button combinations for app free customisation. Unfortunately for me flying from Australia to Europe, a download link rather than in app file (even after downloading it) is somewhat less helpful when you’re on a plane with no net trying to figure this stuff out.</p><p>All these wonderful modern implementations almost feel concealed by the retro styling of the CRKD Neo S. It’s a controller I’d easily assume was going for form over function with not only its shape but its livery. It comes in an array of pretty cool looking shell designs that range from painted cherry blossoms to retro styled casings. I’m rocking the clear transparent for the joy of seeing the tech under the hood. While undeniably styling, it gives off a Cheeto dust covered sticky button 2 player energy. I’m almost surprised whenever I pick it up and the face buttons and D-pad feel fast and responsive, the Hall effect sticks smooth, and while not DualSense level, the triggers are quite robust.</p><p>It’s not at the level of your $300+ pro controllers but for a third of that price it punches far above its meagre 192 grams. WASD may reign superior for effective head clicking, and I certainly indulge in its superior accuracy for competitive PC shooters, but it comes at a cost to my natural enjoyment. The CRKD Neo S is a surprisingly well built, comfortable, and versatile controller, and more to the point, I had a lot of fun playing games with the CRKD Neo S.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ PowerA OPS v1 Wireless Controller review ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/powera-ops-v1-wireless-controller-review/</link>
                                                                            <description>
                            <![CDATA[ PowerA somehow delivers a very good pro controller for the same price as a regular Xbox controller and I’m just flabbergasted. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3KHCRJoEseES2nNLgomjfX</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/UnfWNdKYkHBbDZbKS47xmE-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 12 Nov 2024 14:26:18 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Kizito Katawonga ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/pnRbJLKMy9u2vJLSvGU7AL.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/UnfWNdKYkHBbDZbKS47xmE-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[PowerA OPS v1 wireless controller]]></media:description>                                                            <media:text><![CDATA[PowerA OPS v1 wireless controller]]></media:text>
                                <media:title type="plain"><![CDATA[PowerA OPS v1 wireless controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/UnfWNdKYkHBbDZbKS47xmE-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I recently reviewed the $99 <a href="https://www.pcgamer.com/hardware/controllers/powera-ops-v3-pro-review/" target="_blank">PowerA OPS v3 Pro</a>, calling it one of the best value-for-money pro controllers in 2024. But I may have spoken too soon. <a href="https://www.powera.com/p/pc/controllers/wireless/ops-v1-wireless-controller-for-pc-and-cloud-gaming-pcgp0381-01/" target="_blank">PowerA’s OPS v1</a>, priced at just $50, costs pretty much the same as a standard Xbox PC controller but delivers much of what the OPS v3 offers—minus a few premium features. After a few weeks with the OPS v1, I’m honestly questioning why I’d choose its pricier sibling over it.</p><p>The OPS v1 looks like an Xbox controller with additional buttons on its face and back. The smooth, solid plastic housing feels great, but there are some key differences compared to the OPS v3. Most notably, the OPS v1 lacks the aggressive, textured rubber coating on the grips. Does it matter? Not really—unless you have exceptionally sweaty hands. I still found the controller comfortable to hold, and its smooth finish is easier to keep clean. There’s also a subtle grip on the underside, courtesy of micro-etched PowerA logos.</p><p>Another omission is RGB lighting. While the wraparound RGB on the OPS v3 was eye-catching, I didn’t miss it. Similarly, the OPS v1 drops the two remappable shoulder buttons found on the v3, leaving you with just four back buttons—more than enough for most players. Lastly, the OPS v1 lacks the magnetic connector ports for the OPS v3’s charging dock.</p><p>Internally, the OPS v1 retains some of the OPS v3’s standout features, like Hall effect triggers and thumbsticks, so stick drift isn’t a concern. The triggers feel smooth and include a 3-way trigger lock for adjustable playstyles. However, the thumbsticks lack the v3’s twist-to-adjust height mechanism. While you can swap out the stick caps (a few are included in the box), that’s the extent of customization here.</p><div  class="fancy-box"><div class="fancy_box-title">OPS v1 specs</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Daea5NwtWwXDhtQV4HzCnE" name="powera-ops-v1-07" caption="" alt="PowerA OPS v1 wireless controller" src="https://cdn.mos.cms.futurecdn.net/Daea5NwtWwXDhtQV4HzCnE.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text"><strong>Compatibility:</strong> Windows 11, Cloud and Mobile devices<br><strong>Connectivity:</strong> 2.4 GHz, Bluetooth, USB wired<br><strong>Ports:</strong> USB-C<br><strong>Triggers: </strong>Hall effect<br><strong>Thumbsticks:</strong> Hall effect<br><strong>Thumbstick layout:</strong> Asymmetric (Xbox-style)<br><strong>Weight:</strong> 269 g<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://www.amazon.com/Wireless-Controller-Gaming-gamepad-Customizable-Console/dp/B0D8T9222Q" target="_blank">$50</a> | <a data-analytics-id="inline-link" href="https://www.amazon.co.uk/PowerA-Wireless-Controller-gamepad-controller/dp/B0D8T9222Q" target="_blank">£50</a> | <a data-analytics-id="inline-link" href="https://www.powera.com/p/pc/controllers/wireless/ops-v1-wireless-controller-for-pc-and-cloud-gaming-pcgp0381-01/" target="_blank">AUD$89</a></p></div></div><p>Another downgrade is the absence of tactile mechanical face buttons. While the OPS v1’s buttons are still crisp and responsive, they lack the premium feel of the v3’s. As with the OPS v3, I found using all four back buttons simultaneously awkward due to finger placement. To maintain a comfortable grip, I had to choose between the top or bottom pair, which made me miss the extra shoulder buttons on the OPS v3. Your experience may vary depending on your hand size and dexterity.</p><p>Customization is nearly identical to the OPS v3, however, with options for on-the-fly remapping or using PowerA’s PC app. The app is straightforward, and you can navigate it using the controller itself—a nice touch compared to apps that require a mouse. Still, on-the-fly remapping is more convenient: hold the remap button on the back, press the source button, then the destination button, and you’re done—all without leaving your game. There’s also a Turbo mode that increases input speed for the ABXY and LB/RB buttons, though I didn’t notice much difference in actual play. Honestly, it’s a niche feature that most players probably won’t bother with, but one that obviously isn't adding to the pricetag.</p><p>The OPS v1 supports 2.4GHz wireless, USB wired, and Bluetooth connections, making it compatible with PC, Mac, smart devices, and smart TVs. The Bluetooth feature is geared toward cloud gaming on smartphones, tablets and smart TV’s running Google or Android TV, though I didn’t have one on hand to test. On my gaming PC, however, the 2.4GHz connection with the included dongle worked flawlessly.</p><p>Unlike the OPS v3, which sometimes disconnected mid-session, the OPS v1 stayed solidly connected once paired. However, pairing wasn’t always seamless—sometimes the controller wouldn’t sync with the dongle when I turned it on to play. I’d have to unplug and replug the dongle to reestablish the connection but that was about the extent of my issues.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/UnfWNdKYkHBbDZbKS47xmE.jpg" alt="PowerA OPS v1 wireless controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/85VFqzdRDnGAugd6KCgHoE.jpg" alt="PowerA OPS v1 wireless controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/y4auhpqXp6aRi9fVDYyjnE.jpg" alt="PowerA OPS v1 wireless controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Daea5NwtWwXDhtQV4HzCnE.jpg" alt="PowerA OPS v1 wireless controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SdaJUtA2uYRUV4TYVgJwmE.jpg" alt="PowerA OPS v1 wireless controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WurDx5r9C794TUWHPPeBnE.jpg" alt="PowerA OPS v1 wireless controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ahsJGugc3RHKgmCeLWULoE.jpg" alt="PowerA OPS v1 wireless controller" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><div  class="fancy-box"><div class="fancy_box-title">Buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text">✅ <strong>You want an affordable controller with extras:</strong> The OPS v1 is an outstanding, feature-rich controller for the same price as the basic Microsoft Xbox pad.<br><br>✅ <strong>Your existing Xbox PC controller has drift:</strong> If you’re looking for a new pad that will give you peace of mind against the dreaded drift, the Hall effect sticks in the OPS v1 will be just the ticket.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text">❌ <strong>You need a really pro controller with swappable parts: </strong>The OPS v1 is necessarily more basic than the v3 Pro, and so you are missing those extra luxury customisation features. <br><br>❌ <strong>You’re a streamer who needs the flashiest gear possible for on camera: </strong>With no RGB LED game, and an otherwise restrained look, the basic OPS v1 is not going to get you noticed. But do you really care?</p></div></div><p>Battery life is where the OPS v1 takes a slight hit compared to the v3, though, lasting around 20 hours versus 30. This is puzzling, given the absence of RGB lighting, but 20 hours is still excellent compared to something like the PlayStation DualSense Edge’s meagre 6-hour lifespan. You don’t have to worry about the OPS v1 dying on you though I would have loved some sort of battery indicator to let you know how much charge is left. Unfortunately, the OPS v1 doesn’t support the OPS v3’s magnetic charging dock, so you’ll need to charge it manually. It would have been nice if the port remained and you could buy the charging puck as an optional extra. </p><p>On paper, the OPS v1 might seem like a very stripped-down version of the OPS v3, but at just $50, it’s an absolute steal. It’s solidly built, offers tri-mode connectivity, remappable back buttons, Hall effect triggers and sticks, and great battery life. Even without some of the v3’s flashier features, the OPS v1 delivers durability and control well above a standard Xbox controller—for just a few extra bucks.</p><p>At this price, it’s a no-brainer. Whether you’re a pro gamer or just someone looking for a more reliable, feature-packed controller with customisation and great battery life, the OPS v1 is an easy recommendation. Fly, you fools!</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ How to use every Xbox controller on PC ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/xbox-one-controller-on-pc/</link>
                                                                            <description>
                            <![CDATA[ Tips for connecting Microsoft's Xbox controllers via USB, wireless adapter, or Bluetooth. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">rNP8NrHKqvokiBt4X39xDj</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/FLTLhdS2ajhLq3RAsfKNAj-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 06 Oct 2023 18:15:12 +0000</pubDate>                                                                                                                                <updated>Fri, 01 May 2026 23:40:58 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ wesley@pcgamer.com (Wes Fenlon) ]]></author>                    <dc:creator><![CDATA[ Wes Fenlon ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/oLoGHTuSZDFZX6QdzCTj4R.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/FLTLhdS2ajhLq3RAsfKNAj-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Xbox Series X/S and Elite Series 2 controllers]]></media:description>                                                            <media:text><![CDATA[Xbox Series X/S and Elite Series 2 controllers]]></media:text>
                                <media:title type="plain"><![CDATA[Xbox Series X/S and Elite Series 2 controllers]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/FLTLhdS2ajhLq3RAsfKNAj-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It might sound a little silly to have a guide to using the Xbox controller on PC, considering how easy it is to simply plug one in and start playing the vast majority of PC games today. It's true: usually there's no fiddling or configuration required! But the Xbox has been around for 25 years now, and you know what that means: <em>Edge cases</em>.</p><p>Microsoft's current Xbox Series X|S controller is among the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/">best PC controllers</a> just on design alone—I love its textured grips and its clicky D-Pad, though I acknowledge the latter may drive some people crazy.</p><p>Despite maintaining roughly the same look for the last 20 years, though, the Xbox controller has had a lot of small revisions. And some of those small revisions change how best to use the pad on PC, particularly if you want to connect it wirelessly.</p><p>That's why this guide covers not just the most recent Xbox pads, but all of them:</p><ul><li>Xbox Series X|S controllers</li><li>Xbox One controllers</li><li>Xbox 360 controllers</li><li>Original Xbox controllers</li></ul><p>Yes, I've even thrown in instructions for using a gamepad from the original 2001 Xbox on PC, too, for all you Duke fans out there. I gotchu.</p><p>Windows' built-in controller support means you don't need any special software to set an Xbox pad on PC; it should be recognized within seconds of plugging it in. But there are different ways to connect an Xbox controller via Bluetooth and 2.4GHz wireless, and a few specific things you should know about two versions of the Xbox One controller if you're trying to one of those (tl;dr not all of them offer Bluetooth).</p><p><strong>Here's how to use your Xbox controller on PC, no matter the make or model.</strong></p><h2 class="article-body__section" id="section-wired-xbox-controllers"><span>Wired Xbox controllers</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:1357px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="uXM86QyVficYxaKg5k5L2V" name="duke hyperkin" alt="Hyperkin's Duke Xbox controller recreation in purple" src="https://cdn.mos.cms.futurecdn.net/uXM86QyVficYxaKg5k5L2V.png" mos="" align="middle" fullscreen="" width="1357" height="763" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Hyperkin, Microsoft)</span></figcaption></figure><p><strong>The Xbox 360, Xbox One, and Xbox Series X|S controllers</strong> all use USB cables to connect to your PC. It really is that simple: they'll be recognized by Windows and just work in any PC game with controller support.</p><p>If you don't have a decent length one on hand, you may need to buy a USB cable to connect them, however: </p><ul><li><a href="https://www.amazon.com/Amazon-Basics-Charging-Transfer-Gold-Plated/dp/B07232M876" target="_blank">Micro-USB to USB-A cable for Xbox One controller</a></li><li><a href="https://www.amazon.com/Anker-2-Pack-Premium-Charging-Samsung/dp/B07DC5PPFV/" target="_blank">USB-C to USB-A cable for Xbox Series controller</a></li><li>(The wired Xbox 360 controller comes with its USB cable built-in)</li></ul><p>What if you want to use <strong>the </strong><em><strong>original</strong></em><strong> Xbox controller</strong> on PC, from all the way back in 2001?</p><p>The easiest way to do that is with the officially licensed <a href="https://www.amazon.com/dp/B09FYFT4NN/ref=twister_B0DT1GRTM5" target="_blank"><strong>Hyperkin Duke controller</strong></a> pictured above, a painstaking recreation of the monstrous original pad. This updated version comes with a USB cable for easy plug-and-play with modern systems (instead of the proprietary console controller port).</p><p>Hyperkin also makes the <a href="https://www.amazon.com/Hyperkin-DuchesS-Wired-Controller-Compatible-Greenhaven/dp/B0F79GRX8H" target="_blank"><strong>DuchesS controller</strong></a>, a recreation of the Xbox "S" pad that quickly replaced the Duke as the go-to pad for the original Xbox. It was smaller, and moved the black and white buttons to a more convenient location. </p><p>If you <em>really</em> want to use your vintage Duke or S controller from an original Xbox rather than a reproduction, you can buy <a href="https://www.amazon.com/Mcbazel-Replacement-Xbox-Controller-Adapter-Microsoft/dp/B000RT2868/" target="_blank">this adapter</a> and pair it with the <a href="https://github.com/emoose/Xb2XInput" target="_blank">XB2XInput driver</a> to make the 20+ year old controller play nice with your PC.</p><p>Follow the simple setup instructions on the XB2XInput Github page if you go that route, and you should have everything working in just a couple minutes.</p><p>Now let's get into wireless.</p><h2 class="article-body__section" id="section-wireless-xbox-series-x-s-controller-on-pc"><span>Wireless Xbox Series X|S controller on PC</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:2315px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="d5dKZRHhmqvSzk32zYwhQC" name="pcgamer.jpg" alt="Xbox Series X/S Controller" src="https://cdn.mos.cms.futurecdn.net/d5dKZRHhmqvSzk32zYwhQC.jpg" mos="" align="middle" fullscreen="" width="2315" height="1302" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Xbox)</span></figcaption></figure><p><strong>Hardware</strong></p><ul><li>Xbox Series X|S controller</li><li><a href="https://www.amazon.com/Microsoft-Xbox-Wireless-Adapter-Windows-one/dp/B00ZB7W4QU" target="_blank">Xbox Wireless adapter for Windows</a> (optional)</li><li>Or built-in Bluetooth / a Bluetooth dongle</li><li>AA batteries</li></ul><h3 id="how-to-use-the-xbox-series-controller-on-pc-with-bluetooth">How to use the Xbox Series controller on PC with Bluetooth</h3><p>The Xbox Series controller includes built-in Bluetooth, which allows for easy wireless pairing with your PC. There are two ways to go about using this controller wirelessly: one is with an<a href="https://www.amazon.com/Microsoft-Xbox-Wireless-Adapter-Windows-one/dp/B00ZB7W4QU" target="_blank"> Xbox wireless adapter</a>, and the other is through a standard Bluetooth connection. <strong>Note:</strong> <strong>You don't need the official adapter</strong> as long as your PC has built-in Bluetooth, or you have another Bluetooth dongle.</p><p><strong>How to connect with an Xbox Wireless adapter for Windows</strong></p><p>As simple as a wireless connection gets:</p><ol start="1"><li>Plug an <a href="https://www.amazon.com/Smlau-XB2-Wireless-Compatible-Controller/dp/B0BKW4J3RN" target="_blank">Xbox Wireless adapter</a> into a USB port.</li><li>Turn on your Xbox Series controller by holding the Guide button in the center. Now press the the small sync button on the top of the controller until the Guide button begins flashing.</li><li>Press the small sync button located on the side of the Xbox Wireless adapter for a couple seconds. Watch the flashing Guide button on the controller. When it goes solid, you're connected!</li></ol><h4 id="how-to-connect-the-xbox-series-controller-via-bluetooth">How to connect the Xbox Series controller via Bluetooth</h4><ol start="1"><li>Press the Windows key and type "Bluetooth" until search brings up the "Bluetooth & other devices" settings menu. Click it to open that settings page. Here you should see your Bluetooth is set to "On" and is discoverable.</li><li>Turn on the Xbox Series controller by holding the Guide button. Press the sync button on top of the controller until the Guide light begins to flash rapidly.</li><li>In the Bluetooth settings menu, click "Add Bluetooth or other device" and then select Bluetooth from the menu options. After a few seconds of searching, your Xbox  Series controller should show up. Click to pair. And you're done.</li></ol><h2 class="article-body__section" id="section-wireless-xbox-one-controller-on-pc"><span>Wireless Xbox One controller on PC</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:1200px;"><p class="vanilla-image-block" style="padding-top:66.67%;"><img id="sYzE58icATzjYq25PxEjik" name="" alt="Xbox One S Controller" src="https://cdn.mos.cms.futurecdn.net/sYzE58icATzjYq25PxEjik.jpg" mos="" align="middle" fullscreen="" width="1200" height="800" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft )</span></figcaption></figure><p><strong>Hardware</strong></p><ul><li>Xbox One controller</li><li><a href="https://www.amazon.com/Microsoft-Xbox-Wireless-Adapter-Windows-Packaging/dp/B0785SFKYF/">Xbox Wireless adapter for Windows</a></li><li>AA batteries</li></ul><h3 id="how-to-use-the-xbox-one-controller-wirelessly">How to use the Xbox One controller wirelessly</h3><p>The Xbox One controller is slightly more complicated than the Series X|S controller, because it saw a mid-generation update that changed its internal hardware. We'll get to those changes in a second. But this first option, connecting with a USB wireless adapter, will work with <strong>any </strong>Xbox One controller.</p><p><strong>How to connect with the Xbox Wireless adapter for Windows</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:1056px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4EsQEiftQK6XapAcDjJL6R" name="" alt="Xbox Wireless Adapter" src="https://cdn.mos.cms.futurecdn.net/4EsQEiftQK6XapAcDjJL6R.jpg" mos="" align="middle" fullscreen="" width="1056" height="594" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>This process is nearly as simple as connecting with a USB cable, and is basically identical to connecting the controller to an Xbox console. </p><p><strong>1. </strong>Plug A <a href="https://www.amazon.com/Smlau-XB2-Wireless-Compatible-Controller/dp/B0BKW4J3RN" target="_blank">Xbox Wireless adapter</a> into a USB port.</p><p><strong>2.</strong> Turn on your Xbox One controller by holding the Guide button in the center. Now press the the small sync button on the top of the controller until the Guide button begins flashing.</p><p><strong>3. </strong>Press the small sync button located on the side of the Xbox Wireless adapter for a couple seconds. Watch the flashing Guide button on the controller. When it goes solid, you're connected!</p><p><strong>How to connect the Xbox One controller via Bluetooth</strong></p><p>Here's where things get a little complicated. Certain models of the Xbox One controller can connect to any old PC Bluetooth adapter. Others can't. Here's how to tell if your Xbox One controller has built-in Bluetooth: </p><a 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:780px;"><p class="vanilla-image-block" style="padding-top:54.49%;"><img id="ouUrYfrAnXnvmFjcF4YiEh" name="" alt="Xbox One controller versions" src="https://cdn.mos.cms.futurecdn.net/ouUrYfrAnXnvmFjcF4YiEh.png" mos="" align="middle" fullscreen="1" width="780" height="425" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/ouUrYfrAnXnvmFjcF4YiEh.png' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div></figure></a><p>The shape of the plastic molding at the top of the controller is your guide. The first iteration of the Xbox One controller does not support Bluetooth and has a few other annoyances: Its bumpers have a narrower click range, making them less comfortable depending on where you position your fingers.</p><p>The redesigned controller that launched with the Xbox One S console revision has a smaller plastic molding along the top. It also adds a 3.5mm headphone jack to the bottom of the controller, another easy giveaway. On top of that headphone jack, it also has built-in Bluetooth!</p><ol start="1"><li>Press the Windows key and type "Bluetooth" until search brings up the Bluetooth & other devices settings option. Click it to open that settings page. Here you should see your Bluetooth is set to "On" and is discoverable. <em><strong>Windows version note:</strong></em><em> Using the Xbox One controller via Bluetooth only works on Windows 10 with the Anniversary update applied. On Windows 11, you're good.</em></li><li>Turn on the Xbox One controller by holding the Guide button. Press the sync button on top of the controller until the Guide light begins to flash rapidly.</li><li>In the Bluetooth settings menu, click "Add Bluetooth or other device" and then select Bluetooth from the menu options. After a few seconds of searching, your Xbox controller should show up. Click it to pair. And you're wirelessly connected!</li></ol><p><em><strong>Headset note:</strong></em><em> Only one Xbox One controller can be paired via Bluetooth. Headsets not supported.</em></p><h2 class="article-body__section" id="section-wireless-xbox-360-controller-on-pc"><span>Wireless Xbox 360 controller on PC</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="C4QHG3bYtnkEc7TrTmd9RB" name="xbox 360 controller.jpg" alt="Xbox 360 controller" src="https://cdn.mos.cms.futurecdn.net/C4QHG3bYtnkEc7TrTmd9RB.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p><strong>Hardware</strong></p><ul><li>Xbox 360 wireless controller</li><li><a href="https://www.amazon.com/Mcbazel-Wireless-Receiver-Microsoft-Xbox-360/dp/B076GZFLR3" target="_blank">Xbox 360 wireless receiver for PC</a></li><li>AA batteries</li></ul><h3 id="how-to-connect-a-wireless-xbox-360-controller">How to connect a wireless Xbox 360 controller</h3><p>The Xbox 360 controller came in a hardwired version that was our go-to on PC for years and years because it was just so dang cheap. These days there are tons of knock-offs for sale, but you're likely not going to see many official Microsoft ones available new. We'd definitely recommend one of the newer Series X|S controllers, anyway—they feel much, much better in the hand.</p><p>There was also a wireless version of this controller that wasn't quite so convenient for PC gamers, since Bluetooth connectivity wasn't an option back then. But if you happen to have a wireless 360 controller sitting around that you're determined to use, it is possible on PC with the right accessory.</p><p>A <a href="https://www.amazon.com/Mcbazel-Wireless-Receiver-Microsoft-Xbox-360/dp/B076GZFLR3" target="_blank">wireless Xbox 360 receiver</a> plugs in via USB and can connect to up to four Xbox 360 controllers. To pair, you'll hold down the sync button on top of the Xbox 360 controller until the LED starts to blink; then hold down the button on the wireless adapter for a few seconds. Release and the two should connect shortly. </p><p>Note that the model linked above is not an official Microsoft adapter, which has been discontinued, but it should do the job. If you want one of Microsoft's, you can still find them <a href="https://www.ebay.com/sch/i.html?_from=R40&_trksid=p2380057.m570.l1313&_nkw=xbox+360+wireless+receiver&_sacat=0" target="_blank">new or used on Ebay</a>. <strong>The official wireless adapter for Xbox One & Series X|S controllers does not work with 360 controllers.</strong></p><h2 class="article-body__section" id="section-updating-xbox-one-series-controllers"><span>Updating Xbox One & Series controllers</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:1200px;"><p class="vanilla-image-block" style="padding-top:63.17%;"><img id="4xVRiWhVthMJ84UZBaGiEU" name="" alt="Xbox Elite controller" src="https://cdn.mos.cms.futurecdn.net/4xVRiWhVthMJ84UZBaGiEU.jpg" mos="" align="middle" fullscreen="" width="1200" height="758" attribution="" endorsement="" class=""></p></div></div></figure><div  class="fancy-box"><div class="fancy_box-title">CONTROLLER SETUP GUIDES</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vE46aS9AYNfeLLJQvLq9hN" name="da09a64c6e2122092ffaaed733f7df0d-650-80.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/vE46aS9AYNfeLLJQvLq9hN.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div></figure><p class="fancy-box__body-text"><strong>How to use a:</strong><br>- <a data-analytics-id="inline-link" href="https://www.pcgamer.com/ps5-dualsense-controller-on-pc/" target="_blank">PS5 controller on PC</a><br>- <a data-analytics-id="inline-link" href="https://www.pcgamer.com/how-to-use-a-ps4-controller-on-pc/" target="_blank">PS4 controller on PC</a><br>- <a data-analytics-id="inline-link" href="https://www.pcgamer.com/ps3-controller-on-pc-guide/" target="_blank">PS3 controller on PC</a><br>- <a data-analytics-id="inline-link" href="https://www.pcgamer.com/how-to-use-a-nintendo-switch-pro-controller-on-pc/" target="_blank">Nintendo Switch Pro controller on PC</a></p></div></div><p>It's not just games that have updates these days. So do controllers! While it's not necessary to update your Xbox controller, if you want to, the process is pretty simple.</p><p>1. Open the Windows Store and search for Xbox Accessories. Install the app and open it. <a href="https://www.microsoft.com/store/productId/9NBLGGH30XJ3" target="_blank">Or you can just click this link</a>.</p><p><em>Windows version note: The app only works with Windows 10 with the Anniversary update applied. On Windows 11, you're good.</em></p><p>2.<strong> </strong>Plug your Xbox One controller in with a micro-USB cable, or Series X|S controller with a USB-C cable.</p><p>3. Click the "More options" button to check if there's a firmware update for your controller.</p><p>Instead of configuring controller options on a game-by-game basis, you can also use the Accessories app to change button mapping, swap and invert sticks and triggers, and enable or disable rumble.</p><p>If you have an Xbox Elite controller, you can also use the Accessories app to configure options like trigger and analog stick sensitivity. You can save different configurations to the two profiles the controller supports.</p><p><em>Not a controller person? Here's a round-up of the </em><a href="https://www.pcgamer.com/best-gaming-keyboards/"><em>best gaming keyboards</em></a><em>, and </em><a href="https://www.pcgamer.com/the-best-gaming-mouse/"><em>best gaming mouse</em></a><em>.</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Razer Cobra Pro ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/razer-cobra-pro-gaming-mouse-review/</link>
                                                                            <description>
                            <![CDATA[ An excellent all-rounder that performs admirably. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">F5iza2HuiQJaTJtkj9LF6V</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/7FxZ5hYGKQVKZnPsm5hNC-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 07 Aug 2023 15:09:52 +0000</pubDate>                                                                                                                                <updated>Mon, 07 Aug 2023 15:11:08 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Alex Blake ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7jcW9wutWh3zLjfXJDE3T.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/7FxZ5hYGKQVKZnPsm5hNC-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Razer Cobra Pro gaming mouse]]></media:description>                                                            <media:text><![CDATA[Razer Cobra Pro gaming mouse]]></media:text>
                                <media:title type="plain"><![CDATA[Razer Cobra Pro gaming mouse]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/7FxZ5hYGKQVKZnPsm5hNC-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Razer&apos;s mouse lineup is already pretty packed, but it&apos;s just gained a new member in the form of the Razer Cobra Pro. This wireless, RGB-ified gaming mouse is pitched as something of a jack of all trades, ideal for any hand grip and game type.</p><p>It comes with a 30,000 DPI Focus Pro optical sensor and Razer&apos;s own optical switches under the buttons. There are 10 programmable controls and three ways to connect to your PC (2.4GHz, Bluetooth, USB-C to USB-A cable). At roughly 12cm x 6cm, it&apos;s a pretty compact mouse, though that does mean it&apos;s not that well suited to larger hands.</p><p>At a wincingly expensive $130, it&apos;s not exactly cheap either. In fact, that price leaves it just $20 short of <a href="https://www.pcgamer.com/razer-deathadder-v3-pro-review/" target="_blank">Razer&apos;s DeathAdder V3 Pro</a>, our <a href="https://www.pcgamer.com/best-wireless-gaming-mouse/" target="_blank">favorite wireless mouse</a>. That puts a lot of pressure on the Cobra Pro to deliver the goods. How does it stack up?</p><p>I&apos;ve been using a wired <a href="https://www.pcgamer.com/razer-basilisk-v2-review/" target="_blank">Razer Basilisk V2</a> as my daily driver for the last few years and I&apos;ve always loved its ergonomic shape for games and work. The <a href="https://www.razer.com/gaming-mice/Razer-Cobra-Pro/RZ01-04660100-R3U1" target="_blank">Cobra Pro</a>, though, makes it feel like an ancient relic you might dig up on a rainy Sunday with your detectorist uncle, Jim. The Cobra Pro is lighter, snappier and more responsive, and looks prettier to boot. Just holding it felt like it increased my Gamer Coefficient by at least 30 points.</p><div  class="fancy-box"><div class="fancy_box-title">Cobra Pro specs</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="L3c5x8NchsXyvrcHRzEPJ" name="Razer-Cobra-Pro-2.jpg" caption="" alt="Razer Cobra Pro gaming mouse" src="https://cdn.mos.cms.futurecdn.net/L3c5x8NchsXyvrcHRzEPJ.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text"><strong>Connection: </strong>2.4GHz wireless, Bluetooth, USB wired<strong><br>Sensor: </strong>Focus Pro 30K optical sensor<br><strong>Acceleration:</strong> 70G<br><strong>Speed: </strong>750 IPS<br><strong>Battery: </strong>Up to 170 hours in Bluetooth mode with RGB disabled (advertised). Tested to 19 hours in 2.4GHz mode with RGB enabled<br><strong>Polling rate: </strong>Up to 1,000 Hz<br><strong>Customizable buttons:</strong> 7 on top, 2 on the left-hand side, 1 underneath <br><strong>Weight:</strong> 77g <br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://www.razer.com/gaming-mice/Razer-Cobra-Pro/RZ01-04660100-R3U1" target="_blank">$130</a> | <a data-analytics-id="inline-link" href="https://www.razer.com/gb-en/gaming-mice/Razer-Cobra-Pro/RZ01-04660100-R3G1" target="_blank">£130</a> | <a data-analytics-id="inline-link" href="https://www.amazon.com.au/Razer-Cobra-Pro-Customizable-HyperSpeed/dp/B0C61F4R8Q" target="_blank">$217 AUD</a></p></div></div><p>I use a claw grip, and the Cobra Pro felt very comfortable for me. It seems ever-so-slightly on the smaller side, but perhaps that&apos;s because I&apos;m used to the hulking behemoth that is the Basilisk.</p><p>In action, the Cobra Pro skims effortlessly over your mouse mat, which combined with the accurate 30,000 DPI sensor and grippy rubberized sides, produces a feeling of absolute control and smoothness. The downside is I now have no excuse for my comically inaccurate headshot attempts. Still, if missing feels this good, maybe I don&apos;t want those glory kills anyway.</p><p>Note that when changing between 2.4GHz and Bluetooth modes, I came across a strange sensitivity issue. Despite the DPI rating staying the same in Razer&apos;s Synapse app, things felt much slower in 2.4GHz mode. I had to drop the Bluetooth DPI to 1,000 to get something that felt like 1,500 DPI in 2.4GHz mode.</p><p>The optical sensors under the main mouse buttons, meanwhile, produced satisfying and responsive clicks no matter how fast I jammed my porky digits downwards. Unlike my aging Basilisk, I never experienced missed or doubled-up clicks in the heat of the moment. The mouse wheel, too, is firm in the press, although you don&apos;t get the sideways clicks offered on some other Razer mice.</p><p>At 77g, the Cobra Pro is not the lightest mouse, and if you&apos;re after something that strips out all unnecessary bulk you should look elsewhere. But I wouldn&apos;t describe it as particularly heavy either. For gaming generalists or those who want a quality all-rounder, the Cobra Pro ticks a lot of boxes.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/j9z7jTPwmftzfs2Jd7bnX.jpg" alt="Razer Cobra Pro gaming mouse" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Wefj44WvmCBY5V26oJShS.jpg" alt="Razer Cobra Pro gaming mouse" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><div><blockquote><p>It could have been the first mouse to tempt me back to the classic Gamer Aesthetic, if that getting look didn't drastically diminish the battery life.</p></blockquote></div><p>It&apos;s not mentioned on the official website, but all of Razer&apos;s listed 100+ hour battery figures for the Cobra Pro were obtained with the RGB lighting disabled. With the lights on, you&apos;ll get far less juice than you might expect. My review unit arrived with 72% charge, and in 2.4GHz mode with the RGB enabled, it died after 18 hours and 40 minutes. I&apos;d expect around 25 hours going from fully charged. A lot of users will probably buy the Cobra Pro intending to leave its light show intact, but if you do, get ready to reach for the charging cable pretty regularly.</p><p>Things took a very different turn when I switched off the RGB and moved over to Bluetooth mode. Case in point: after 34 hours of use I was only down to 93%. In other words, the mouse dropped a mere 7% battery after nearly double the number of hours it took for RGB to completely kill it the first time around. Turns out the Cobra Pro has a secret Methuselah DLC, and it&apos;s activated by turning off the lights.</p><p>It&apos;s a shame it has to be this way, though, because the lighting is surprisingly attractive. I thought I had grown out of RGB garishness years ago in favor of a pared-back small form factor PC with nary a light in sight. I was wrong—since most of its lighting is focused on the underside, the Cobra Pro&apos;s RGB is rather subtle (as far as bright rainbow effects can ever be considered subtle). It could have been the first mouse to tempt me back to the classic Gamer Aesthetic, if that getting look didn&apos;t drastically diminish the battery life.</p><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="yoNfhedRJp9qzi98XDkBP" name="Razer-Cobra-Pro-3.jpg" alt="Razer Cobra Pro gaming mouse" src="https://cdn.mos.cms.futurecdn.net/yoNfhedRJp9qzi98XDkBP.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div  class="fancy-box"><div class="fancy_box-title">Buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text">✅ <strong>You play a variety of game types: </strong>While not designed with any gamer archetype in mind, the Cobra Pro suits a range of playstyles.<br><br>✅ <strong>You hate charging wireless mice:</strong> Once the lights are off, this one goes on and on and on.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text">❌ <strong>You want to enjoy the RGB lights:</strong> Well, you can buy it if that’s the case, but it won&apos;t last as long as you&apos;d like.<br><br>❌ <strong>You have large hands:</strong> The Cobra Pro is on the smaller side as far as Razer’s mice go.</p></div></div><p>The Cobra Pro is not aimed at any one specific type of user. It doesn&apos;t have the 20-button madness of the <a href="https://www.pcgamer.com/razer-naga-pro-review-wireless-gaming-mouse/" target="_blank">Razer Naga</a>, for example, and gamers with very specific requirements might end up looking elsewhere. But that lack of specialization only broadens its appeal, making it a mouse where most people will find something to like.</p><p>So why should you buy it over the superb DeathAdder V3 Pro? Well, its battery life exceeds that of the DeathAdder (at least on paper), although both are fantastic in this area. It also has DPI buttons up top for easy access, a more compact form factor that&apos;s better for smaller hands, and that sweet, sweet RGB lighting.</p><p>Even without comparing it to Razer&apos;s best, the Cobra Pro is a very impressive mouse. It&apos;s expensive, for sure, and you&apos;re better off treating the RGB as a decadent delicacy that you break out every now and then. But if gaming performance and exceptional battery life are priorities for you, the Cobra Pro should be on your shortlist.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Man has once again crossed a line in creating these pizza-scented Ninja Turtle controllers ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/man-has-once-again-crossed-a-line-in-creating-these-pizza-scented-ninja-turtle-controllers/</link>
                                                                            <description>
                            <![CDATA[ Cowabunga! ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">WL2bwgBaqBW2GQJVHFEwa3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/W4p7TGfeDKdHWMEwCVaYrK-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Mon, 24 Jul 2023 19:45:34 +0000</pubDate>                                                                                                                                <updated>Mon, 24 Jul 2023 21:04:19 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ jorge.jimenez@futurenet.com (Jorge Jimenez) ]]></author>                    <dc:creator><![CDATA[ Jorge Jimenez ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/m5hCNTacYmptKhTTGWiJte.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/W4p7TGfeDKdHWMEwCVaYrK-1280-80.png">
                                                            <media:credit><![CDATA[Xbox]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Turtle Power!]]></media:description>                                                            <media:text><![CDATA[Turtle Power!]]></media:text>
                                <media:title type="plain"><![CDATA[Turtle Power!]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/W4p7TGfeDKdHWMEwCVaYrK-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Do certain smells calm you down? Perhaps you enjoy the soothing scent of lavender in the air to help you relax. What if I told you there&apos;s a way to fill your bedroom with the enticing aroma of New York-style pizza without actually having one <em>or</em> buying a $30 candle?</p><p>Xbox announced a series of <a href="https://news.xbox.com/en-us/2023/07/24/pizza-scented-xbox-and-tmnt-mutant-mayhem-controller/" target="_blank">Ninja Turtle-themed wireless controllers</a> to celebrate the upcoming release of the Teenage Mutant Ninja: Mutant Mayhem animated movie. Each controller will come with a special scent to get you psyched up for the movie, though I think you might get some odd looks if you pulled out your Xbox controller in the theater. </p><p>These controllers are designed with scent diffusers shaped like pizzas that attach to the top of the gamepad, giving the controller the delightful fragrance of a "slice of delicious New York ‘za," as stated in the press release.</p><p>The controllers come in four different colors, each representing one of the brothers. Personally, I&apos;ve always been fond of anything in the Michelangelo orange. Though the exact duration of the scents&apos; longevity isn&apos;t mentioned, anyone who&apos;s had a pizza in their room knows that the smell tends to linger around for a while.</p><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="naFZcUN2yeGt7jRsL9k5JS" name="TMNT-Hero-Image-207d8c59b200297d3a67-1-84787a4ed8f75c1a26e6.jpg" alt="Turtle Power!" src="https://cdn.mos.cms.futurecdn.net/naFZcUN2yeGt7jRsL9k5JS.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Xbox)</span></figcaption></figure><p>However, if this controller ends up smelling of pepperoni, ice cream, mushrooms, anchovies, peanut butter, and jelly beans (Mikey&apos;s <a href="https://turtlepedia.fandom.com/wiki/Pizza#:~:text=Archie%20Comics,(Michaelangelo&apos;s%20favorite)." target="_blank">canonically favorite pizza</a>), then I&apos;d be tempted to toss it out of the window. I don&apos;t live in a sewer where I need to mask one gross smell with another.</p><p>The only way to get one of these scented nightmares is via sweepstakes that you can enter on Xbox&apos;s Twitter, err, <a href="https://twitter.com/XboxGamePass/status/1683492348234199041?s=20" target="_blank">X account</a>. If you&apos;re in the NYC area like I am, you can check out and sniff these controllers at the Xbox Gaming Lounge in the Microsoft Experience Center on August 2. </p><p>This isn&apos;t the first company to add scent diffusers to PC gaming hardware. Aroma Shooter made a device that <a href="https://www.pcgamer.com/finally-a-device-that-will-let-you-smell-anime/" target="_blank">lets you smell anime</a>, so man is clearly continuing unhindered down this dark, smelly path towards olfactory ruin.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ A custom-made fighting game pad but it's two ditto ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/a-custom-made-fighting-game-pad-but-its-two-ditto/</link>
                                                                            <description>
                            <![CDATA[ Perfection. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">DkZAhnLFiYPugfJwDjJpKg</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/KJ23bz4NiyxTqVWAJdP33W-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 05 Jul 2023 14:32:38 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                <dc:description><![CDATA[ http://cdn.mos.cms.futurecdn.net/JgVC8fm5U8WjajHxDxyKqM.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/KJ23bz4NiyxTqVWAJdP33W-1280-80.jpg">
                                                            <media:credit><![CDATA[Rudeism]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Rudeism&#039;s Rudebox custom fighting pad on a desk with wrist rest depicting two dittos ]]></media:description>                                                            <media:text><![CDATA[Rudeism&#039;s Rudebox custom fighting pad on a desk with wrist rest depicting two dittos ]]></media:text>
                                <media:title type="plain"><![CDATA[Rudeism&#039;s Rudebox custom fighting pad on a desk with wrist rest depicting two dittos ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/KJ23bz4NiyxTqVWAJdP33W-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/U8SzU8UqaMkn5MX86ADfNW.jpg" alt="Rudeism's Rudebox custom fighting pad on a desk with wrist rest depicting two dittos " /><figcaption><small role="credit">Rudeism</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/KJ23bz4NiyxTqVWAJdP33W.jpg" alt="Rudeism's Rudebox custom fighting pad on a desk with wrist rest depicting two dittos " /><figcaption><small role="credit">Rudeism</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/r5zzVCHXWR46674gKiXHBW.jpg" alt="Rudeism's Rudebox custom fighting pad on a desk with wrist rest depicting two dittos " /><figcaption><small role="credit">Rudeism</small></figcaption></figure></figure><p>Here&apos;s a fighting controller I wish were available to buy. It&apos;s <a href="https://twitter.com/rudeism/status/1674398596756807681" target="_blank">Rudeism&apos;s personal Rudebox</a>, a custom-made fighting pad that&apos;s not only a mod marvel but absolutely awesome to look at, thanks to its double-ditto wrist rest. </p><p>The amorphous shape of ditto and its crudely drawn facial features have a certain allure that I can&apos;t quite explain. Ditto is, for all intents and purposes, the least interesting of Pokémon to look at. Yet that little goober&apos;s face is just something special, huh? That&apos;s why this custom board has caught my eye, anyways, much like <a href="https://www.pcgamer.com/ditto-keyboard-qlavier/" target="_blank">Qlavier&apos;s ditto board</a> did back in the day.</p><p>It&apos;s made by "builder of bizarre controllers" Rudeism, and it&apos;s powered by a Arduino Micro controller that you can see at the top of the purple PCB. The rest has been designed and soldered around it to offer optimal fighting game finger stance, with the two dittos&apos; bodies making up the wrist rest.</p><p>Cute and comfortable.</p><p>Rudeism tells me the whole thing took around a month, "from concept to completion." Though most of that was waiting for parts to arrive in the mail. Actually, the whole board didn&apos;t take anywhere near as long as I was expecting, at "around 2–3 days for design and construction."</p><div  class="fancy-box"><div class="fancy_box-title">Perfect peripherals</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="czbNLcab5b3bWpSup92ZRH" name="colorwave-logitech-g703.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/czbNLcab5b3bWpSup92ZRH.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Colorwave)</span></figcaption></figure><p class="fancy-box__body-text"><a data-analytics-id="inline-link" href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank"><strong>Best gaming mouse</strong></a>: the top rodents for gaming<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-gaming-keyboard/" target="_blank"><strong>Best gaming keyboard</strong></a>: your PC&apos;s best friend...<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-gaming-headset/" target="_blank"><strong>Best gaming headset</strong></a>: don&apos;t ignore in-game audio</p></div></div><p>The actual fighting pad itself—namely the PCB, mechanical switches, and controller—actually works without the two dittos holding it all together. But where&apos;s the fun in that?</p><p>You can hear the satisfying clack of the board over at Rudeism&apos;s Twitter page. They also have plenty of wild projects for you to catch up on, too, like the jump pad that they&apos;re using to <a href="https://twitter.com/rudeism/status/1672410942200774656" target="_blank">play the game Jump King</a> with, or what appears to be the beginnings of a <a href="https://twitter.com/rudeism/status/1674910682981208065" target="_blank">Rubix Cube box controller</a>. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Xbox's new controller is made of one-third reclaimed materials ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/xboxs-new-controller-is-one-third-reclaimed-materials/</link>
                                                                            <description>
                            <![CDATA[ And it sure looks like it. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">kbEnor2xcbxTr4vd7AgcVc</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ntykC6QTYZA3VjkYr2bUva-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 05 Apr 2023 02:26:44 +0000</pubDate>                                                                                                                                <updated>Thu, 06 Apr 2023 02:55:57 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Hope Corrigan ]]></dc:creator>                                                                <dc:description><![CDATA[ http://cdn.mos.cms.futurecdn.net/8GHv7ZUGwf8bhinBRgQGjb.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/ntykC6QTYZA3VjkYr2bUva-1280-80.jpg">
                                                            <media:credit><![CDATA[Xbox]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Xbox Remix Controller]]></media:description>                                                            <media:text><![CDATA[Xbox Remix Controller]]></media:text>
                                <media:title type="plain"><![CDATA[Xbox Remix Controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ntykC6QTYZA3VjkYr2bUva-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I&apos;m a big fan of both controllers and the Earth since the first make some games more comfortable to play, and the latter is the place where I keep all my stuff. Microsoft has just announced a new special edition controller made with the upcoming Earth Day in mind. It&apos;s called the <a href="https://news.xbox.com/en-us/2023/04/04/new-xbox-wireless-controller-remix-special-edition/" target="_blank">Remix Special Edition</a> as reclaimed and recycled materials were used in its construction. To really drive home that recycled look, it&apos;s also pretty ugly and reminds me of <a href="https://www.theguardian.com/australia-news/2022/sep/29/all-victorians-to-get-four-wheelie-bins-to-enable-recycling-of-soft-plastics-and-pizza-boxes" target="_blank">Australian recycling wheelie bins</a>. </p><p>The dull green monstrosity is made up of one-third regrind and reclaimed materials—regrind in this case refers to leftover Xbox One controller parts turned back into raw material. It also features reclaimed materials recycled from things like CDs and headlights. The controllers also come packed with the rechargeable battery pack, which I wish we saw more often.</p><p>It&apos;s a nice effort, but feels like things that should be standard practice, especially for the construction of leisure devices. Microsoft explains this is part of an exploration into how to reduce waste with a <a href="https://www.xbox.com/en-AU/community/sustainability" target="_blank">sustainability page</a> laying out plans for a zero-waste future, so hopefully we will see some of these ideas implemented in regular controller construction down the road.</p><p>For now, these methods give the Remix Special Edition controller a unique look and feel over other devices. The look is said to draw inspiration from the natural world and earth tones with pops of bright colours. It&apos;s got a bin-green front plate, with textured beigey brown on the hand grips. The back is a slate-like blue, while the pops of colour are in the form of booger-green d-pad and triggers. I am, if you haven&apos;t noticed, not a fan of the colours.</p><div  class="fancy-box"><div class="fancy_box-title">Perfect peripherals</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="czbNLcab5b3bWpSup92ZRH" name="colorwave-logitech-g703.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/czbNLcab5b3bWpSup92ZRH.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Colorwave)</span></figcaption></figure><p class="fancy-box__body-text"><a data-analytics-id="inline-link" href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank"><strong>Best gaming mouse</strong></a>: the top rodents for gaming<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-gaming-keyboard/" target="_blank"><strong>Best gaming keyboard</strong></a>: your PC&apos;s best friend...<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-gaming-headset/" target="_blank"><strong>Best gaming headset</strong></a>: don&apos;t ignore in-game audio</p></div></div><p>The look is disappointing because Xbox makes some downright stunning controllers. I have a Steller Shift purple controller that phases between blue and purple, which is just gorgeous. Plus there&apos;s design labs, where you can even <a href="https://www.pcgamer.com/we-made-pc-games-into-themed-xbox-elite-controllers-using-xbox-design-labs/" target="_blank">customise an Elite controller</a> to look amazing nowadays.</p><p>I can only assume something quite that nice wasn&apos;t possible with the manufacturing process, but Microsoft recently released a <a href="https://news.xbox.com/en-us/2023/03/07/stun-the-competition-with-the-new-xbox-wireless-controller-velocity-green/" target="_blank">bright green Xbox controller</a> that&apos;s still nicer than this one. It&apos;s a shame this controller will add to the perception that recycled stuff has to look it. Imagine being inspired by the Earth and coming up with something this dull.</p><p>If, unlike me, the Xbox Wireless Controller Remix Special Edition has piqued your interest you can preorder one for $85 USD before the April 18 release. That&apos;s a bit pricier than your regular Xbox controller, but considering this one comes with a rechargeable battery pack as well as the whole "good for the Earth" thing, it doesn&apos;t feel out of line. Here&apos;s hoping we&apos;ll see much cooler controllers with similar or even better construction in the future.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ You can now convert your Stadia controller to a standard Bluetooth device, here's how ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/you-can-now-convert-your-stadia-controller-to-a-standard-bluetooth-device-heres-how/</link>
                                                                            <description>
                            <![CDATA[ A final firmware update means Stadia owners can continue to use their controllers wirelessly with other devices. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">MTAz6NPCt5Ej4DeffjVtqn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/hpSpAZpEo7EXsSJBAWD9kS-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 17 Jan 2023 23:30:05 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ andy.chalk@pcgamer.com (Andy Chalk) ]]></author>                    <dc:creator><![CDATA[ Andy Chalk ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/fhJSYUb92TCEtsz4ZL8UZL.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/hpSpAZpEo7EXsSJBAWD9kS-1280-80.jpg">
                                                            <media:credit><![CDATA[GOogle]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Google Stadia controller]]></media:description>                                                            <media:text><![CDATA[Google Stadia controller]]></media:text>
                                <media:title type="plain"><![CDATA[Google Stadia controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/hpSpAZpEo7EXsSJBAWD9kS-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Google&apos;s cloud gaming service <a href="https://www.pcgamer.com/tag/stadia/" target="_blank">Stadia</a> officially goes dark tomorrow, January 18, but those of you with a Stadia controller will be able to continue using it long into the future (hopefully) thanks to a <a href="https://community.stadia.com/t5/Stadia-General/Stadia-Controller-How-to-Enable-Bluetooth/m-p/86195/thread-id/35077" target="_blank">final firmware update</a> that converts it into a standard Bluetooth device.</p><p>By all appearances, the process (explained in this <a href="https://support.google.com/stadia/answer/13067284?visit_id=638095764098021448-1472496108&p=controllerconnect&rd=1#zippy=%2Cset-up-bluetooth-mode-on-your-stadia-controller%2Cconnect-your-stadia-controller-wirelessly-to-a-device%2Cdo-i-have-to-use-bluetooth-mode-can-i-plug-in-my-stadia-controller-with-a-usb-cable-instead%2Chow-much-time-do-i-have-to-enable-bluetooth-mode%2Cdo-wired-headphones-work-with-the-stadia-controller-in-bluetooth-mode%2Cwill-the-assistant-and-capture-buttons-work-after-stadia-shuts-down%2Cmy-stadia-controller-appears-in-my-devices-bluetooth-settings-but-i-cant-connect-to-it-help" target="_blank">Stadia support page</a>) is a simple one: Press and hold the Stadia button on the controller until the status light comes on, plug the controller into your PC via a standard USB cable, go to <a href="https://stadia.google.com/controller/" target="_blank">stadia.google.com/controller</a> (you&apos;ll need to use Google&apos;s Chrome browser—I tried it with Firefox and it won&apos;t load the required page), and then follow the on-screen instructions. Once that&apos;s finished, you&apos;ll have a swanky new(ish) Bluetooth controller on your hands that you can use with any Bluetooth-capable device.</p><p><br></p><div class="see-more see-more--clipped"><blockquote class="twitter-tweet hawk-ignore" data-lang="en"><p lang="en" dir="ltr">Heads up: this update will permanently disable Wi-Fi connectivity, so please wait to update your controller if you want to use it to play wirelessly on Stadia tomorrow. Update tool: https://t.co/o0iU2x0NsV<a href="https://twitter.com/GoogleStadia/status/1615411508220989441">January 17, 2023</a></p></blockquote><div class="see-more__filter"></div></div><p><br></p><p>After the conversion, you can pair the controller with compatible devices by holding the Stadia button until it turns off, then pressing and holding it again until the status light pulses orange. That&apos;ll put it into pairing mode; go to whatever you&apos;re aiming to connect it to and you should see it appear in the list of connectible devices as "Stadia." You may need to approve the Stadia controller in the device&apos;s Bluetooth menu if it doesn&apos;t connect, or you might have to just switch everything off and then back on, and try again—Bluetooth can be very finicky sometimes.</p><p>A couple of points to note: Enabling Bluetooth mode on the controller will permanently and irreversibly disable its Wi-Fi capabilities, so if you want to continue using that on the final day of Stadia, hold off until after January 18. Headphones plugged into the controller will no longer work after the update is applied, nor will the Assistant and Capture buttons, although that&apos;s not because of the Bluetooth conversion but simply because Stadia will no longer exist. </p><p>And for some reason, you only have until December 31, 2023 to complete the update—you snooze, you lose, although it will continue to function as a standard wired controller.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Asus heard you like OLED so it slapped one on an Xbox controller ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/asus-heard-you-like-oled-so-it-slapped-one-on-an-xbox-controller/</link>
                                                                            <description>
                            <![CDATA[ Asus's new officially licenced Xbox controller is a little bit extra. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">tmyu3RV5uiiRnPwBgBvDDU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/jxMVgCgJifJFf6cLao4JhM-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 06 Jan 2023 12:04:11 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Katie Wickens ]]></dc:creator>                                                                <dc:description><![CDATA[ http://cdn.mos.cms.futurecdn.net/xAdFbbTjQTtTB46fsctbrN.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/jxMVgCgJifJFf6cLao4JhM-1280-80.jpg">
                                                            <media:credit><![CDATA[Asus]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The ROG Raikiri Pro lifestyle shot.]]></media:description>                                                            <media:text><![CDATA[The ROG Raikiri Pro lifestyle shot.]]></media:text>
                                <media:title type="plain"><![CDATA[The ROG Raikiri Pro lifestyle shot.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/jxMVgCgJifJFf6cLao4JhM-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Asus just hit us with an officially licensed Xbox gaming controller for CES 2023, the ROG Raikiri Pro. Not only does it hold a bunch of neat configuration features, it goes all out with an OLED panel slapped on the top.</p><p>That&apos;s not an OLED for gaming on, however. It&apos;s a 1.3-inch OLED display that can play custom animations, show mic status, or indicate battery life—the latter being our main concern in adding an OLED panel to anything wireless. </p><p>The little display is tucked neatly at the top of the controller, and comes as part of a a few design features for personalising your gameplay. The ROG Raikiri Pro also features a physical switch to change the trigger actuation, in case you prefer a shorter travel for your pew-pews. It even comes with a mute button, built in ESS DAC and 3.5 mm headphone jack.</p><p>Through the Armoury Crate app you can remap the Raikiri Pro&apos;s buttons, adjust joystick sensitivity and dead zones, and of course add some cute animations to its titchy OLED display.</p><div  class="fancy-box"><div class="fancy_box-title">Cut the cord...</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="DgcRv7GnQkujSW9efEMjZP" name="Steelseries Arctis Pro Wireless 2.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/DgcRv7GnQkujSW9efEMjZP.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Steelseries)</span></figcaption></figure><p class="fancy-box__body-text"><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-wireless-gaming-mouse/" target="_blank"><strong>Best wireless gaming mouse</strong></a>: ideal cable-free rodents<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-wireless-gaming-keyboard/" target="_blank"><strong>Best wireless gaming keyboard</strong></a>: no wires, no worries<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-wireless-gaming-headset/" target="_blank"><strong>Best wireless gaming headset</strong></a>: top untethered audio</p></div></div><p>Every gamer needs a controller. It&apos;s a fact of life. Eventually you&apos;re going to need to switch over from your trusty mouse and keyboard when you feel like a quick lap in <a href="https://www.pcgamer.com/f1-22-review/" target="_blank">F1 22</a>, or get fed up with the keyboard controls in <a href="https://www.pcgamer.com/the-witcher-3-review/" target="_blank">The Witcher</a>. Whether we <em>need</em> an OLED panel on it another matter, but I am very excited about the other features.</p><p>We&apos;ll have to wait and see about battery life, and if the price is right you may well find it sneaking its way onto our <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best gaming controller</a> roundup. For now we can safely say it&apos;s the most extra controller we&apos;ve seen at CES 2023.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ This funky-looking controller is at the center of Alienware's prototype home game streaming ecosystem  ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/this-funky-looking-controller-is-at-the-center-of-alienwares-prototype-home-game-streaming-ecosystem/</link>
                                                                            <description>
                            <![CDATA[ Concept Nyx wants you to stop fighting over the TV. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3Gv7pDr3KQL7KRruo4Ce3j</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/P8Ez4qRvAU7e3D6NwgzKY8-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 03 Jan 2023 14:01:45 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ jorge.jimenez@futurenet.com (Jorge Jimenez) ]]></author>                    <dc:creator><![CDATA[ Jorge Jimenez ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/m5hCNTacYmptKhTTGWiJte.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/P8Ez4qRvAU7e3D6NwgzKY8-1280-80.jpg">
                                                            <media:credit><![CDATA[Future - Jorge Jimenez]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Concept Nyx controller in someone&#039;s hands]]></media:description>                                                            <media:text><![CDATA[Concept Nyx controller in someone&#039;s hands]]></media:text>
                                <media:title type="plain"><![CDATA[Concept Nyx controller in someone&#039;s hands]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/P8Ez4qRvAU7e3D6NwgzKY8-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>At CES 2022, Alienware unveiled Concept Nyx, a game streaming platform that lets a household of gamers stream games to multiple TVs simultaneously from a single, powerful gaming PC. At-home streaming from a PC <a href="https://www.pcgamer.com/alienware-ces-2022-concept-designs/" target="_blank">isn&apos;t a new concept</a>, though Alienware is looking to streamline the experience, starting with the controller. </p><p>I actually got my hands on a Concept Nyx game controller at a recent Alienware event. While I didn&apos;t play any games, I did get to play with many of the controller&apos;s features. </p><p>The first thing you notice about the Nyx controller is that instead of a proper d-pad, it&apos;s got a circular touchpad that acts as a mouse for navigating in-game menus for titles traditionally meant for a keyboard and mouse. In fact, one of the pre-recorded gameplay demos I was shown had the touchpad mapped to skills in Guild Wars 2. I would have loved to see this in action for myself since touchpads can be a bit finicky when they act as buttons and not for movement. I&apos;m looking at you, <a href="https://www.pcgamer.com/steam-controller-2-oh-no-valve-want-to-make-it-happen/" target="_blank">Steam controller.</a> </p><p>Most of the demo was mainly spent tooling around with the controller&apos;s features and learning about its role in the game streaming ecosystem of Nyx. Think of the controller as your hall pass for accessing your games on any TV in the house. You could walk into any room with the Nyx app installed on the TV, which immediately pulls up your gaming profile. The Alienware logo on the center is a thumbprint reader that identifies you, loads up your game library, and even resumes your progress. The idea is that if you&apos;ve been kicked off the TV for whatever reason, you can simply pick up where you left off in a different room. </p><p>My favorite controller feature is the &apos;self-adjusting variable resistance thumb sticks.&apos; This means you can adjust the thumbstick tension on the fly without opening the controller or using a tool. In addition to the thumbsticks setting, you can customize these controllers&apos; haptics on a per-game basis. All this is controlled by two scroll wheels located at the bottom of the controller. No software is required. </p><div class="gfycat-video-container">                            <iframe height="600" width="500" src="https://gfycat.com/ifr/earlydistinctelephant">                            </iframe>                        </div><p>Multiple Nyx users can even share the screen to play two entirely different games simultaneously side-by-side as long as they have two Nyx controllers. It&apos;s something that sounds cool in theory but could be distracting unless you&apos;re sporting a massive TV in your living room. </p><p>In a press release, Dell and Alienware hope in less than a decade to use the computing power of Concept Nyx outside of gaming for mixed reality experiences and "virtual collaborative spaces" that feature "displays and other tools that remove the need for a VR headset." </p><div  class="fancy-box"><div class="fancy_box-title">Screen queens</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xFhVJfTnGrPAMYSnv6Mm5K" name="ips-vs-tn-05.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/xFhVJfTnGrPAMYSnv6Mm5K.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text"><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-gaming-monitor/" target="_blank"><strong>Best gaming monitor</strong></a>: Pixel-perfect panels for your PC<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-high-refresh-rate-monitor-for-gaming/" target="_blank"><strong>Best high refresh rate monitor</strong></a>: Screaming quick screens<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-4k-monitors-for-gaming/" target="_blank"><strong>Best 4K monitor for gaming</strong></a>: When only high-res will do<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-4k-tv-for-gaming/" target="_blank"><strong>Best 4K TV for gaming</strong></a>: Big-screen 4K PC gaming</p></div></div><p>Of course, the folks at Alienware reiterated that this is a concept, and there are no plans for Concept Nyx to hit the market anytime soon. The way it was explained, it pretty much wanted to see how many "dream features" could be squeezed into a prototype. However, I&apos;d imagine if a controller like this were ever sold, it wouldn&apos;t be cheap. <br><br>The company is no stranger to showing off wild concepts to the public that seem like they would have commercial potential, only never to be heard from again, like its version of the Steam Deck, <a href="https://www.pcgamer.com/i-tried-out-alienwares-ridiculous-handheld-gaming-pc-and-it-made-me-want-a-switch-pro/" target="_blank">Concept UFO</a>, a few years ago at CES. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Steam Controller 2. Oh no, Valve 'want to make it happen' ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/steam-controller-2-oh-no-valve-want-to-make-it-happen/</link>
                                                                            <description>
                            <![CDATA[ "I think it's likely that we'll explore that... it's something we wanted as well." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">vET9LZpMFNHCqMFY485iXb</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/PX3X2DASN3opDpyoKDTuof-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 16 Dec 2022 14:34:59 +0000</pubDate>                                                                                                                                <updated>Mon, 15 Jun 2026 15:01:30 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ dave.james@futurenet.com (Dave James) ]]></author>                    <dc:creator><![CDATA[ Dave James ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/PX3X2DASN3opDpyoKDTuof-1280-80.jpg">
                                                            <media:credit><![CDATA[null]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Steam Deck with Steam controller]]></media:description>                                                            <media:text><![CDATA[Steam Deck with Steam controller]]></media:text>
                                <media:title type="plain"><![CDATA[Steam Deck with Steam controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/PX3X2DASN3opDpyoKDTuof-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I had hoped this day would never come. I hoped I&apos;d never have to write this story. But Valve wants to make a Steam Controller 2 happen. Now, I know that for some of you, for some reason, that will make for wonderful reading, that you&apos;ll be ecstatic at the news that Gabe&apos;s gang is looking to create a new version of its hollow, awkward, jack-of-all-trades-master-of-none controller.</p><p>But you&apos;re obviously wrong to be excited. The original Steam Controller was rubbish, and deserved to be discontinued way earlier than its 2019 kill date.</p><p>I mean, I didn&apos;t always feel like that. Gabe unveiled the first Steam Machines during CES circa 2014 at a surprisingly intimate off-Strip soirée, and that&apos;s where I got my hands on some production prototypes of the Steam Controller. And it felt good. Solid, actually kinda responsive, but admittedly with a steep learning curve.</p><p>The steep learning curve remained when we got the final units sent through, but they no longer felt good. They felt cheap and hollow, and I still retch just thinking of those rear-placed buttons.</p><p>And so when I read the <a href="https://www.theverge.com/23499215/valve-steam-deck-interview-late-2022" target="_blank">Verge interview</a> asking <a href="https://www.pcgamer.com/steam-deck-review/" target="_blank">Steam Deck</a> designer, Lawrence Yang, about the prospect of making a new version of the old pad, my blood ran cold.</p><p>"Yeah, we want to make it happen," says Yang. "It&apos;s just a question of how and when."</p><p>"I think it&apos;s likely that we&apos;ll explore that because it&apos;s something we wanted as well," he continues. "Right now, we’re focusing on the Deck."</p><p>The fact that I&apos;ve been so impressed with the Steam Deck in terms of its build quality and effectiveness does mitigate some of my concerns, and the <a href="https://www.pcgamer.com/valve-index-review/" target="_blank">Index VR HMD</a> is one of the best around, so Valve&apos;s most recent hardware ventures have yielded great results.</p><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="JARYSgBLBsGsKWxePQJ3EP" name="valve-index-001.jpg" alt="Valve Index virtual reality headset on a table front right angle." src="https://cdn.mos.cms.futurecdn.net/JARYSgBLBsGsKWxePQJ3EP.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div  class="fancy-box"><div class="fancy_box-title">Steam in your hands</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ABRLNJQk85rFaVGxdZ529F" name="Steamdeck-elden-ring-1.JPG" caption="" alt="Steam Deck with an image from Elden Ring overlayed on the screen" src="https://cdn.mos.cms.futurecdn.net/ABRLNJQk85rFaVGxdZ529F.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future, FromSoftware)</span></figcaption></figure><p class="fancy-box__body-text"><a data-analytics-id="inline-link" href="https://www.pcgamer.com/steam-deck-review" target="_blank"><strong>Steam Deck review</strong></a>: Our verdict on Valve&apos;s handheld PC.<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-steam-deck-accessories-right-now/" target="_blank"><strong>Accessories for the Steam Deck</strong></a>: Get decked out<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/steam-deck-availability-delivery-date/" target="_blank"><strong>Steam Deck availability</strong></a>: How to get one.<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/valve-steam-deck-battery-life" target="_blank"><strong>Steam Deck battery life</strong></a>: What&apos;s the real battery life of the new device?<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/steam-deck-emulation-installation" target="_blank"><strong>Steam Deck - The emulation dream machine</strong></a>: Using Valve&apos;s handheld hardware as the ultimate emulator.</p></div></div><p>Though there&apos;s no guarantee that a Steam Controller 2 would actually be made by Valve itself. "It&apos;s definitely something where we’d be excited to work with a third-party or explore ourselves," says Yang.</p><p>Who would you trust to make a decent second-gen Steam Controller? Razer, Logitech, Scuf?</p><p>Fundamentally, however, I still feel for a desktop PC, that can have either a dedicated controller or keyboard and mouse plugged into it, I don&apos;t think Valve&apos;s responsive touchpads offer a solution that betters either of them. They&apos;re great on the Steam Deck because of what the device is—you can&apos;t use any of those other peripherals with it and maintain its handheld orientation.</p><p>I&apos;m aware of the love others have for the OG Steam pad, and of the expected cries of not giving it enough chance, that if I had only persevered I&apos;d find that it&apos;s almost as good as a mouse and keyboard. But hey, I&apos;ve got a mouse and keyboard, thanks.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ There's now an official remake of the Xbox 360 Controller ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/theres-gonna-be-an-official-remake-of-the-xbox-360-controller/</link>
                                                                            <description>
                            <![CDATA[ I don't get it, but you do you, boo. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Ub9HYeb4C6hjX4u3W597mQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vCYbZG3xdVDurQGCJab6mU-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Wed, 23 Nov 2022 00:36:49 +0000</pubDate>                                                                                                                                <updated>Sat, 26 Nov 2022 20:23:20 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jonathan Bolding ]]></dc:creator>                                                                                                                                                                                                                                                                    <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/vCYbZG3xdVDurQGCJab6mU-1280-80.png">
                                                            <media:credit><![CDATA[Hyperkin and Xbox]]></media:credit>
                                                                                                                                                                        <media:description><![CDATA[Yep. That&#039;s a 360 Controller alright.]]></media:description>                                                            <media:text><![CDATA[Hyperkin Xenon remake of the Xbox 360 controller]]></media:text>
                                <media:title type="plain"><![CDATA[Hyperkin Xenon remake of the Xbox 360 controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vCYbZG3xdVDurQGCJab6mU-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>An official remake of the Microsoft Xbox 360 controller is on the way courtesy of gaming peripherals manufacturer <a href="https://www.pcgamer.com/tag/hyperkin/" target="_blank">Hyperkin</a>. Hyperkin plans to reintroduce the controller to market as the Hyperkin Xenon, named after the Xbox 360&apos;s codename. The updated controller is intended to be faithful to the original design, but will gain some modern features. </p><p>The Hyperkin Xenon will have a modernized menu, view, and share buttons, and will gain a 3.5mm headphone jack alongside a USB-C cable. You&apos;ll be able to get it in 360-era Xbox white as well as black, pink, and red.</p><p>Hyperkin is a name you might have heard before if you&apos;re a retro gaming enthusiast, or it&apos;s a name you&apos;ve heard because you know about how they revived the long-lost Duke, the first Xbox&apos;s giant controller. The one <a href="https://www.pcgamer.com/what-its-like-playing-pc-games-with-the-infamously-massive-duke-xbox-controller/" target="_blank">so big you can&apos;t really use it</a>.</p><p>"Someone is young enough to be referring to this as the <em>&apos;original&apos;</em> Xbox controller to their friends," said PC Gamer Senior Editor <a href="https://www.pcgamer.com/author/wes-fenlon/" target="_blank">Wes Fenlon</a>, a sentence which caused me a certain amount of consternation. I&apos;m now old enough to have a game generation in which I purposely <em>skipped</em> owning a console be considered retro, I guess. At 17 years of age the Xbox 360 controller is not yet ancient... but compared to hardware released this year it&apos;s as old as a Sinclair ZX80 or Atari 800 was when the Nintendo 64 came out. Or as old as the Sega Mega Drive was when the Xbox 360 released.</p><p>Hyperkin&apos;s Xenon design is impressive, I&apos;ll admit, and lots of people will be thrilled to be able to buy a brand-spanking-new controller in their favorite style. It even has marketing! Packaging!</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:750px;"><p class="vanilla-image-block" style="padding-top:77.33%;"><img id="2dnMX76w6wRArd2h9nGChU" name="Xenon_Fact_Sheet_11_22_22.png" alt="Hyperkin Xenon remake of the Xbox 360 controller" src="https://cdn.mos.cms.futurecdn.net/2dnMX76w6wRArd2h9nGChU.png" mos="" align="middle" fullscreen="" width="750" height="580" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Hyperkin and Xbox)</span></figcaption></figure><p>But I gotta ask... what&apos;s the point of remaking this? The <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best PC controllers</a> are evolutions of the 360 controller&apos;s design. And you can buy them... everywhere. Still, 17 years later, you can find them in thrift or charity shops and littering online boards like craigslist. You can find a thousand knockoffs brand new for $15-20 on any given game marketplace. It has been for years my controller of choice for just that reason: If it stops working I can get a new one for $5 tops. Sure some new buttons are cool, but you don&apos;t <em>need</em> them unless you&apos;re using a current-gen console.</p><p>Either way, if that remake of The Duke was for someone, this remake is for a lot larger group of someones. You can actually fit your hands around it, after all.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Razer's new PS5 controller costs half as much as the console itself ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/razers-new-ps5-controller-costs-half-as-much-as-the-console-itself/</link>
                                                                            <description>
                            <![CDATA[ Definitely beats your buddy's greasy MadCatz pad. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3p6sHtsQBP5bPjpMjdK3wP</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/7Nb6gJw8xKE5k9o9emkQae-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 10 Nov 2022 22:43:17 +0000</pubDate>                                                                                                                                <updated>Sat, 26 Nov 2022 20:22:37 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ ted.litchfield@futurenet.com (Ted Litchfield) ]]></author>                    <dc:creator><![CDATA[ Ted Litchfield ]]></dc:creator>                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/7Nb6gJw8xKE5k9o9emkQae-1280-80.jpg">
                                                            <media:credit><![CDATA[Razer]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Razer Wolverine PS5 controller in synthwave environs]]></media:description>                                                            <media:text><![CDATA[Razer Wolverine PS5 controller in synthwave environs]]></media:text>
                                <media:title type="plain"><![CDATA[Razer Wolverine PS5 controller in synthwave environs]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/7Nb6gJw8xKE5k9o9emkQae-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Razer has announced a new high-end PS5 gamepad to compete with luxury offerings like Sony&apos;s upcoming DualSense Edge or Microsoft&apos;s Xbox Elite controllers on PC. <a href="https://www.razer.com/console-controllers/razer-wolverine-v2-pro" target="_blank">Razer&apos;s Wolverine V2 Pro</a> has an eye-watering $250 price tag, and includes the requisite rear paddle buttons and swappable thumb pads while also boasting "mecha-tactile" button switches and "hyperspeed wireless" through a special dongle⁠—presumably to cut back on input latency?</p><p>I have no doubt this thing will impress when it comes to build quality and general feel⁠⁠—at this price, it better be the most premium-feeling controller I&apos;ve ever laid hands on. However, I&apos;m not seeing a killer feature here to justify that price tag. The Xbox-style layout could be an advantage to PS5 players who prefer it, I suppose, but the customizability, high-end button action and potentially improved wireless aren&apos;t the sort of slam dunks to justify a $50 premium over the <a href="https://direct.playstation.com/en-us/accessories/accessory/dualsense-edge-wireless-controller.1000033578?emcid=pa-co-421875&gclid=Cj0KCQiA37KbBhDgARIsAIzce14ltS032pafGyktKaJtSc0E4Xgsd9JfwIIuU6wG5Mn4Xs6SJ9rEqs4aAoNUEALw_wcB&gclsrc=aw.ds" target="_blank">DualSense Edge</a> or $100-$150 over the Xbox Elite V2.</p><p>For this price, I&apos;d really want to see Hall effect analog sticks⁠—that&apos;s the newfangled, high-end, purportedly drift-proof solution already making its way to some controllers and aftermarket analog stick modules. On the PC side, I can&apos;t believe Microsoft&apos;s Xbox Elite controller, <em>the </em>trendsetter for high-end gamepads, now looks like a reserved, fiscally responsible choice. </p><p>The Xbox Elite can also now be bought with custom colors, and that&apos;s the first thing that&apos;s genuinely tempted me to blow that much scratch on a pad. That Wolverine&apos;s locked in a PS5-standard colorway of 2009 Apple Store milk white, electric blue, and I can&apos;t think of a third modifier black.</p><p>While we&apos;ve given the Xbox Elite Series 2 our nod as the overall <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best controller for PC gaming</a>, I&apos;m still more than satisfied with my Xbox Core wireless controller. Honestly it feels delightfully retro and quaint to slot two double-As into that bad boy, and it lasted most of an Elden Ring playthrough on a single charge. Really though, controller design peaked with either the <a href="https://www.reddit.com/r/gaming/comments/bljcjo/i_work_at_a_small_gaming_store_this_monstrosity/" target="_blank">GameCube keyboard controller</a> or the <a href="https://www.youtube.com/watch?v=As8ODhvLiOc&ab_channel=BeyondReviews" target="_blank">Hori Tactical Assault Commander</a> half-gamepad, half-mouse. Our collective failure to adopt either is an indictment of our society.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/yrtuGnYDiZ6c8B63okYR6o.jpg" alt="Razer Wolverine V2 Pro lying face down, back paddles exposed" /><figcaption><small role="credit">Razer</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/dLghrZUaCypMsjEKVZPPAo.jpg" alt="Razer Wolverine V2 Pro from above" /><figcaption><small role="credit">Razer</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sbAYDgYf34xiyoudbd7Hzn.jpg" alt="Razer Wolverine V2 Pro at the edge of a desk with detachable thumbsticks pictured" /><figcaption><small role="credit">Razer</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6dpEYnMPLw4osa5dGdw2un.jpg" alt="Razer Wolverine V2 Pro from below" /><figcaption><small role="credit">Razer</small></figcaption></figure></figure>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ We made PC games into themed Xbox Elite controllers using Xbox Design Labs ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/we-made-pc-games-into-themed-xbox-elite-controllers-using-xbox-design-labs/</link>
                                                                            <description>
                            <![CDATA[ If you're having trouble choosing your personalised aesthetic, these might help. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">DdHyYS2m5xy5N4CkoFKb6S</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/mLGNCFk6nFJhcVe6DRbfVf-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 19 Oct 2022 06:01:16 +0000</pubDate>                                                                                                                                <updated>Wed, 19 Oct 2022 08:20:11 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Hope Corrigan ]]></dc:creator>                                                                <dc:description><![CDATA[ http://cdn.mos.cms.futurecdn.net/8GHv7ZUGwf8bhinBRgQGjb.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/mLGNCFk6nFJhcVe6DRbfVf-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Xbox elite design labs]]></media:description>                                                            <media:text><![CDATA[Xbox elite design labs]]></media:text>
                                <media:title type="plain"><![CDATA[Xbox elite design labs]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/mLGNCFk6nFJhcVe6DRbfVf-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/sH7kjXQE9pE" allowfullscreen></iframe></div></div><p>The <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best wireless gaming controller</a> you can get just got customisable, as Microsoft adds the <a href="https://www.pcgamer.com/xbox-elite-wireless-controller-series-2-review/" target="_blank">Xbox Elite Series 2 controller</a> to <a href="https://xboxdesignlab.xbox.com/en-au/controllers/elite-wireless-controller-series-2" target="_blank">Xbox Design labs</a>. This storefront allows you to choose the colours of various aspects of your controller, including face plates, triggers, buttons, and more. Then you can top it all off with a few accessories, and maybe even a name engraving. It allows you to get a great quality official Xbox controller, in colour varieties you&apos;re far less likely to see in the wild.</p><p>If you&apos;ve never had the pleasure, the Xbox Elite controllers are a lot like the regular ones, but better in every way. They come with heaps of customisation options allowing for more control than usual. Things like hair-trigger locks, changeable d-pads, and back paddles make for a significant upgrade over the standard affair. They also pack a longer lasting battery, but have the added weight, and price tag to go with it.</p><p>A <a href="https://xboxdesignlab.xbox.com/en-au/controllers/elite-wireless-controller-series-2" target="_blank">customisable Xbox Elite</a> starts at $149 USD or $220 AUD for a base model. Optional extras can be added for an additional cost, but can also be customised as you go.  Add a few things like engravings, extra components, and a carrying case and charging pack and you&apos;ll end up paying around $210 USD for your complete controller set up.</p><p>What&apos;s even better is most of the colours on offer look really nice. The metallic shine on the triggers, d-pads, and back panels gives off a classy vibe, while the bold thumbsticks and faceplates demand attention. Choosing the colours you might want is the hardest part, so I spent some time playing with the designer tool making controllers inspired by some of my favourite PC experiences.</p><p>One of my favourite games to waste time in over the past few years has been Genshin Impact. While I&apos;m not generally into Gacha games, I adore exploring the large open world and <a href="https://www.pcgamer.com/all-new-genshin-impact-characters-tier-list/" target="_blank">levelling up characters</a>, learning to combo new abilities to take down the spiral abyss. And by my side throughout these journeys the whole time has been my faithful companion and emergency food provision, Paimon. So I dedicate this controller to thee, Paimon, the best white floaty a traveller can have. </p><h2 id="paimon-inspired-xbox-elite-series-2-controller">Paimon inspired Xbox Elite Series 2 controller</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/AxbMQuARdwFsp59ytCZHs9.jpg" alt="Paimon Controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/77BKYpnxetqdV9qjXep8j9.jpg" alt="Paimon Controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wpHtW5YRtP5UDkFgDA8g8A.jpg" alt="Paimon Controller" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Another PC gaming favourite of mine has to be Overwatch. It was one of the first FPS I had personally played with a mouse and keyboard, always preferring to use controller where possible. Unfortunately, my old controller was no match for the mouse and keyboard skills on PC servers, but maybe I would have done a little better if I had one of these instead. This could be just what controller fans need to get the edge in <a href="https://www.pcgamer.com/overwatch-2-review/" target="_blank">Overwatch 2</a>.</p><h2 id="overwatch-inspired-controller">Overwatch inspired Controller</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Dfxvfxdjisxb3PJKHXjHYh.jpg" alt="Overwatch Controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CmFHkHnofHAMpC9AQRJJFh.jpg" alt="Overwatch Controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sUYFiPy7Vvw9vdyiq8cFQh.jpg" alt="Overwatch Controller" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The Wolfenstein reboots of the last couple of years have had to be some of my favourite single player shooters. In recent years, there&apos;s just something very cathartic about its thematic material, and these games do an excellent job of making you feel like a certified badass. Great story, great gameplay, all you need now is a great controller and with the iconic red and black aesthetic the game brings, it&apos;s going to be a hot one.</p><h2 id="wolfenstein-inspired-controller">Wolfenstein inspired controller</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Yb8fMraxYGXgx9ZVcnXeSK.jpg" alt="Wolfenstein Controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FMeeEqgmxrpxdkr39nUQcK.jpg" alt="Wolfenstein Controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wdxnbAkNrejHDMQgdWwcDK.jpg" alt="Wolfenstein Controller" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>After making a few of these controllers I wanted to explore some of the brighter face plates, especially that neon green. As soon as I slapped it on the Minecraft vibes were thick and strong, so we added a blue sky and a dirt filled d-pad. I kept the thumbsticks black on this one because it feels the most practical. They shouldn&apos;t show up dirt as easily, which is important especially with a controller that may be more likely to be used by kids.</p><h2 id="minecraft-inspired-controller">Minecraft inspired controller</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/S4aapSJicewzKcsWLhru8n.jpg" alt="Minecraft controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QgjwnwCZnjc8YdGpVxArym.jpg" alt="Minecraft controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qCGdE7yVprsX9Xdm5dQgTn.jpg" alt="Minecraft controller" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Ok but the purple face plate also looked rocking, and harkened back to a faint memory from my youth. That was how this mess, otherwise known as the Space Cadet Pinball inspired controller was made. It feels like Xbox Design Labs could use a few different shades of purple to make this one&apos;s overall look work a little better, but it still carries some of those cosmic vibes. There&apos;s nothing like getting a new high score on a Windows 95 machine that certainly wouldn&apos;t support this controller.</p><h2 id="space-cadet-pinball-inspired-controller">Space Cadet Pinball inspired controller</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/AgXGcAHryF73Fudik74tnV.jpg" alt="Space Cadet Pinball controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/PcSAfdnRy8YKkcLFZLjJeV.jpg" alt="Space Cadet Pinball controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Lbg7zhEk2ts9p7CvsbWw6W.jpg" alt="Space Cadet Pinball controller" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Of course when it comes to PC classics there are plenty to choose from. However, perhaps none have quite as iconic a colour scheme as the much beloved Portal series. Slap some white on it, a dash of orange, and a splatter of blue, and finish it off with black and you&apos;ve got yourself a machine that looks like it came right out of the Aperture Science labs. This Portal Gun themed controller would be the perfect companion for your PC cube.</p><h2 id="portal-themed-controller">Portal themed controller</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/RF5CkbtiDMrGsiHemY7PE7.jpg" alt="Portal themed controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SPVSA48g8ZsKt96f27Ck67.jpg" alt="Portal themed controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Ao4fe7zXZRQmcNMDsWc8V7.jpg" alt="Portal themed controller" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Lastly, while we&apos;re in the throws of The International, it felt right to make a Dota 2 themed controller. With the <a href="https://www.pcgamer.com/arcane-becomes-the-first-gaming-show-to-win-an-emmy/" target="_blank">wide success of the Netflix series Arcane,</a> combined with the fact that controller support was added to the game <a href="https://www.pcgamer.com/dota-2-gets-4-player-co-op-and-gamepad-support-for-christmas/" target="_blank">just last Christmas</a>, surely there&apos;s a sign here. Making a controller themed after your Dota fav is a great way to choose a colour scheme to work with, so I went with everyone&apos;s favourite explosive personality, Jinx.</p><h2 id="jinx-inspired-controller">Jinx inspired controller</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CrhHLZrfvUrX7NTWQVL6pf.jpg" alt="Jinx inspired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qMDTHaZxZESbWLAaQJg87g.jpg" alt="Jinx inspired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/3ps4qto3SzzMcHxaYpAkef.jpg" alt="Jinx inspired controller" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>It&apos;s worth noting that <a href="https://www.pcgamer.com/playstation-announces-its-own-xbox-elite-controller-rival/" target="_blank">PlayStation has recently announced it&apos;s own elite controller competitor</a>, so you might want to check that out before dropping hard cash. Though, even if you aren&apos;t necessarily ready to put the money down, playing with aesthetics in design lab is a pretty fun way to spend a work day. If you don&apos;t already have a theme in mind, choosing your favourite character or game to match it to can really help get those creative juices flowing. Just don&apos;t drop any on the controller, lest it permanently be demoted to player 2.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ PlayStation's fancy new controller will cost $200, releases in January  ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/playstations-fancy-new-controller-will-cost-dollar200-releases-in-january/</link>
                                                                            <description>
                            <![CDATA[ The ultra-customizable DualSense Edge wireless controller will launch early next year. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">rJM9tDwXJTBR6ZvVcfcbQG</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vQDjdS5qhSshL89iend9M7-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Tue, 18 Oct 2022 16:22:46 +0000</pubDate>                                                                                                                                <updated>Tue, 18 Oct 2022 16:24:51 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ jorge.jimenez@futurenet.com (Jorge Jimenez) ]]></author>                    <dc:creator><![CDATA[ Jorge Jimenez ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/m5hCNTacYmptKhTTGWiJte.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/vQDjdS5qhSshL89iend9M7-1280-80.png">
                                                            <media:credit><![CDATA[Sony PlayStation]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[PlayStation Dualsense Edge Controller]]></media:description>                                                            <media:text><![CDATA[PlayStation Dualsense Edge Controller]]></media:text>
                                <media:title type="plain"><![CDATA[PlayStation Dualsense Edge Controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vQDjdS5qhSshL89iend9M7-1280-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/UvmmWeov68s" allowfullscreen></iframe></div></div><p>The DualSense Edge was revealed earlier this year at <a href="https://www.pcgamer.com/playstation-announces-its-own-xbox-elite-controller-rival/"><u>Gamescom</u></a>. While it gives you everything you&apos;d expect from a DualSense controller, like haptic feedback and adaptive triggers, it&apos;s the new features Sony hopes will get you to spend the big bucks. I&apos;m not joking; the DualSense will cost you $200, with the replacement joystick modules costing $20 a piece. </p><p>The new wireless controller offers remappable buttons, adjustable trigger stops, and swappable joystick modules. You can even fine-tune your stick sensitivity and dead zones to your liking. The latter is a feature that makes one of my <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/"><u>favorite controllers</u></a> much more appealing, especially for a PC gamer. </p><p>The Edge has two remappable back buttons (Series 2 opts for four paddles if you&apos;re comparing) that can be swapped to either two half-dome or level buttons. However, it doesn&apos;t have a swappable d-pad either, so if you hate it, you&apos;re stuck with it.</p><p>One neat feature on the DualSense is the lockable connector housing that will ensure the USB Type-C cable stays put during intense Street Fighter 6 matches.</p><p>At $200, though, the Edge is more expensive than the $180 Xbox Elite Series 2 controller—an option that even comes with a charging case. Xbox does offer a boiled-down version of the Elite (the Series 2 &apos;Core&apos; controller) for $130. And if you want to customize an Elite controller using <a href="https://xboxdesignlab.xbox.com/en-us/configure/xbox-elite-wireless-controller-series-2"><u>Design Lab</u></a>, that could cost you up to $210, depending on your chosen extras. Though if you&apos;re looking for a controller loaded with extras for the PS5 that you can use on the PC, the Edge might be the controller you&apos;ve been waiting for. Just don&apos;t expect it to come cheap.</p><p>Here&apos;s everything that comes inside the DualSense Edge&apos;s carrying case: </p><ul><li>USB braided cable </li><li>2 Standard Caps</li><li>2 High Dome Caps</li><li>2 Low Dome Caps</li><li>2 Half Dome Back Buttons</li><li>2 Lever Back Buttons</li><li>Connector Housing</li></ul><p>The carrying case can be used as a charging case as well which I&apos;m personally excited about because it means I have a way of keeping the controller out of the sight of a destructive toddler who loves throwing game controllers around. RIP, my Blue Xbox Series X controller.<br><br>Sony is offering replacement joystick modules (sold separately) in case yours start to wear down after a while. You can simply buy new ones and pop them right into the controller instead of replacing the entire controller. No tools required.</p><p>Pre-orders for the DualSense Edge wireless controller open up on October 25. The controller and replaceable stick modules will be available first on <a href="http://direct.playstation.com/"><u>PlayStation&apos;s retail site</u></a> on January 26, 2023. They&apos;ll show up at other retailers worldwide on February 23, 2023. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ How to use the PlayStation 5 DualSense controller on PC ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/ps5-dualsense-controller-on-pc/</link>
                                                                            <description>
                            <![CDATA[ A quick walkthrough for getting the PS5 controller connected via Bluetooth or USB. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">V28rQh5BAmsacCS46M4PFM</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ur7X3sZ4Zd7pRmPk3guxvT-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 12 Oct 2022 23:47:12 +0000</pubDate>                                                                                                                                <updated>Fri, 01 May 2026 23:19:16 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ wesley@pcgamer.com (Wes Fenlon) ]]></author>                    <dc:creator><![CDATA[ Wes Fenlon ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/oLoGHTuSZDFZX6QdzCTj4R.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/ur7X3sZ4Zd7pRmPk3guxvT-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Sony DualSense controller on a wooden table top]]></media:description>                                                            <media:text><![CDATA[Sony DualSense controller on a wooden table top]]></media:text>
                                <media:title type="plain"><![CDATA[Sony DualSense controller on a wooden table top]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ur7X3sZ4Zd7pRmPk3guxvT-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The PlayStation 5's DualSense controller was a bigger deal than any console controller has been since the Nintendo Wii in 2006. Sony jammed its new pad full of fancier haptics and rumble motors while also refining the analog sticks and build quality, making for possibly its nicest pad ever. While third-party controllers have caught up a lot in recent years, particularly by switching to more reliable TMR sticks, the DualSense is still one of the nicest controllers you can plug into your PC. Or connect wirelessly via Bluetooth, which is way easier than it was years ago.</p><p>The era of PlayStation controllers being a pain to use on PC is past. It's trivial to hook up the PS5 controller now, and a bunch of games even support the DualSense's fancy features. You can find a full list <a href="https://www.pcgamingwiki.com/wiki/List_of_games_that_support_DualSense" target="_blank">on the PCGamingWiki</a>, but here are some recent ones that have native support: Crimson Desert, Death Stranding 2, Esoteric Ebb, 2XKO, Battlefield 6.</p><p>Even if games don't support the DualSense out of the box, with Steam it's quite simple to make the PS5 controller your everyday PC controller by just... plugging it in. If you want to play non-Steam games with the DualSense there are a couple more steps involved, but follow this step-by-step guide and you'll be up and running in just a couple minutes.</p><p>Here's  all you have to do to connect a PS5 controller to PC via Bluetooth or wired via USB.</p><h2 class="article-body__section" id="section-ps5-controller-on-pc-how-to-use-bluetooth-or-usb"><span>PS5 controller on PC: How to use Bluetooth or USB</span></h2><p>This part of the DualSense setup process is as straightforward as it gets. It's barely even a process, really. To connect the PS5 controller to your PC via USB, you're going to need a USB Type-C to USB-A cable for your PC (or a USB Type-C to Type-C cable if you happen to have a convenient USB-C port available on your case). </p><p>While the PlayStation 5 console comes with one packed in, the DualSense sold by itself doesn't. That's a bit of a cheapskate move, eh? Get your own cable, plug it in, and you're good. If you need a reliable USB-C cable, here's <a href="https://www.amazon.com/Anker-2-Pack-Premium-Charging-Samsung/dp/B07DC5PPFV/" target="_blank">a two-pack from Anker for ~$10</a>.</p><h2 id="dualsense-bluetooth-setup-on-pc">DualSense Bluetooth setup on PC</h2><p>To use the DualSense via Bluetooth, you'll need a USB Bluetooth adapter or a motherboard with Bluetooth built-in. To get connected, open the "Bluetooth & other devices" menu in Windows by <strong>pressing the Windows key and typing "Bluetooth."</strong> Then click "Add Bluetooth or other device" and the first item on the next menu that says "Bluetooth." Your PC will start searching for available devices.</p><p>On the DualSense, hold down the PlayStation logo button and the Share button (the small one to the left of the touchpad) until the LEDs around the touchpad begin flashing rapidly. Within a few seconds, a generic entry named "Wireless controller" should pop up in your Bluetooth devices list in Windows to connect to. Just click that to finish pairing.</p><p>If you need a USB Bluetooth adapter, <a href="https://www.amazon.com/Bluetooth-PC%EF%BC%8CTechkey-Computer-Wireless-Headphones/dp/B085LB5Y8M/">you can get an up-to-date Bluetooth 5.4 model for less than $10</a>.</p><a 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:1460px;"><p class="vanilla-image-block" style="padding-top:65.21%;"><img id="zCg5eXvx3jxy78hmAK6646" name="bluetooth connection.jpg" alt="Bluetooth menu" src="https://cdn.mos.cms.futurecdn.net/zCg5eXvx3jxy78hmAK6646.jpg" mos="" align="middle" fullscreen="1" width="1460" height="952" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/zCg5eXvx3jxy78hmAK6646.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div></figure></a><p>The DualSense will now be accessible in Windows! Many newer games support it natively, so if you're playing via GOG, the Epic Games Store or some other launcher, you can try booting it up and seeing if it recognizes the pad. If it doesn't, check the options menu to see if there are any controller-related options.</p><p>If your PS5 controller isn't being recognized, though, there's a good solution: Using Steam.</p><h2 class="article-body__section" id="section-ps5-controller-on-pc-steam-setup"><span>PS5 controller on PC: Steam setup</span></h2><p>Steam added basic support for the DualSense in 2020, and has continually improved the DualSense functionality since then. It's great! Using Steam is by far the easiest way to get your DualSense working on PC, <strong>even to play non-Steam games</strong>. I'll explain that in a moment.</p><p>To start, connect the DualSense to your PC via wire or Bluetooth as described above. Once you have it connected, open Steam and click Settings > Controller. From this part of the settings menu, you can now click "Desktop Configuration" to check out and customize the button layout.</p><p>You should see the DualSense is now recognized and listed as a PlayStation 5 controller. Steam will automatically configure the keybinds to mimic an Xbox controller layout; the Triangle button is Y, the Square button is X, etc.</p><p>You can choose Calibrate to tweak the joystick sensitivity, and Preferences to give the controller a name, enable/disable rumble, and configure the color and brightness of the LED strip around the touchpad.</p><a 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kv5TUtWxWaZ8Gi3VKkw7Tj" name="dualsense recognized.png" alt="DualSense in Steam" src="https://cdn.mos.cms.futurecdn.net/kv5TUtWxWaZ8Gi3VKkw7Tj.png" mos="" align="middle" fullscreen="1" width="2560" height="1440" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/kv5TUtWxWaZ8Gi3VKkw7Tj.png' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Steam)</span></figcaption></figure></a><p>One important tip here: <strong>make sure PlayStation Configuration Support is checked </strong>under "General Controller Settings"<strong> </strong>if you want to customize your DualSense controller's layout or gyro controls. With this button checked, you can press the PlayStation logo button on the controller in any Steam game to pull up Steam's controller configuration screen.</p><a 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="LGpqWJsZiibP3fyB8v3iYm" name="steam dualsense config.jpg" alt="DualSense config" src="https://cdn.mos.cms.futurecdn.net/LGpqWJsZiibP3fyB8v3iYm.jpg" mos="" align="middle" fullscreen="1" width="2560" height="1440" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/LGpqWJsZiibP3fyB8v3iYm.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Steam)</span></figcaption></figure></a><p>From the Desktop Configuration screen you can swap button bindings, change how the touchpad works (it can do separate left- and right-clicks) and also configure the gyroscope, if you want to use gyro aiming. You can also<a href="https://www.pcgamer.com/steam-controller-setup-guide/4/" target="_blank"> configure Action Sets and Action Layers</a> to enable totally different button bindings and then switch to them on the fly in-game. For example, if you only wanted to use gyro controls while in a plane in GTA, you could create an Action Set for that and trigger it by pressing a specific key anytime you hop in a plane.</p><p>If you just want your DualSense to work like any ol' gamepad, though, you can leave this screen alone, no tweaking required.</p><h2 class="article-body__section" id="section-ps5-controller-on-pc-with-non-steam-games"><span>PS5 controller on PC with non-Steam games</span></h2><p>If you want to use the DualSense in a game that you own on the Epic Games Store for example, there's a solution that should work for just about anything, even emulators. The easy way to do it: Bring Steam back into the picture.</p><p>Steam has an 'Add to library' feature for Windows executables that allows you to add other programs to your Steam library, and then make use of the Steam overlay. </p><p>As you can see in the image above, click the 'Games' menu in Steam, then choose the "Add a Non-Steam game to my library..." option to pull up a list of programs on your PC. In most cases, this should allow you to add a game and use a controller with Steam acting as the intermediary.</p><a 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:1589px;"><p class="vanilla-image-block" style="padding-top:58.46%;"><img id="Ejh8BTZDPcpicHdQBfjXaK" name="addtosteam.jpg" alt="Add a non-Steam game" src="https://cdn.mos.cms.futurecdn.net/Ejh8BTZDPcpicHdQBfjXaK.jpg" mos="" align="middle" fullscreen="1" width="1589" height="929" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/Ejh8BTZDPcpicHdQBfjXaK.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div></figure></a><h2 id="ds4windows-is-another-option">DS4Windows is another option</h2><p>If you prefer to configure the DualSense for non-Steam games without adding those games to your Steam library, wonderful community tool <a href="https://ds4-windows.com/download/ryochan7-ds4windows/" target="_blank">DS4Windows</a> added DualSense support. (Shouldn't it be DS5Windows? Hm, that doesn't sound quite as good).</p><p>Download DS4Windows and follow the simple <a href="https://ds4-windows.com/get-started/" target="_blank">getting started guide</a> to install it.</p><p>To use DS4Windows, connect your controller to PC via USB or Bluetooth as explained above with DS4Windows open, and you should then be able to customize your keybinds, change the LED and monitor the controller's battery level. DS4Windows will let you use the DualSense in any PC game with Xbox controller support.</p><h2 class="article-body__section" id="section-dualsense-features-pc-game-support"><span>DualSense features: PC game support</span></h2><div  class="fancy-box"><div class="fancy_box-title">CONTROLLER SETUP GUIDES</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vE46aS9AYNfeLLJQvLq9hN" name="da09a64c6e2122092ffaaed733f7df0d-650-80.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/vE46aS9AYNfeLLJQvLq9hN.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div></figure><p class="fancy-box__body-text"><strong>How to use a:</strong><br>- <a data-analytics-id="inline-link" href="https://www.pcgamer.com/ps3-controller-on-pc-guide/" target="_blank">PS3 controller on PC</a><br>- <a data-analytics-id="inline-link" href="https://www.pcgamer.com/how-to-use-a-ps4-controller-on-pc/" target="_blank">PS4 controller on PC</a><br>- <a data-analytics-id="inline-link" href="https://www.pcgamer.com/how-to-use-a-nintendo-switch-pro-controller-on-pc/" target="_blank">Nintendo Switch Pro controller on PC</a><br>- <a data-analytics-id="inline-link" href="https://www.pcgamer.com/xbox-one-controller-on-pc/" target="_blank">Xbox controllers on PC</a></p></div></div><p>So how many games actually support the DualSense features on PC, anyway? Tons!</p><p><a href="https://www.pcgamingwiki.com/wiki/Controller:DualSense" target="_blank">PCGamingWiki</a> keeps a list of games that use the DualSense features, but below are some highlights that support both Adaptive Triggers and haptic feedback. It's far from an exhaustive list. </p><p>There is a catch: For many, Steam Input has to be disabled for the features to fully work properly. Steam Input supports advanced haptic feedback, but only if the game is designed to take advantage of the controller's features <em>through</em> Steam Input. So if you're playing any of the below and not feeling the triggers or delicate rumble do their thing, try disabling Steam Input.</p><ul><li>Death Stranding 2</li><li>Marathon</li><li>Nioh 3</li><li>Metal Gear Solid Delta: Snake Eater</li><li>Call of Duty: Black Ops 7</li><li>Cronos: The New Dawn</li><li>Battlefield 6</li><li>Final Fantasy Tactics: The Ivalice Chronicles</li><li>Ninja Gaiden 4</li><li>Assassin's Creed Shadows</li><li>Grand Theft Auto 5 Enhanced</li><li>Marvel Rivals</li><li>Silent Hill 2</li><li>God of War Ragnarok</li><li>Final Fantasy 16</li><li>Warhammer 40,000: Space Marine 2</li><li>Star Wars Outlaws</li><li>Ghost of Tsushima Director's Cut</li><li>Animal Well</li><li>Horizon Forbidden West</li><li>Pacific Drive</li><li>Helldivers 2</li><li>Avatar: Frontiers of Pandora</li><li>Alan Wake 2</li><li>Star Wars Jedi: Survivor</li><li>Cyberpunk 2077</li><li>Genshin Impact</li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ How to use Nintendo Switch and Switch 2 Pro controllers on PC ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/how-to-use-a-nintendo-switch-pro-controller-on-pc/</link>
                                                                            <description>
                            <![CDATA[ The easiest way to connect Nintendo's Switch and Switch 2 Pro controllers to your PC using Bluetooth or USB. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">FzSNrCGzezNUQiuRrN45GA</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/burqANWajTizedxAsVkWkk-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 12 Oct 2022 23:11:07 +0000</pubDate>                                                                                                                                <updated>Mon, 15 Jun 2026 15:04:28 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ wesley@pcgamer.com (Wes Fenlon) ]]></author>                    <dc:creator><![CDATA[ Wes Fenlon ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/oLoGHTuSZDFZX6QdzCTj4R.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/burqANWajTizedxAsVkWkk-1280-80.jpg">
                                                            <media:credit><![CDATA[Nintendo]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Switch 2 Pro Controller front]]></media:description>                                                            <media:text><![CDATA[Switch 2 Pro Controller front]]></media:text>
                                <media:title type="plain"><![CDATA[Switch 2 Pro Controller front]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/burqANWajTizedxAsVkWkk-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>We may not (officially) be able to play Nintendo's games on PC, but nothing's stopping us from using Nintendo Switch controllers to play our PC games! I love the sturdy, premium-feeling Switch Pro controller and its seemingly eternal battery life, and if you've recently become the owner of a Switch 2, you're probably looking for something to do with that Pro controller in between big Nintendo releases. </p><p>It's easy to plug either of them in via USB and be up and gaming in just a couple minutes. And if you prefer gaming wirelessly over Bluetooth, I can guide you through setting that up, too (though for now, only for the Switch 1 Pro controller).</p><div  class="fancy-box"><div class="fancy_box-title">CONTROLLER GUIDES</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vE46aS9AYNfeLLJQvLq9hN" name="da09a64c6e2122092ffaaed733f7df0d-650-80.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/vE46aS9AYNfeLLJQvLq9hN.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div></figure><p class="fancy-box__body-text"><strong>How to use a:</strong><br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/ps5-dualsense-controller-on-pc/" target="_blank">PS5 controller on PC</a><br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/how-to-use-a-ps4-controller-on-pc/" target="_blank">PS4 controller on PC</a><br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/ps3-controller-on-pc-guide/" target="_blank">PS3 controller on PC</a><br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/xbox-one-controller-on-pc/" target="_blank">Every Xbox controller on PC</a></p></div></div><p>I recommend using Steam's built-in controller support to set up the Switch Pro controller on PC. It takes away any fussy setup and works practically instantly; if all the games you play are on Steam, there's no point in even thinking about other solutions. If you do want to play some non-Steam games, that's where the further instructions in this guide come in. I'll go over how to get Windows to recognize your Switch Pro controller's inputs with a third-party tool. It may not make our list of the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best PC controllers in 2025</a>, but if you already own one, you should absolutely put it to use.</p><p><strong>As of November 2025, Steam Input now supports the newer </strong><a href="https://www.amazon.com/Nintendo-SwitchTM-2-Pro-Controller-Switch/dp/B0F3VTFD6J" target="_blank"><strong>Switch 2 Pro controller</strong></a><strong> via USB, so it's just as easy to plug-and-play as the older model. </strong>Bluetooth doesn't work in Steam for the Switch 2 Pro Controller, however.</p><p>First I'll quickly go over the basics for both the Switch and Switch 2 Pro controllers in Steam via wired USB (or Bluetooth for the Switch 1 model only).</p><h2 class="article-body__section" id="section-switch-and-switch-2-pro-controller-on-pc-steam-setup"><span>Switch and Switch 2 Pro controller on PC: Steam setup</span></h2><p>Steam's built-in controller configurator recognizes the Switch and Switch 2 controllers as soon as you plug them in, which makes using the controller dead easy in any game in your Steam library (that has controller support, obviously).</p><p>Enabling it is extremely simple. Start by <em>*deep breath*</em> plugging the controller into your PC. You've got this!</p><a 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:1272px;"><p class="vanilla-image-block" style="padding-top:64.39%;"><img id="pSdpn4hnGDCnTgbJGEAviG" name="steam controller switch pro.jpg" alt="Steam Switch Pro Controller configuration" src="https://cdn.mos.cms.futurecdn.net/pSdpn4hnGDCnTgbJGEAviG.jpg" mos="" align="middle" fullscreen="1" width="1272" height="819" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/pSdpn4hnGDCnTgbJGEAviG.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: Valve)</span></figcaption></figure></a><p>Plugged in? Okay, next:</p><p><strong>1. Open Steam and the settings menu.</strong> Find the Controller tab and verify that it recognizes your controller. Scroll down to the setting for "Enable Steam Input for Switch Pro controllers" and tick it on. This will ensure the controller works even in games that don't natively support it.</p><p><strong>2.</strong> If you like your Pro controller with flip-flopped X/Y and A/B buttons, you can also enable <strong>Use Nintendo Button Layout</strong> so games default to it (Microsoft had to go and reverse them on the original Xbox, for some reason, and it's still confusing). If this option is not enabled, your Pro controller button presses will be treated like an Xbox controller.</p><p>You can also change your controls game-by-game by right-clicking that game in your library, selecting Manage > Controller layout, and remapping each button.</p><p><strong>3. </strong>While you're in the Controller menu, take the time to personalize your Switch controller by clicking Calibration & Advanced Settings. You can calibrate the joysticks, gyro, and tweak the brightness of the LED. If you ever feel the need to calibrate your controller, click Calibrate, set it on a flat surface, and follow the button prompts. </p><h2 class="article-body__section" id="section-switch-and-switch-2-pro-controller-on-pc-non-steam-games"><span>Switch and Switch 2 Pro controller on PC: Non-Steam games</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:1589px;"><p class="vanilla-image-block" style="padding-top:58.46%;"><img id="Ejh8BTZDPcpicHdQBfjXaK" name="addtosteam.jpg" alt="Add a non-Steam game" src="https://cdn.mos.cms.futurecdn.net/Ejh8BTZDPcpicHdQBfjXaK.jpg" mos="" align="middle" fullscreen="1" width="1589" height="929" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/Ejh8BTZDPcpicHdQBfjXaK.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div></figure><p>Using Steam is the <em>really</em> easy way to get this controller working. If you aren't playing games via Steam, using a Switch or Switch 2 Pro controller is still an option but it requires a little extra work, particularly for a Bluetooth connection. But the good news is that it's natively recognized in modern Windows 10/11, which helps speed things up.</p><p>The easiest solution for non-Steam games is to actually bring Steam back into the picture. <strong>Steam has an "Add to library" feature</strong> for Windows executables that allows you to add other programs to your Steam library, and then make use of the Steam overlay. This even works for the Nintendo GameCube/Wii emulator Dolphin!</p><p>As you can see in the image above, click the "Games" menu in Steam, then choose the "Add a Non-Steam game to my library..." option to pull up a list of programs on your PC. In most cases, this should allow you to add a game and use a controller with Steam as an intermediary. Hooray!</p><h2 class="article-body__section" id="section-switch-1-pro-controller-on-pc-bluetooth-connectivity"><span>Switch 1 Pro controller on PC: Bluetooth connectivity</span></h2><p>Right now, there's no good way to get the Switch 2 Pro controller working well via Bluetooth, but folks are working on it. I'll update this guide when a reliable method becomes available.</p><p>Here's what you'll need on-hand to get your Switch 1 connected via Bluetooth:</p><p><strong>Hardware</strong></p><ul><li>Nintendo Switch Pro controller</li><li>Ideal: <a href="https://www.amazon.com/Wireless-Bluetooth-Adapter-Nintendo-Switch-Raspberry/dp/B09M8CVMYF?th=1" target="_blank">8Bitdo wireless Bluetooth adapter</a> (optional)</li><li>Otherweise: Bluetooth dongle (or Bluetooth built into your PC)</li></ul><p><strong>Software</strong> </p><ul><li><a href="https://support.8bitdo.com/ultimate/usb_adapter.html" target="_blank">8Bitdo USB Adapter 2 software</a></li><li><a href="https://github.com/Davidobot/BetterJoy" target="_blank">BetterJoy</a> (if you don't use the 8Bitdo dongle)</li></ul><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:66.67%;"><img id="6oNe2xrV9cRtukczkhGUrY" name="" alt="8BitDo controller hub surrounded by controllers" src="https://cdn.mos.cms.futurecdn.net/6oNe2xrV9cRtukczkhGUrY.jpg" mos="" align="middle" fullscreen="" width="1500" height="1000" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: 8Bitdo)</span></figcaption></figure><h2 id="8bitdo-adapter-easy-bluetooth-and-xinput-support">8Bitdo adapter: Easy Bluetooth and XInput support</h2><p>The <a href="https://www.amazon.com/8Bitdo-Wireless-Controller-Raspberry-Commemorative/dp/B07S52TYFP" target="_blank">$20 8Bitdo Bluetooth adapter</a> helps you bypass most of the finicky setup below by handling the Bluetooth connection <em>and</em> making Windows play nice with the controller without any extra software. It'll make Windows see the Switch Pro controller like it would an Xbox gamepad, and supports the button/joystick inputs and motion controls (but not vibration).</p><p>To get it working, just put your controller in pairing mode with the sync button, then use 8bitdo's software to pair and configure it.</p><p>As a bonus, the adapter work on multiple consoles and with tons of other controllers, too, including the Switch Joy Cons, PS4 controller, Wii remotes, and more. Note that <strong>while the 8Bitdo wireless adapter is compatible with the Switch 2 console, it can't sync the Nintendo Switch 2 Pro controller to PC</strong>.</p><p>If you don't want to spend the $20, follow the guide below.</p><h2 id="the-slightly-harder-way-windows-installation-guide">The (slightly) harder way: Windows installation guide</h2><p><em>Note: You only need to follow these steps if you're not using the Switch Pro Controller through Steam.</em></p><p><strong>1. Plug your Switch Pro controller into the PC with a USB cable.</strong> You should be able to use the USB-A to USB-C cable that came with the controller, or you can use a USB-C to USB-C cable, if your PC has the appropriate port. Within a few seconds, Windows 10 should pop up with a new connected device: Pro Controller.</p><p>You're most of the way there! But because this is a DirectInput controller (like most gamepads other than the Xbox's), if you aren't using Steam's built-in controller interface, some games won't recognize the controller without some extra software.</p><p><strong>2. Download </strong><a href="https://github.com/Davidobot/BetterJoy" target="_blank"><strong>BetterJoy</strong></a><strong> and install it.</strong></p><p>BetterJoy is a piece of open source software specifically built to use the Switch Pro controller and joy-cons as generic XInput devices (and to make them easier to use with emulators). </p><p>Unzip BetterJoy, open the folder it created when you unzipped it, and head to the drivers folder within. Install its drivers and reboot as it instructs you to. That's pretty much the install process. Now it's time to connect that controller.</p><h2 id="the-slightly-harder-way-windows-bluetooth-setup">The (slightly) harder way: Windows Bluetooth setup</h2><figure class="van-image-figure pull-right inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:289px;"><p class="vanilla-image-block" style="padding-top:100.35%;"><img id="v4BJpXmZJj5J4NeA8kPYq7" name="betterjoy.png" alt="Betterjoy for Windows" src="https://cdn.mos.cms.futurecdn.net/v4BJpXmZJj5J4NeA8kPYq7.png" mos="" align="right" fullscreen="" width="289" height="290" attribution="" endorsement="" class="pull-right"></p></div></div><figcaption itemprop="caption description" class="pull-right inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: BetterJoy)</span></figcaption></figure><p><em>You only need to follow these steps if you want to play wirelessly and chose not to buy the 8Bitdo adapter for Bluetooth connectivity.</em></p><p>Note that if you decide to connect via Bluetooth, without using the 8Bitdo adapter method above, you cannot charge the controller while it's connected, so make sure its battery is topped off before you start.</p><p>First, disconnect it from your Switch by holding the small circular button on the top of the controller to the left of the USB-C port. (If your Switch is in the same room as your PC, I recommend turning it off, just to keep your Bluetooth environment clear. We also don't want it to know we're two-timin' it. You can easily reconnect your Pro controller to your Switch via cable.) </p><p>Pull up your Windows Bluetooth settings and start a search for new devices, then press the same small button on the top of your controller one more time. It should automatically pair after 30 seconds to a minute.</p><h2 id="using-your-switch-pro-controller-via-bluetooth-in-pc-games">Using your Switch Pro controller via Bluetooth in PC games</h2><p>BetterJoy works by reading DirectInput commands as XInput commands, which is what most modern games support. Now that it's installed, your Switch Pro controller should behave like an Xbox 360 controller in most games. But first you have to launch BetterJoy for Cemu (the name of the executable) from its install folder.</p><p>Once it's open, click the "Locate" button and it should find your Switch controller if it's paired via Bluetooth. Once connected, you can click Map buttons to change as desired.</p><p>And with that you're ready to game: your controller should show up and work in any game that an Xbox controller would.</p><p><em>Not a controller person? Here's a round-up of the </em><a href="https://www.pcgamer.com/best-gaming-keyboards/"><em>best gaming keyboards</em></a><em>, and </em><a href="https://www.pcgamer.com/the-best-gaming-mouse/"><em>best gaming mouse</em></a><em>.</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ PlayStation announces Xbox Elite Controller rival ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/playstation-announces-its-own-xbox-elite-controller-rival/</link>
                                                                            <description>
                            <![CDATA[ The PlayStation DualSense Edge adds a bunch of customization options. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">XtkQxD2f5AZhnJvDxBUrD8</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vQDjdS5qhSshL89iend9M7-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Tue, 23 Aug 2022 19:47:57 +0000</pubDate>                                                                                                                                <updated>Wed, 24 Aug 2022 13:49:54 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ jorge.jimenez@futurenet.com (Jorge Jimenez) ]]></author>                    <dc:creator><![CDATA[ Jorge Jimenez ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/m5hCNTacYmptKhTTGWiJte.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/vQDjdS5qhSshL89iend9M7-1280-80.png">
                                                            <media:credit><![CDATA[Sony PlayStation]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[PlayStation Dualsense Edge Controller]]></media:description>                                                            <media:text><![CDATA[PlayStation Dualsense Edge Controller]]></media:text>
                                <media:title type="plain"><![CDATA[PlayStation Dualsense Edge Controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vQDjdS5qhSshL89iend9M7-1280-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/R8G3hqReBIA" allowfullscreen></iframe></div></div><p>Sony dropped a surprise hardware announcement during the Gamescom Opening Night Live stream today. The DualSense Edge is the PlayStation 5&apos;s "first-ever high-performance, ultra-customizable controller," and one that could rival Xbox&apos;s excellent Elite Series 2 controllers. </p><p>The new controller features everything a standard DualSense controller offers plus a bunch of customization features, potentially making one of the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best PC controllers</a> gaming even more appealing. </p><p>The buttons on the PS5 DualSense Edge can be completely remapped, and stick sensitivity and dead zones can be tuned. You can even reduce the trigger travel for faster inputs in shooters, much like the <a href="https://www.pcgamer.com/xbox-elite-wireless-controller-series-2-review/" target="_blank">Xbox Elite Series 2 wireless controllers</a>. </p><p>That&apos;s not the only similarity between the high-end controllers. The Edge will be packaged with three swappable stick caps (standard, high, and low dome) and two sets of back buttons (low and high dome). PlayStation will also sell replacement stick modules, so if you wear them down to the nub, you won&apos;t need to buy an entirely new controller. </p><p>The controller and all of its bits and bobs live inside its carrying case with a braided USB Type-C cable which can be locked into the controller using a special connector housing.</p><p>The Edge will feature the ability to save multiple control profiles that you can swap on the fly using the on-controller interface. That same interface manages your in-chat balance and game volume, as well.</p><p>"We wanted to build on the legacy of iconic PlayStation controllers by creating a controller that empowers players to experiment and personalize elements based on their own unique playstyle—whether they are a competitive gamer or someone who just enjoys having more options to customize their play," <a href="https://blog.playstation.com/2022/08/23/introducing-the-dualsense-edge-wireless-controller-the-ultra-customizable-controller-for-playstation-5/" target="_blank">said art director Daisuke Kurihara</a>. "The DualSense Edge wireless controller also features a number of thoughtful design touches that we hope players will enjoy, including a distinct DualSense controller-inspired black-and-white color scheme and a unique PlayStation Shapes pattern on the touch pad and trigger surfaces."</p><p>While no release date or pricing was revealed, more info should be coming in the next few months. Here&apos;s hoping we get some fun new colors.</p><p><em>Catch up with our full list of </em><a href="https://www.pcgamer.com/gamescom-announcements-trailers-opening-night-live-2022/"><em>Gamescom announcements</em></a><em> from Opening Night Live and check our </em><a href="https://www.pcgamer.com/gamescom-2022-schedule-dates/"><em>Gamescom schedule</em></a><em> to find out when to watch everything else.</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ You can now update your PS5 DualSense controller through your PC ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/you-can-now-update-your-ps5-dualsense-controller-through-your-pc/</link>
                                                                            <description>
                            <![CDATA[ No more need to buy a PS5 then. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">5F8tgXnLZGEYHCzAXo3NYm</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vgKouqgShXDP5GU3scWqsU-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 20 Apr 2022 14:46:54 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Robert Zak ]]></dc:creator>                                                                                                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/vgKouqgShXDP5GU3scWqsU-1280-80.jpg">
                                                            <media:credit><![CDATA[null]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Image of the DualSense controller from the front on in situ.]]></media:description>                                                            <media:text><![CDATA[Image of the DualSense controller from the front on in situ.]]></media:text>
                                <media:title type="plain"><![CDATA[Image of the DualSense controller from the front on in situ.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vgKouqgShXDP5GU3scWqsU-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The PlayStation 5 DualSense controller is a good &apos;un<em>—</em>one of the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best PC controllers </a>by our reckoning. And the fact that it managed to make it onto our list while neglecting the PC platform by not offering official drivers or the ability to update its firmware is testament to how hopelessly enamoured we are with its adaptive triggers and "the most nuanced rumble we&apos;ve ever felt" (despite very few games fully supporting these features).</p><p>So the PC-DualSense relationship is a complicated one, but it&apos;s just gotten a little bit simpler now that we can update the controller firmware directly through our PCs instead of having to plug it into a PS5. Just download the tool called &apos;<a href="https://controller.dl.playstation.net/controller/lang/en/fwupdater.html#sf255705398" target="_blank">Firmware updater for DualSense wireless controller</a>&apos; from the official PlayStation site, follow the instructions, plug in your DualSense via a USB cable, and you&apos;re away.</p><p>The DualSense doesn&apos;t have official PC drivers, but that&apos;s not too much of an issue as Steam makes it super-easy to use the controller both via USB and Bluetooth. The DualSense uses the older DirectInput API rather than the more universal XInput, which means that many games won&apos;t instantly recognise it. If you enable &apos;PlayStation Configuration Support&apos; in Steam&apos;s controller settings, then your controller will work with most games.</p><p>The bigger issue with DualSense on PC right now is that there aren&apos;t that many games utilising its star features yet. Deathloop, Far Cry 6, Metro Exodus, Death Stranding: Director&apos;s Cut and Assassin&apos;s Creed Valhalla are among the few games to support adaptive triggers and haptic feedback, which is pretty meagre pickings (though the fact that games like Genshin Impact are being updated to include DualSense support gives us hope).</p><p>Remember, if you&apos;re playing games with DualSense support through Steam, then you need to disable PlayStation Configuration Support to take advantage of it.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Only around 10% of Steam gaming sessions are played with a controller ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/only-around-10-of-steam-gaming-sessions-are-played-with-a-controller/</link>
                                                                            <description>
                            <![CDATA[ Keyboard and mouse remains the PC gamer's favorite way to play. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">GhHEPfnauMzUQGp2FtW9QL</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/xudS3QAjCraBtjC3bVgtsC-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 09 Mar 2022 17:57:26 +0000</pubDate>                                                                                                                                <updated>Wed, 09 Mar 2022 18:12:25 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ jorge.jimenez@futurenet.com (Jorge Jimenez) ]]></author>                    <dc:creator><![CDATA[ Jorge Jimenez ]]></dc:creator>                                                                <dc:description><![CDATA[ http://cdn.mos.cms.futurecdn.net/m5hCNTacYmptKhTTGWiJte.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/xudS3QAjCraBtjC3bVgtsC-1280-80.jpg">
                                                            <media:credit><![CDATA[Activision]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[cold war ]]></media:description>                                                            <media:text><![CDATA[cold war ]]></media:text>
                                <media:title type="plain"><![CDATA[cold war ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/xudS3QAjCraBtjC3bVgtsC-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Valve has released a bunch of interesting info in its <a href="https://steamcommunity.com/groups/steamworks/announcements/detail/3133946090937137591" target="_blank">Steam Year in Review 2021</a>, including controller usage statistics. According to Valve, there are currently 48 million controllers "registered by Steam users," and they&apos;re used in over 10% of all gaming sessions. I wonder how many of those are Steam controllers?</p><p>Back in February, a Steamworks update added a new controller <a href="https://steamcommunity.com/groups/steamworks/announcements/detail/3133946090937137591" target="_blank">usage stats page</a> where developers can see a detailed breakdown of how often players are using controllers in their games, and what kinds of controllers they&apos;re using. The data includes gamepads, flight sticks, racing pedals, and even dance pads. Basically, anything that plugs into your PC and can be used to play a game (<a href="https://www.pcgamer.com/watch-this-elden-ring-player-batter-godrick-with-a-controller-made-of-bananas/">like a banana</a>) but isn&apos;t a mouse and keyboard is counted as a controller. </p><p>It wasn&apos;t surprising to read that, <a href="https://store.steampowered.com/news/group/4145017/view/3061855517864424914">back in 2021</a>, over 70% of fighting and sports games were played with a controller (or a fight stick), while that number falls to below 1% for RTS games. Only 7-8% of players use a controller for first-person shooters. 3rd person action/adventure games like <a href="https://www.pcgamer.com/elden-ring/" target="_blank">Elden Ring</a> saw a near 50/50 split between controller and keyboard and mouse usage, which is surprising, as the genre often puts controllers first. Elden Ring&apos;s mouse and keyboard support <a href="https://www.pcgamer.com/elden-ring-pc-keyboard-mouse-controls/">isn&apos;t the best</a>, for example.</p><p>It seems a lot of PC gamers prefer to stick with keyboard and mouse controls, even in games that prioritize controllers.</p><div  class="fancy-box"><div class="fancy_box-title">Your next machine</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qJ4LRDHLhJVbYsaQTGdxtk" name="memorial-day-sales-alt2.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/qJ4LRDHLhJVbYsaQTGdxtk.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text"><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-gaming-pc/" target="_blank"><strong>Best gaming PC</strong></a>: The top pre-built machines from the pros<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-gaming-laptop/" target="_blank"><strong>Best gaming laptop</strong></a>: Perfect notebooks for mobile gaming</p></div></div><p>Valve offered examples of how using this data could help a dev improve controller support for their games. Suppose you notice that PlayStation controller usage falls below the global average (24%); you might want to check if the correct PS button prompts are displaying in its game instead of an Xbox controller.</p><p>Steam&apos;s year in review also noted that players logged over 21% more playtime in 2021 than 2020. The active <a href="https://www.pcgamer.com/steam-had-69-million-daily-users-in-2021/">daily users sit around 69 million</a>, with a concurrent count of 27.4 million. Steam also delivered over 32.9 exabytes of data, which is <em>a lot </em>of games downloaded in 2021.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Scuf Gaming's new controllers could be a great alternative to the PlayStation 5 DualSense for PC ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/scuf-gamings-pricey-new-controllers-could-be-a-great-alternative-to-the-playstation-5-dualsense-for-pc/</link>
                                                                            <description>
                            <![CDATA[ That pricing is a real worry though. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">jnVJMAKMTp3WqPqHQ6w2k6</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/iYqZpE4NZ447FZHFmVxTq4-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Thu, 09 Dec 2021 10:25:35 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Chris Szewczyk ]]></dc:creator>                                                                <dc:description><![CDATA[ http://cdn.mos.cms.futurecdn.net/XYGFZS6ueeuBrRQnbc6Vdm.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/iYqZpE4NZ447FZHFmVxTq4-1280-80.png">
                                                            <media:credit><![CDATA[Scuf Gaming]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Scuf Gaming&#039;s reflex PS5 and windows controller]]></media:description>                                                            <media:text><![CDATA[Scuf Gaming&#039;s reflex PS5 and windows controller]]></media:text>
                                <media:title type="plain"><![CDATA[Scuf Gaming&#039;s reflex PS5 and windows controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/iYqZpE4NZ447FZHFmVxTq4-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Scuf Gaming has released its highly anticipated range of PS5 controllers. The Corsair owned company received praise for its PS4, Xbox One, and Xbox X/S series of controllers and we&apos;re big fans of the company&apos;s <a href="https://www.pcgamer.com/scuf-instinct-pro-pc-controller-review/" target="_blank">Instinct Pro controller</a>. Gamers have been eager to see what the company would offer once it jumped into the PS5 fray, and now that wait is over.</p><p>The three Scuf Reflex controllers offer a lot of features, but they also come with very steep prices, to put it mildly. We wouldn’t normally cover a dedicated console peripheral, but the new Reflex controllers are Windows compatible too, so we&apos;re all good. There are three different models. The Reflex, Reflex Pro, and the first-person shooter optimised model, the Reflex FPS.</p><p>Oh, did we mention the price? The Reflex range begins at $200.</p><p>At that price, you&apos;d expect some serious build quality and functionality. By the look of things they deliver. The range features four directly programmable and removable rear paddles. These can be programmed on the fly, with no need for software and can be switched to suit different games. The Reflex is designed to improve upon the comfort of Sony’s DualSense controller with improved grips, interchangeable thumbsticks and anti-friction rings. Of course, they feature Bluetooth compatibility, USB Type-C recharging and a headset mute button.</p><div  class="fancy-box"><div class="fancy_box-title">Perfect peripherals</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="czbNLcab5b3bWpSup92ZRH" name="colorwave-logitech-g703.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/czbNLcab5b3bWpSup92ZRH.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Colorwave)</span></figcaption></figure><p class="fancy-box__body-text"><a data-analytics-id="inline-link" href="https://www.pcgamer.com/the-best-gaming-mouse/" target="_blank"><strong>Best gaming mouse</strong></a>: the top rodents for gaming<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-gaming-keyboard/" target="_blank"><strong>Best gaming keyboard</strong></a>: your PC&apos;s best friend...<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-gaming-headset/" target="_blank"><strong>Best gaming headset</strong></a>: don&apos;t ignore in-game audio</p></div></div><p>The Reflex Pro adds some further features including a ‘high-performance grip’ though we’ll need to test it ourselves to see if it’s worth the $30 price premium.</p><p>The Reflex FPS sells for a whopping $260. It’s Scuf’s first dedicated first-person shooter gamepad. It omits the potentially distracting vibration motors while making the controller lighter. Its triggers are designed for rapid activation, eliminating trigger pull. We can see the appeal of the Reflex FPS for console gamers, but it&apos;s hard to beat the good old keyboard and mouse combo when it comes to PC first-person shooting.</p><p>The Scuf Reflex controllers are available via the <a href="https://scufgaming.com/playstation5-scuf-reflex" target="_blank">Scuf store</a>; however, it appears as though the first batch has already sold out. Some gamers will find a nice surprise in their Christmas stocking this year, but the rest of us will have to wait until at least January to get a Relex controller in our hands.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ How to use a PS4 controller on PC: Wired and Bluetooth ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/how-to-use-a-ps4-controller-on-pc/</link>
                                                                            <description>
                            <![CDATA[ A step-by-step guide to using the DualShock 4 on PC via Bluetooth. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">WoXkpNCJoMReovauydTncQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/gzTgeftAzDaLATLxxHJ9sJ-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 16 Sep 2021 13:18:39 +0000</pubDate>                                                                                                                                <updated>Thu, 05 Mar 2026 00:04:24 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ wesley@pcgamer.com (Wes Fenlon) ]]></author>                    <dc:creator><![CDATA[ Wes Fenlon ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/qwn44PmXvtWBJy92mmPQUE.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/gzTgeftAzDaLATLxxHJ9sJ-1280-80.jpg">
                                                            <media:credit><![CDATA[Sony]]></media:credit>
                                                                                                                                                                        <media:description><![CDATA[How to use a DualShock 4 PS4 controller on PC ]]></media:description>                                                            <media:text><![CDATA[PlayStation 4 dualshock 4 controller with the Ask PC gamer logo in the top right, on a grey background]]></media:text>
                                <media:title type="plain"><![CDATA[PlayStation 4 dualshock 4 controller with the Ask PC gamer logo in the top right, on a grey background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/gzTgeftAzDaLATLxxHJ9sJ-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>When the PlayStation 4 launched in 2013, I was shocked to find how much I liked its reworked DualShock 4 controller. Did I like it <em>even more</em> than the trusty Xbox pad I'd been using for years and years? On PC not quite, because Microsoft's own controller was so easy to use. But it didn't take long for the PC to get great support for the DualShock 4. Now, thanks to Bluetooth connectivity and Steam, connecting a PS4 controller to PC and jumping into a game takes just seconds.</p><p>The DualShock 4 is still a comfortable, responsive controller, and there are reasons to keep one around: It's both lighter and smaller than the PS5 controller, which makes it an enduring favorite for some of us at PC Gamer. The design is a little bland compared to the <a href="https://www.pcgamer.com/ps5-dualsense-controller-on-pc/" target="_blank">PS5's DualSense controller</a> with its sleek curves and adaptive triggers, and modern third-party controllers now have more reliable Hall Effect or TMR analog sticks. But if you already have a DualShock 4? Sometimes the best controller is just the one that's most convenient.</p><p>Connecting the DualShock 4 to PC via Bluetooth is quick. If Steam is where you play everything, you'll be up and gaming in seconds: Steam has native support for the DualShock 4 and will work as soon as you connect it. Many modern games even recognize the PlayStation controller and will show you the correct button icons, or offer the option to manually switch to them in a settings menu. ⏹️🔺❌🟢!</p><p>I'll guide you through the Steam Input setup process to help you connect your PS4 controller on PC via Bluetooth or wired USB, which will only take a minute or two.</p><p><strong>I've also got some more advanced instructions for anyone who wants to play games that </strong><em><strong>aren't</strong></em><strong> on Steam with a DualShock 4.</strong> A tool called DS4Windows is the best solution.</p><h2 class="article-body__section" id="section-how-to-connect-your-ps4-controller-via-bluetooth"><span>How to connect your PS4 controller via Bluetooth</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="nXxhkws2PDpY9ZjTbCNzri" name="playstation-bluetooth-dongle.jpg" alt="PlayStation official bluetooth dongle, front and side angle, on a grey background" src="https://cdn.mos.cms.futurecdn.net/nXxhkws2PDpY9ZjTbCNzri.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/nXxhkws2PDpY9ZjTbCNzri.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: Sony)</span></figcaption></figure><h4 id="dualshock-4-bluetooth-pairing-quick-steps">DualShock 4 Bluetooth pairing: Quick steps</h4><ol start="1"><li>Hold controller's Share and PS button until it flashes</li><li>Hit the Windows key and type "Bluetooth" to open up the Bluetooth settings menu</li><li>Make sure your PC's Bluetooth is enabled</li><li>Select your DualShock 4 in the Windows Bluetooth menu when it appears</li><li>Pairing should happen automatically</li></ol><p>To connect your PS4 controller via Bluetooth, simply hold the small Share button and the central circular button simultaneously until the controller's backlight starts flashing. If you own the now-discontinued official PlayStation adapter, press the button on it until it starts flashing. Once both are flashing, they will automatically pair after a few seconds.</p><p>Don't have the official Sony adapter? That's okay—another Bluetooth adapter should work, too. For a PC with Bluetooth built-in (or if you have a generic USB dongle), just press the Windows key and type "Bluetooth" to open the Bluetooth & devices settings menu. Click "Add device" and look for the controller. Once it's flashing, you should see it listed here.</p><p>Luckily, you don't have to pair your controller every time you want to use it with the official adapter. As long as you don't unplug the adapter, it will save its last connection, so you can just tap your controller's central PlayStation button to reconnect it. Windows should also remember the controller, so if yo don't use it on a console in the interim, it should be quick to re-pair with your PC.</p><p>The official Sony DualShock 4 USB wireless adapter is the simplest Bluetooth option. You may have to hunt for it or spend a little more than you would on a standard Bluetooth dongle, but it's worth it for its out-of-the-box functionality if you find one on the cheap. Otherwise, roll with regular Bluetooth or pick the simplest route: a cable.</p><h2 class="article-body__section" id="section-how-to-use-a-ps4-controller-via-steam"><span>How to use a PS4 controller via Steam</span></h2><a 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:1272px;"><p class="vanilla-image-block" style="padding-top:64.39%;"><img id="mPm6aA8fEu97uHBNvGDQqb" name="steam controller menu.jpg" alt="Steam controller menu" src="https://cdn.mos.cms.futurecdn.net/mPm6aA8fEu97uHBNvGDQqb.jpg" mos="" align="middle" fullscreen="1" width="1272" height="819" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/mPm6aA8fEu97uHBNvGDQqb.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: Valve)</span></figcaption></figure></a><p>Follow these steps to connect your DualShock 4 to PC with Steam, and to also customize it to your liking:</p><h4 id="steam-input-quick-steps">Steam Input: Quick steps</h4><ol start="1"><li>Open Steam</li><li>Go to Settings in top left dropdown</li><li>Open Controller tab</li><li>Set PlayStation Controller Support to "Enabled in Games w/o Support"</li><li>Click Calibration & Advanced Settings</li><li>Calibrate joysticks and customize LED</li><li>Remap from Steam overlay in-game as needed</li></ol><p><strong>Thanks to official Steam support, there's almost no setup involved in getting your PS4 controller working in Steam</strong>. Just be sure to pair or plug in your controller before opening Steam or any Steam games, or else your controller may not be recognized.</p><p>If you run into any connection issues, closing and reopening Steam should do the trick. Otherwise, try using a USB 2.0 port instead of a USB 3.0 port. DualShock 4s are weird like that.</p><p>Once connected, navigate to Steam's settings menu—under the top left dropdown—to get everything dialed in. Under the Controller tab,  you should see your controller listed and can customize its name if you want to.</p><p>Click Calibration & Advanced Settings to fine-tune the joysticks, gyro, and disable/enable rumble. You can also click LED settings to change the color of the lighting. One important tip: Make sure you have PlayStation Controller Support set to "Enabled in Games w/o Support" to ensure the controller works in any Steam game.</p><p>While in-game, you should be able to press the controller's Guide button to open up the customization menu and change your button configuration as desired for that individual game. Most games also have community-submitted controller configurations to choose from.</p><p><strong>If there's a game you want to play with a DualShock 4 that isn't on Steam</strong>, you can open the Steam Games menu and click "Add a non-Steam game to my library." Find your game from the selection and click the check box next to it. Launch it via Steam and it should work just fine with Steam Input. But if this for some reason doesn't work with your chosen game, it's time for DS4Windows.</p><h2 class="article-body__section" id="section-how-to-install-ds4windows-for-non-steam-gaming"><span>How to install DS4Windows for non-Steam gaming</span></h2><a 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:1009px;"><p class="vanilla-image-block" style="padding-top:54.81%;"><img id="LDgE34EfRUhUXuece8kPuM" name="" alt="DS4 Windows menu screenshot" src="https://cdn.mos.cms.futurecdn.net/LDgE34EfRUhUXuece8kPuM.jpg" mos="" align="middle" fullscreen="1" width="1009" height="553" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/LDgE34EfRUhUXuece8kPuM.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div></figure></a><ol start="1"><li>Download <a href="https://www.microsoft.com/en-us/download/details.aspx?id=42642" target="_blank">Microsoft .NET Framework</a></li><li>Plug controller or Bluetooth dongle in</li><li>Download <a href="https://github.com/schmaldeo/DS4Windows/releases" target="_blank">DS4Windows</a> and extract</li><li>Open DS4Windows</li><li>Check connection in the Controllers tab</li><li>In Settings tab Hide DS4 Controller</li><li>Set Use Xinput Ports to one</li><li>Edit/Create a profile and remap</li></ol><p><em>If you're just playing Steam games, you don't need to install anything else! But to use DS4Windows for non-Steam games, you'll need to disable that Steam PlayStation Controller Support by setting it to "Not Enabled."</em></p><div  class="fancy-box"><div class="fancy_box-title">CONTROLLER SETUP GUIDES</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vE46aS9AYNfeLLJQvLq9hN" name="da09a64c6e2122092ffaaed733f7df0d-650-80.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/vE46aS9AYNfeLLJQvLq9hN.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div></figure><p class="fancy-box__body-text"><strong>How to use a:</strong><br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/ps3-controller-on-pc-guide/" target="_blank">PS3 controller on PC</a><br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/how-to-use-a-nintendo-switch-pro-controller-on-pc/" target="_blank">Nintendo Switch Pro controller on PC</a><br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/xbox-one-controller-on-pc/" target="_blank">Xbox controllers on PC</a><br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/ps5-dualsense-controller-on-pc/" target="_blank">PS5 DualSense controller on PC</a></p></div></div><p>First, download the newest Microsoft .NET Framework. If you're still running Windows 7, install the Xbox 360 controller driver next. This driver is included with Windows 8, 10 and 11.</p><p>Before you do anything else, plug in your PS4 controller with a micro-USB directly to your PC, or pair it through the Bluetooth menu, or with a USB wireless adapter. </p><p>Download and extract newest DS4Windows .zip file next, and open it up. You can ignore the DS4Updater if you already have the newest version. </p><p>Any controllers you've connected will be displayed under the Controllers tab. If not, close DS4Windows, reconnect your controller, then re-open the software. Don't worry about your controller's ID number, we won't be needing it.</p><p>Next, open the Settings tab in DS4Windows to configure a few things. Make sure the Hide DS4 Controller box is checked. This will prevent DS4Windows from conflicting with any game's default controller settings. For the same reason, make sure Use Xinput Ports is set to one. </p><a 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:1051px;"><p class="vanilla-image-block" style="padding-top:53.95%;"><img id="XVyF8aGNZiD7gjXA99uVV5" name="" alt="DS4 Windows configuration menu screenshot" src="https://cdn.mos.cms.futurecdn.net/XVyF8aGNZiD7gjXA99uVV5.jpg" mos="" align="middle" fullscreen="1" width="1051" height="567" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/XVyF8aGNZiD7gjXA99uVV5.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div></figure></a><p>From the Settings tab, you can also set DS4Windows to run at startup, or remain active in the background. You can also update DS4Windows directly from this tab by clicking Check for Update Now at the bottom left. Above that, you'll see Controller/Driver Setup. If you run into any issues, open this setup and follow the prompts to install any missing drivers. </p><p>DS4Windows works by reading your DualShock 4 as though it were an Xbox 360 controller. That means you won't get the correct Square/X/Triangle/Circle button icons by default in most games. Some games will give you the option to change, but either way, it'll now work with any game that has Xinput support—i.e. most every modern PC game that supports gamepads.</p><a 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:1077px;"><p class="vanilla-image-block" style="padding-top:59.15%;"><img id="HCknxJtTwvHMwCLfbroSKT" name="" alt="DS4Windows key mapping screenshot" src="https://cdn.mos.cms.futurecdn.net/HCknxJtTwvHMwCLfbroSKT.jpg" mos="" align="middle" fullscreen="1" width="1077" height="637" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/HCknxJtTwvHMwCLfbroSKT.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div></figure></a><p>You don't have to remap anything, but if you want to change some buttons or adjust sensitivity outside of in-game menus, just open the Profiles tab in DS4Windows. If you're feeling confident, click New to start a new profile, though this is easier said than done. Otherwise, select the DualShock 4 profile and click Edit.</p><p>Let's say you want to swap your bumpers and triggers. First, find L1/R1 and L2/R2 in the scroll wheel in the Controls section, or just click them on the virtual controller. You want to swap L1 with L2 and R1 with R2, so start by clicking L2.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1347px;"><p class="vanilla-image-block" style="padding-top:60.36%;"><img id="qgupYJQJAcnL6XantE24a5" name="" alt="DS4Windows keyboard mapping screenshot" src="https://cdn.mos.cms.futurecdn.net/qgupYJQJAcnL6XantE24a5.jpg" mos="" align="middle" fullscreen="1" width="1347" height="813" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/qgupYJQJAcnL6XantE24a5.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div></figure><p>Then, just click the button you want L2 to act as—in this case, L1. Voila, your left trigger will now act as your left bumper. Repeat this process with the other triggers and bumpers to complete the change and prevent redundancy. You can save this button setup as a separate profile and swap between profiles in the Controllers tab.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Xbox gamepad may get some DualSense features down the line, Phil Spencer says ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/xbox-gamepad-may-get-some-dualsense-features-down-the-line-phil-spencer-says/</link>
                                                                            <description>
                            <![CDATA[ Haptic motors and adaptive triggers will probably become the norm one day. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">7d2Dwwswd3JL6ukoLMB2fk</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/pqDPEzeTdmhngthY4mBmJN-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 15 Jul 2021 00:14:09 +0000</pubDate>                                                                                                                                <updated>Thu, 15 Jul 2021 09:08:55 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                <dc:description><![CDATA[ http://cdn.mos.cms.futurecdn.net/VHK6WWHuYbRyFX3dSXbr3G.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/pqDPEzeTdmhngthY4mBmJN-1280-80.jpg">
                                                            <media:credit><![CDATA[Microsoft]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Xbox trigger]]></media:description>                                                            <media:text><![CDATA[Xbox trigger]]></media:text>
                                <media:title type="plain"><![CDATA[Xbox trigger]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/pqDPEzeTdmhngthY4mBmJN-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The next iteration of the Xbox Series X / S gamepad could inherit some of Sony&apos;s DualSense features, Xbox boss Phil Spencer has indicated in a new interview. The PS5 controller is unique for its more powerful and precise haptic motors and adaptive triggers, and both are <a href="https://www.pcgamer.com/sonys-dualsense-controller-is-too-good-not-to-get-an-official-pc-driver/"><u>very impressive</u></a>. Meanwhile, the new Xbox gamepad feels pretty much like the old one (<a href="https://www.pcgamer.com/best-controller-for-pc-gaming/"><u>it&apos;s still great</u></a>, though).</p><p>“We’re definitely thinking about different kinds of devices that can bring more games to more places," Phil Spencer told <a href="https://youtu.be/5VPMMMTOUWw"><u>Kinda Funny</u></a> when questioned on Xbox hardware plans. "There’s probably some work that we’ll do on the controller. I think Sony’s done a nice job with their controller and we kind of look at some of that and there are things that we should go do."</p><p>If Microsoft inserts these features into the Xbox gamepad it&apos;ll probably mean day one compatibility with PC—at least for the company&apos;s first-party titles. Sony&apos;s DualSense can be used on PC, but no software natively supports its best tech, which is part of the reason why the Xbox gamepad is still the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/"><u>best controller for PC gaming</u></a>.</p><p>During the same interview Spencer also reaffirmed the company&apos;s ambivalence towards VR and AR, at least where Xbox is concerned.“We’re watching what happens on PC,” he said. “As it relates to VR specifically, the best experience that I’ve seen is Quest 2 and I just think its untethered [nature] and ease of use in its capability just doesn’t to me require it being connected to an Xbox in any way."</p><p>Cheers, <a href="https://www.videogameschronicle.com/news/phil-spencer-compliments-dualsense-and-suggests-xbox-could-update-its-controller/" target="_blank">VGC</a>.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Now's a good time to pick up a PC controller for less with these Prime Day deals ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/prime-day-2021-pc-controller-deals/</link>
                                                                            <description>
                            <![CDATA[ A handy alternative to have around when a keyboard and mouse won't cut it. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">hi7cnhvo4Fw7gTXyJcp8aK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/mETTsj3Hoy3zjcKFpju2mG-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 21 Jun 2021 19:35:25 +0000</pubDate>                                                                                                                                <updated>Mon, 21 Jun 2021 21:25:25 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                <dc:description><![CDATA[ http://cdn.mos.cms.futurecdn.net/JgVC8fm5U8WjajHxDxyKqM.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/mETTsj3Hoy3zjcKFpju2mG-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Amazon Prime logo next to two controllers on a blue background]]></media:description>                                                            <media:text><![CDATA[A Amazon Prime logo next to two controllers on a blue background]]></media:text>
                                <media:title type="plain"><![CDATA[A Amazon Prime logo next to two controllers on a blue background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/mETTsj3Hoy3zjcKFpju2mG-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>PC components are more or less out of the question when it comes to <a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals-2021/" target="_blank">Prime Day deals</a> but PC controllers are game on. We&apos;ve found a handful of deals on some decent PC controllers and listed them below so that you can alternate from your keyboard and mouse every once in a while.</p><p>There&apos;s a time and a place for a PC controller, and for me that&apos;s mostly when I&apos;m too tired to sit upright at a desk. Sometimes you just want to crash into the comfort of a sofa, controller in one hand and cold beverage in the other, and play something that doesn&apos;t require any aim whatsoever.</p><p>Similarly, you&apos;ll want a few controllers handy for co-op games, racing games (when you&apos;re not privy to a wheel), and really anything else you can think of that requires some degree of analogue control.</p><p>I have something to admit, though, I&apos;m a big fan of the standard Xbox Controller—one and the same with the kit bundled in the box with any Xbox console. It&apos;s a comfy and very well thought out design, and can be easily plugged into a PC for a little cross-platform action. In that regard, the standard <a href="https://www.amazon.com/dp/B08DFB488B" target="_blank">Xbox Wireless Controller</a> remains as good a choice as ever, despite not really seeing much in the way of Prime Day discounts.</p><p>That said, if you want something a little more unusual, there are plenty of alternatives enjoying a period of low prices over the next few days to potentially pick up. Check them out below.</p><div class="product"><a data-dimension112="e24cfa07-9733-4dbf-b2ef-ae9e09ef61a4" data-action="Deal Block" data-label="PowerA Spectra Enhanced Illuminated Wired Controller | $39.99" data-dimension48="PowerA Spectra Enhanced" href="https://www.amazon.com/dp/B07SBX48TY/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="W6EMFZGrkvzMfCYtjFxxG5" name="powera-controller.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/W6EMFZGrkvzMfCYtjFxxG5.jpg" mos="" align="middle" fullscreen="" width="1200" height="1200" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong>PowerA Spectra Enhanced Illuminated Wired Controller | </strong><a href="https://www.amazon.com/dp/B07SBX48TY/" target="_blank" data-dimension112="e24cfa07-9733-4dbf-b2ef-ae9e09ef61a4" data-action="Deal Block" data-label="PowerA Spectra Enhanced Illuminated Wired Controller | $39.99" data-dimension48="PowerA Spectra Enhanced"><del>$39.99</del><strong> $31.99 at Amazon (save $8)</strong></a><strong><br></strong>You really must love RGB lighting to want the Spectra Enhanced from PowerA, but I know you're out there so here's a deal for you. PowerA make some decent, cheaper Xbox controllers, and while I've not tried this exact model, I've used one just like it from PowerA and it delivers what you need, if not anything more. If you want something a little flashy, though, this could be a good choice.<a class="view-deal button" href="https://www.amazon.com/dp/B07SBX48TY/" target="_blank" rel="nofollow" data-dimension112="e24cfa07-9733-4dbf-b2ef-ae9e09ef61a4" data-action="Deal Block" data-label="PowerA Spectra Enhanced Illuminated Wired Controller | $39.99" data-dimension48="PowerA Spectra Enhanced">View Deal</a></p></div><div class="product"><a data-dimension112="f4639061-d6b4-4a30-bc79-da876a5d702f" data-action="Deal Block" data-label="Razer Wolverine Tournament Edition | $120" data-dimension48="Razer Wolverine Tournament Edition" href="https://www.amazon.com/dp/B076ZC7KQM" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="6A5oxLgwu8ivtHmeGnQFp7" name="razer-wolverine.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6A5oxLgwu8ivtHmeGnQFp7.jpg" mos="" align="middle" fullscreen="" width="1200" height="1200" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong>Razer Wolverine Tournament Edition | </strong><a href="https://www.amazon.com/dp/B076ZC7KQM" target="_blank" data-dimension112="f4639061-d6b4-4a30-bc79-da876a5d702f" data-action="Deal Block" data-label="Razer Wolverine Tournament Edition | $120" data-dimension48="Razer Wolverine Tournament Edition"><del>$120</del><strong> $75.99 at Amazon (save $44)</strong></a><br>Usually I'd call the Razer Wolverine far too expensive for a wired controller. It's getting up there alongside the Xbox Elite Controller. While I've happily used the Razer, that's not a match it stands a chance of winning. Yet this Prime Day Razer has seen fit to give this controller a hefty discount, and it looks a much better device for it. It's built for rapid actuation, which it does well, and it's pretty flashy, too.<a class="view-deal button" href="https://www.amazon.com/dp/B076ZC7KQM" target="_blank" rel="nofollow" data-dimension112="f4639061-d6b4-4a30-bc79-da876a5d702f" data-action="Deal Block" data-label="Razer Wolverine Tournament Edition | $120" data-dimension48="Razer Wolverine Tournament Edition">View Deal</a></p></div><div class="product"><a data-dimension112="fb30360e-6740-4f5b-9d8b-4f9cfc526c4c" data-action="Deal Block" data-label="PowerA Fusion Pro Wired Controller | $79.99" data-dimension48="PowerA Fusion Pro" href="https://www.amazon.com/dp/B07XQXQMR9" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="z47T55akcfiujXACvWib5Y" name="power-a-fusion.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/z47T55akcfiujXACvWib5Y.jpg" mos="" align="middle" fullscreen="" width="1200" height="1200" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong>PowerA Fusion Pro Wired Controller | </strong><a href="https://www.amazon.com/dp/B07XQXQMR9" target="_blank" data-dimension112="fb30360e-6740-4f5b-9d8b-4f9cfc526c4c" data-action="Deal Block" data-label="PowerA Fusion Pro Wired Controller | $79.99" data-dimension48="PowerA Fusion Pro"><del>$79.99</del><strong> $59 at Amazon (save $20.99)</strong></a><br>Knowing that I'm a fan of the Elite controller, perhaps it's no surprise then that PowerA's far more affordable alternative stands out to me. From the thumb sticks and paddles to even the case it comes in, the PowerA looks pretty familiar to me. For significantly less, it could be a good stand in for the Elite, although it must be said that I haven't taken this particular model out for a spin. A bit of a risk, then, but I wanted to include it for anyone out there chasing the Elite dream on a budget.<a class="view-deal button" href="https://www.amazon.com/dp/B07XQXQMR9" target="_blank" rel="nofollow" data-dimension112="fb30360e-6740-4f5b-9d8b-4f9cfc526c4c" data-action="Deal Block" data-label="PowerA Fusion Pro Wired Controller | $79.99" data-dimension48="PowerA Fusion Pro">View Deal</a></p></div><div class="product"><a data-dimension112="7c91e508-a271-479d-bd22-325bfa13f905" data-action="Deal Block" data-label="Logitech Flight Yoke System and Throttle Quadrant | $169" data-dimension48="Logitech Flight Yoke System" href="https://www.newegg.com/black-logitech-pro-flight-yoke-flight-control-system/p/N82E16826197226" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="nyMPdoYWsUPZz76WzDGGgJ" name="yoke-system.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/nyMPdoYWsUPZz76WzDGGgJ.jpg" mos="" align="middle" fullscreen="" width="1200" height="1200" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong>Logitech Flight Yoke System and Throttle Quadrant | </strong><a href="https://www.newegg.com/black-logitech-pro-flight-yoke-flight-control-system/p/N82E16826197226" target="_blank" data-dimension112="7c91e508-a271-479d-bd22-325bfa13f905" data-action="Deal Block" data-label="Logitech Flight Yoke System and Throttle Quadrant | $169" data-dimension48="Logitech Flight Yoke System"><del>$169</del><strong> $144 at Newegg with coupon code 63FANTECH398</strong></a><br>Next one is a little out of left field, but it's still a PC controller by anyone's reckoning. The Logitech Flight Yoke System would have been all the rage just last November, when Microsoft Flight Sim first came out, but now you can not only find them widely in-stock but also $25 off over at Newegg. If you're planning to take to the skies anytime soon... sorry I really had to stop myself writing a yoke pun there. It's a good bit of kit.<a class="view-deal button" href="https://www.newegg.com/black-logitech-pro-flight-yoke-flight-control-system/p/N82E16826197226" target="_blank" rel="nofollow" data-dimension112="7c91e508-a271-479d-bd22-325bfa13f905" data-action="Deal Block" data-label="Logitech Flight Yoke System and Throttle Quadrant | $169" data-dimension48="Logitech Flight Yoke System">View Deal</a></p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Rig Nacon Pro Compact wired controller review ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/rig-nacon-pro-compact-wired-controller-review/</link>
                                                                            <description>
                            <![CDATA[ Rig Nacon's affordable Pro controller finally debuts in the US. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">4ceDhhPEnaVmGyqb7Hq5r5</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/VncsvGAj9djDtkGYyiUzTN-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 14 May 2021 18:50:38 +0000</pubDate>                                                                                                                                <updated>Fri, 14 May 2021 18:53:17 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ jorge.jimenez@futurenet.com (Jorge Jimenez) ]]></author>                    <dc:creator><![CDATA[ Jorge Jimenez ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/m5hCNTacYmptKhTTGWiJte.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/VncsvGAj9djDtkGYyiUzTN-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                        <media:description><![CDATA[Rig Nacon&#039;s affordable Pro controller finally debuts in the US. ]]></media:description>                                                            <media:text><![CDATA[Rig Nacon Pro Compact wired controller review]]></media:text>
                                <media:title type="plain"><![CDATA[Rig Nacon Pro Compact wired controller review]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/VncsvGAj9djDtkGYyiUzTN-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>When Nacon acquired Rig last year, it gave the company a pathway into the North American market with a brand that&apos;s already pretty well established in gaming headsets. This means Nacon&apos;s catalog of gaming products, from gaming chairs to controllers, that were once only available in Europe are now available in the States. </p><p>One such product is the <a href="https://www.google.com/url?q=https://youtu.be/R3yXvnxzKMo&sa=D&source=editors&ust=1621012739563000&usg=AOvVaw07vPDugyzP9euRfEJshPi-">Rig Nacon Pro Compact</a>, a $50 wired controller with a smaller form factor geared towards the competitive gamer or anyone who finds the current Xbox Series X controller a bit too big. One might argue that the Xbox Series X controller shape might be the closest thing to the perfect controller size and shape, but you could agree to disagree.</p><p>Made for the Xbox Series S/X consoles and Windows 10 PCs, the Pro Compact ends up looking like the illegitimate love child of a Sony DualSense and Xbox Series X controller, the shape and contour taking after the Sony controller while sticking with the Xbox face buttons—though I wish the Rig simply stuck with one design inspiration instead of going for this hybrid approach.<br><br>The far-spread placement of the Menu, Share, and Options buttons are strange since it mimics the exact layout of the DualSense, not an Xbox controller. More than once, the Pro had me looking down when trying to pause a game. </p><p> That said, I do like the smaller shape of the Pro Compact as it fits comfortably for folks with smaller hands. The enlarged face buttons have a good feel to them and are ergonomically friendly, increasing reaction time and lessening hand fatigue (so it claims). The joysticks lack the textured grips you&apos;d find on other controllers, which is a bummer. That said, it didn&apos;t affect my performance in the few Apex Legends matches I played, even when using precision weapons like that pesky <a href="https://www.pcgamer.com/respawn-has-nerfed-apex-legends-pesky-new-bow/">new bow</a>.</p><p>As much as I love the Xbox controller, its d-pad feels too rough and uncomfortable for serious use in fighting games—the Pro&apos;s d-pad is a better overall feel than the Xbox&apos;s directional disc. To be fair, directional buttons are not easy to nail down even on some of the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/">best controllers</a>.</p><p>Another neat feature of the Pro Compact is it offers Dolby Atmos for free (usually $15) so long as you download the Dolby Access app. Simply plug in a headset in the 3.5mm port, and just like that, that headset now has positional audio and access to a suite of audio settings via the Dolby Access app. I haven&apos;t been sold on 3D audio just yet, but the number of custom EQ settings Dolby Access offers is appreciated as it turns most crappy headphones into something worth listening to. <br> </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/dBwPY2B7dTV8tPmzfqHSZR.jpg" alt="Future" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JPeQDZgftedBwwNRH26ubS.jpg" alt="Future" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/PQrPQbZ7cnQL45T8NNRiZQ.jpg" alt="Future" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/MV97Qh6wBpcW5LFDKJeXnL.jpg" alt="Future" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GzGjrK5h5GPdpoSrFiDawT.jpg" alt="Future" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4AP7ZRzsYqggvyP6UzVBnJ.jpg" alt="Future" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SzsKUBQob4cWYQ8bUvoTsJ.jpg" alt="Future" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mMijcrirpYsMMqvBKNrt4K.jpg" alt="Future" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Wi8qAuYy599SBEaSgW78WK.jpg" alt="Future" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xRDcG2qtK4BqqdYN2bQLiK.jpg" alt="Future" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The Nacon Pro Compact app has a surprisingly high level of customization options for button mapping, joystick response curves, and even trigger depths. If you spend a lot of time tweaking dead zones for Call of Duty: Warzone or Valorant, you&apos;ll feel right at home here.  <br><br>The Rig Nacon Pro Compact wired controller goes on sale May 20 wherever you buy videogames, and if you&apos;re the type of gamer who wants to shave picoseconds off your button clicks and trigger pulls, the Pro Compact is worth a look. If you love the existing Xbox controller look and feel, the Pro Compact&apos;s shape and button layout might be a tough sell for you and not worth the $10-$15 savings, especially with no wireless option. If you just need a wired budget controller, you&apos;ve got cheaper options out there <a href="https://www.pcgamer.com/powera-spectra-enhanced-wired-controller-review/">that we like</a>. </p><p><br></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Get an Xbox Wireless Controller 'Night Ops Camo' edition for just $40 right now ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/get-an-xbox-wireless-controller-night-ops-camo-edition-for-just-dollar40-right-now/</link>
                                                                            <description>
                            <![CDATA[ Save $30 on one our favorite game controllers with this deal. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">gfVe4axXii6b7H7DesrPrH</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/m2Zwnx4FNEn62dwnFa6xAH-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 13 Apr 2021 13:05:01 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ paul.b.lilly@gmail.com (Paul Lilly) ]]></author>                    <dc:creator><![CDATA[ Paul Lilly ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/SSYcX3JpTJvu9EcMTnFbuS.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/m2Zwnx4FNEn62dwnFa6xAH-1280-80.jpg">
                                                            <media:credit><![CDATA[Microsoft]]></media:credit>
                                                                                                                                                                        <media:description><![CDATA[Save $30 on one our favorite game controllers with this deal.]]></media:description>                                                            <media:text><![CDATA[Get an Xbox Wireless Controller &#039;Night Ops Camo&#039; edition for just $40 right now]]></media:text>
                                <media:title type="plain"><![CDATA[Get an Xbox Wireless Controller &#039;Night Ops Camo&#039; edition for just $40 right now]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/m2Zwnx4FNEn62dwnFa6xAH-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Microsoft&apos;s Xbox Wireless Controller is one of the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best PC controllers</a> around, and if you can make do with the previous generation model, you can snag one at an enticing discount right now—Microsoft is selling its Night Ops Camo Special Edition variant for $39.99.</p><p>That&apos;s $30 below list price, and $20 below what the regular Xbox Wireless Controller normally sells for. The only real downside is that this is not the latest revision that came out with the Xbox Series X, which sports a revised D-pad similar to the Xbox One Series Elite Series,  a share button, and a few other tidbits.</p><div class="product star-deal"><a data-dimension112="9153e0d8-55a7-44e1-b768-2eee7354f6f9" data-action="Star Deal Block" data-label="$69.99" data-dimension48="$69.99" href="https://www.microsoft.com/en-us/p/xbox-wireless-controller-night-ops-camo-special-edition/93jtkdq8b71z" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:801px;"><p class="vanilla-image-block" style="padding-top:93.76%;"><img id="9a95xHXmPJp8Cn6wV5L4HD" name="Xbox_Controller.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9a95xHXmPJp8Cn6wV5L4HD.jpg" mos="" align="middle" fullscreen="" width="801" height="751" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><div><span class="product__star-deal-label">Great controller, great price</span><p><strong>Xbox Wireless Controller - Night Ops Camo Special Edition |</strong> <a href="https://www.microsoft.com/en-us/p/xbox-wireless-controller-night-ops-camo-special-edition/93jtkdq8b71z" target="_blank" data-dimension112="9153e0d8-55a7-44e1-b768-2eee7354f6f9" data-action="Star Deal Block" data-label="$69.99" data-dimension48="$69.99"><del>$69.99</del> <strong>$39.99 at Microsoft Store (save $30)</strong></a><br>The Xbox Wireless Controller is excellent for playing games on PC, and is now available at a big discount.<a class="view-deal button" href="https://www.microsoft.com/en-us/p/xbox-wireless-controller-night-ops-camo-special-edition/93jtkdq8b71z" target="_blank" rel="nofollow" data-dimension112="9153e0d8-55a7-44e1-b768-2eee7354f6f9" data-action="Star Deal Block" data-label="$69.99" data-dimension48="$69.99">View Deal</a></p></div></div><p>Still, the previous generation model remains an excellent controller. It feels great in the hand, has proven to be reliable, and works great with PC games—nearly every game offers native support, whether the game uses <a href="https://www.pcgamer.com/controller-usage-on-steam-has-doubled-over-the-past-two-years/" target="_blank">Steam for input mapping</a> or the <a href="https://click.linksynergy.com/deeplink?id=kXQk6%2AivFEQ&mid=24542&u1=pcg-us-7161555419876840000&murl=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fwindows%2Fwin32%2Fxinput%2Fxinput-and-directinput" target="_blank">Windows Xinput API</a>.</p><p>The themed version that&apos;s up for grabs at a discount features a black, gray, and metallic gold camouflage pattern on the front and part of the back. And if you want a matching charging stand, you can find one on on sale for <a href="https://www.amazon.com/Controller-Gear-Night-Ops-Camo-Special/dp/B081NVKPQ2" target="_blank">$39.45 at Amazon</a> (save $10.54).</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Azeron Gaming Keypad review ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/azeron-gaming-keypad-review-performance/</link>
                                                                            <description>
                            <![CDATA[ A strange evolution of gaming keypad, the Azeron is something I didn't know I needed in my life. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">onLjCq7rvU6UEVsUgMr8hn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/F3yX6VWrqc6QskCesLoSBi-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 12 Mar 2021 17:36:38 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Katie Wickens ]]></dc:creator>                                                                <dc:description><![CDATA[ http://cdn.mos.cms.futurecdn.net/xAdFbbTjQTtTB46fsctbrN.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/F3yX6VWrqc6QskCesLoSBi-1280-80.jpg">
                                                            <media:credit><![CDATA[Azeron]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Azeron gaming keypad]]></media:description>                                                            <media:text><![CDATA[Azeron gaming keypad]]></media:text>
                                <media:title type="plain"><![CDATA[Azeron gaming keypad]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/F3yX6VWrqc6QskCesLoSBi-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The most striking thing about the Azeron Keypad is the aesthetic. At first glance it looks like something they&apos;d have used to interrogate prisoners in the late 1800s, except it comes in rainbow!</p><p>Honestly, it looks like the kind of novelty contraption you&apos;d wave off as a gimmick. And while I might get some people riled up if I were to suggest it being a worthy replacement for the sacred WASD, the Azeron Keypad has actually become integral to my gaming experience—I&apos;m loath to go back to boring old keypresses.</p><div  class="fancy-box"><div class="fancy_box-title">Full-sized Azeron Keypad spec</div><div class="fancy_box_body"><p class="fancy-box__body-text">19 tower buttons<br>7 thumb buttons<br>Full size analog thumbstick<br>Adjustable metal chassis<br>Anti-slip silicon pads<br>Braided cables<br>2m braided USB Mini-B cable<br>Programmable Teensy++ 2.0 brain<br>Reset button</p></div></div><p>When your hand is treated to this much ergonomic comfort, a ten hour <a href="https://www.pcgamer.com/valheim-review/" target="_blank">Valheim</a> session feels like twenty minutes (I do not condone spending that long in front of a screen without breaks, but I know you&apos;re gonna do it anyway). The likelihood of suffering from carpal tunnel with this in your arsenal is pretty miniscule, though. Your hand is able to rest completely still as you play, and you never need to shift along the supposed &apos;quickbar&apos; in the heat of battle (inevitably losing your place and resulting in a good old troll-crushing). </p><p>There are even two models to choose from: one with 26 keys, and another with two less. The larger version gives your middle finger has access to 5 buttons, and your index finger: 6. The compact version replaces those ridiculous towers with button-topped stumps. I prefer the latter as the angle of the higher buttons can be a little awkward, especially if you&apos;re sporting long nails, but it doesn&apos;t look as nearly as dastardly. </p><p>Either model comes with the option of an additional or alternative wrist rest, should your hand sit flatter. The only thing is that if you&apos;re getting the other wrist pad as an additional item, know that swapping them requires a little electrical engineering. It&apos;s all quite straightforward stuff, but it&apos;s not as hot-swappable as, say, the thumbstick.</p><div><blockquote><p>Just know this isn't some throwaway novelty item.</p></blockquote></div><p>That&apos;s due to the Teensy++ 2.0 inside being connected to a handy profile switch on the side, as well as indicator LEDs (the colour of which are also editable). Another drawback that comes from this choice of Teensy hardware, is the Mini-B USB connection. It doesn&apos;t stifle much as it comes with its own braided cable, but it means you can&apos;t use it with today&apos;s standard cables if you lose yours. However, the company is making a move toward it&apos;s own custom hardware design that will include more onboard memory and additional features. We should also see a change to USB Type-C some time in the future—keep a check on the <a href="https://www.azeron.eu/blog/" target="_blank">Azeron blog</a> for updates.</p><p>Right now though, aside from the connection, this thing is a paragon of practicality. Not only are there more buttons than I&apos;ll ever need for all my actions, menus and quickbar items, they&apos;re also incredibly satisfying to click. My partner and I spent about 2 days before we even set them up properly just clicking them like crazy, and they haven&apos;t broken yet—a testament to Omron&apos;s promise of 10 million keypresses.</p><iframe src="https://content.jwplatform.com/players/U1NPrir4.html" id="U1NPrir4" title="Azeron Keypad satisfying clicks" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>With a sturdy metal chassis as a foundation for the impressively 3D printed, <a href="https://www.pcgamer.com/azeron-gaming-keypad-the-making-of/" target="_blank">hand-assembled components</a>, the Azeron Keypad is heavier than expected for a 3D printed accessory, though still absolutely compact and portable. It&apos;s also easy to set up physically, though a little fiddly. The keypad comes with a proper nifty screwdriver/allen key combo, for fitting it to the size and splay of your hand easily with the underside screws.</p><p>Despite the Azeron Keypad being a worthy contestant to the keyboard, a controller might still be a better choice in some instances. While it does include an analogue stick, and negates the need for radial menus with the sheer number of buttons present, it lacks pressure sensitivity triggers as well as haptic feedback. This makes it almost as impossible as the keyboard for playing racing games. At the end of the day, you&apos;re more likely to use it in MMO or RPG type situations. Basically anything that necessitates easy access to masses of quick actions or shortcuts.</p><p>Which brings me to its other use. I&apos;ve heard it can be great for creative applications, such as 3D modelling software. Having not tried it myself I can only take others&apos; word for it, but I can see the potential.</p><p>The main issue I&apos;ve encountered with the keypad is the learning curve when you first map out your keys, as well as the accidental keypresses when attempting to press the uppermost keys. That&apos;s about the limit of my problems with it.</p><p>The software is super easy to use, and even shows which buttons are being pressed on-screen so you can double check you&apos;re mapping the right one. You can even calibrate the analogue stick to output WASD to prevent any problems with input type flicking back and forth. And you can use it as a mouse if that&apos;s how you roll—dual wielding?</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/6EHkfuqLpjccYowQyQbMqG.jpg" alt="Azeron Keypad" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/NBeF9r3TM2pNVQAAwoC6ZG.jpg" alt="Azeron Keypad" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2H7XM69y5KYWdUEdSZPqRH.jpg" alt="The Azeron Keypad internals" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8jLx7gdmAyCvnchcXSbjzH.jpg" alt="The Azeron Keypad underside" /><figcaption><small role="credit">Azeron</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SCWhgDhxe8xoQbSCf5f5vF.jpg" alt="Azeron Keypad" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/buJ7bXNEjKw39CnnzqYr7H.jpg" alt="Azeron Keypad" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>When it comes to customisation options, you won&apos;t be disappointed if you&apos;re looking to match it with the colour of your setup. Not only are there some awesome themed special-edition runs that pop up every now and then, you can even create your own design in the <a href="https://store.azeron.eu/customize/#20010001010101010101232323232323232323232322222222222222222222222222222222222222222222232245233622475052" target="_blank">Azeron Keypad 3D creator</a>. What&apos;s more, it lets you request personalised lettering for the side—as long as its 2-8 letters. And for some reason, Q, Y, J, P, and G can only be uppercase.</p><p>Just know this isn&apos;t some throwaway novelty item, it can really give you an edge once you get used to your button layouts. I&apos;ve got to say, I&apos;m unironically in love with the Azeron Keypad. </p><p>I don&apos;t expect any of you to understand. Pick one up for yourself and you&apos;ll get it.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Microsoft is aware of unresponsiveness issues on new Xbox controllers, fix in the works ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/microsoft-xbox-controller-unresponsive-issue-fix/</link>
                                                                            <description>
                            <![CDATA[ Issue appears to affect Xbox controllers on PC, too. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">6ffyKwEdKaNxKfEcufdS4e</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/zwG4hdLFHfFKsyiap9B8VL-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 05 Mar 2021 12:57:35 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ paul.b.lilly@gmail.com (Paul Lilly) ]]></author>                    <dc:creator><![CDATA[ Paul Lilly ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/SSYcX3JpTJvu9EcMTnFbuS.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/zwG4hdLFHfFKsyiap9B8VL-1280-80.jpg">
                                                            <media:credit><![CDATA[Microsoft]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Xbox Wireless Controller]]></media:description>                                                            <media:text><![CDATA[Xbox Wireless Controller]]></media:text>
                                <media:title type="plain"><![CDATA[Xbox Wireless Controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/zwG4hdLFHfFKsyiap9B8VL-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Some people are having issues with the newest version of the Xbox Wireless Controller that launched alongside the Xbox Series X/S, whereby button taps sometimes go unregistered, even on PC. The good news is, Microsoft has acknowledged the problem, and is working on a fix of some sort.</p><p>Now for the bad news—it&apos;s an annoying issue, and there is no time frame for the fix, or what it will entail. So if you&apos;re experiencing the same problem, the only thing you can do (short of returning the controller) is to sit back and hope it gets resolved sooner rather than later.</p><p>Controller design is tricky business these days. They have become infinitely more complicated in design and functionality than the Atari 2600 joystick I played on a million years ago, which simply consisted of a stick and a single button. Prehistoric by today&apos;s standards, but it was good enough to navigate Pitfall Harry across crocodile-infested swamps.</p><p>Multiple buttons, D-pads, analog joysticks, triggers, motorized rumbling, and other features are now common, and sometimes things go wrong, or wonky. Usually it&apos;s a drift issue we hear about, though.</p><p>Not in this case. As Microsoft&apos;s newest controller finds its way into more hands, complaints have started surface about it sometimes being unresponsive. A player who goes by SK Lee lamented to <a href="https://www.theloadout.com/xbox/unresponsive-controllers-solution" target="_blank">The Loadout</a> that the "Y" button on their controller bears the brunt of the issue, and it wrecks the experience of playing FIFA on PC.</p><p>"The controller consistently failed me several times in a 15-minute game," said SK Lee, who has since gone back to using a Logitech controller.</p><p>Here&apos;s a look at the issue in action:</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/Q8ztvqLTIiM" allowfullscreen></iframe></div></div><p>Whatever the cause, it seems to be platform agnostic, affecting both Xbox Series X/S and PC players. YouTube user TrueGamingHD demonstrated their controller going <a href="https://www.youtube.com/watch?v=bm1xPxe3BoI">completely unresponsive</a> while seemingly still connected to an Xbox Series X, prompting a reboot of the console.</p><p>"At Microsoft, we put all of our products through rigorous quality assurance testing and are committed to providing customers with an unparalleled gaming experience," Microsoft told The Loadout. "We are aware some players may be experiencing unresponsiveness with their new Xbox Wireless Controllers and our teams are actively working on a solution. For the best experience, we encourage customers to visit Xbox Support for assistance."</p><p>It will be interesting to see what exactly the eventual fix consists of, whether it&apos;s swapping the controller for a revised model (or sending it in for repair), or something that can be done on the software side. Since it affects multiple platforms, the latter seems unlikely.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Watch Azeron's awesome monkey-hand gaming keypad get made, by human hands ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/azeron-gaming-keypad-the-making-of/</link>
                                                                            <description>
                            <![CDATA[ This is one of our Azeron test samples being put together in the workshop. Isn't it mesmerising? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">FTsrzyAWYQ3c8YnfzevSbM</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Mno5E6xvRDXexQjWEwi6iH-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 26 Feb 2021 10:33:14 +0000</pubDate>                                                                                                                                <updated>Fri, 26 Feb 2021 10:36:06 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Katie Wickens ]]></dc:creator>                                                                <dc:description><![CDATA[ http://cdn.mos.cms.futurecdn.net/xAdFbbTjQTtTB46fsctbrN.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Mno5E6xvRDXexQjWEwi6iH-1280-80.jpg">
                                                            <media:credit><![CDATA[Azeron]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Azeron Keypad]]></media:description>                                                            <media:text><![CDATA[The Azeron Keypad]]></media:text>
                                <media:title type="plain"><![CDATA[The Azeron Keypad]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Mno5E6xvRDXexQjWEwi6iH-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <iframe src="https://content.jwplatform.com/players/qtcMhUKk.html" id="qtcMhUKk" title="Azeron Keypad timelapse" width="3840" height="2160" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>After first seeing the <a href="https://www.pcgamer.com/azeron-gaming-keypad-for-mmo-fps-gaming-setup/" target="_blank">Azeron Gaming Keypad</a> a few weeks back, we&apos;ve secured some exclusive insights as to just how these strange, yet fascinating contraptions are put together: Basically, all by hand.</p><p>There are some videos floating around of the <a href="https://www.youtube.com/watch?v=gx-1N_XGxhw" target="_blank">factory and production line</a>, but above is a time-lapse of one of our test samples actually being made in its entirety—how that&apos;s done so flawlessly with that manicure is beyond me.</p><p>As we outlined in our <a href="https://www.pcgamer.com/azeron-gaming-keypad-for-mmo-fps-gaming-setup/" target="_blank">previous post</a>, the keypad is meant as a replacement for WASD in-game. It might look like a medieval torture device given a dayglo makeover, but it&apos;s just the opposite, a thing of gaming joy. The keypads feature an expansive array of buttons, a 5 way joystick, and a thumbstick, to boot, all arranged to be easily accessed from a resting position. </p><p>There&apos;s no need to fumble around your keyboard or—heaven forbid—look away from the screen mid-fight.</p><p>Sounds like a dream, right? The <a href="https://www.azeron.eu/" target="_blank">Azeron Keypad</a> is the stuff of fantasy, for sure, but what really gets me about this company is how it&apos;s been raised up from such humble beginnings.</p><p>Imants, Azeron&apos;s founder, made the first keypad prototype in 2012. Since then, the design has evolved tenfold in terms of complexity, functionality and aesthetics. It&apos;s gone from a sanded slab of wood with some stiff, red buttons, to the technological wonder on the we see today. Now the thing comes in any colour you could dream of, including glow in the dark, and is fully adjustable to your hand size and shape. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/kGH6Wcr7DpHZgdELogWfTi.jpg" alt="Azeron gaming keypad" /><figcaption><small role="credit">Azeron</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tEu2zoGVcUsRxcmGXHmhyj.jpg" alt="Azeron gaming keypad prototype" /><figcaption><small role="credit">Azeron</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Mno5E6xvRDXexQjWEwi6iH.jpg" alt="The Azeron Keypad" /><figcaption><small role="credit">Azeron</small></figcaption></figure></figure><p>The company has even just put out this awesome <a href="https://store.azeron.eu/customize/" target="_blank">3D customisation feature</a> on the store, so you can really make it your own.</p><p>But that&apos;s not all that&apos;s evolved—the production line has moved on too. Going from a modest 3D printing setup in Imants&apos; living room, to a fully functioning factory with 60 employees, and 70 Prusa i3 MK3S 3D printers, was no easy road. There were plenty of hurdles to overcome in the process, but with such brilliant minds at hand, a solution can always be found... case and point: this makeshift 3D printing spool holder.</p><figure class="van-image-figure " 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="d74U3kDCSmRYiUExwuBhgm" name="azeron-spool-replacement.jpg" alt="Azeron makeshift spool holder replacement: a broom" src="https://cdn.mos.cms.futurecdn.net/d74U3kDCSmRYiUExwuBhgm.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Azeron)</span></figcaption></figure><p>I have a lot of respect for this kind of resourcefulness. </p><p>It&apos;s thinking like this that got Azeron where it is today, along with the astute mindset of "find a solution that feels right and natural." Okay, so threading a broom through a desk may not seem right, or natural, but it&apos;s a testament to how far the company has come.</p><p>From one man&apos;s dream of having all his Guild Wars abilities more easily accessible, to now producing more keypads in a single a day than founder, Imants, could produce in his living room over an entire month. And each of these is put together by expert hands over at the Azeron workshop in Latvia, where the company was born.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Lawsuit filed against Sony over alleged DualSense PS5 controller drift issue ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/sony-lawsuit-dualsense-drift-playstation-5-controller/</link>
                                                                            <description>
                            <![CDATA[ Apparently okayed by the company even after pre-release testers flagged it. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ogsu6v3enE5XUpZnj9HEFm</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/PbwaxzjY665km9GBGVFRzg-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 17 Feb 2021 11:50:31 +0000</pubDate>                                                                                                                                <updated>Wed, 17 Feb 2021 12:00:06 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Katie Wickens ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/xAdFbbTjQTtTB46fsctbrN.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/PbwaxzjY665km9GBGVFRzg-1280-80.jpg">
                                                            <media:credit><![CDATA[Sony]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Sony Dualsense]]></media:description>                                                            <media:text><![CDATA[Sony Dualsense]]></media:text>
                                <media:title type="plain"><![CDATA[Sony Dualsense]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/PbwaxzjY665km9GBGVFRzg-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I&apos;ve always been a Sony fan myself, but a recent lawsuit over the PS5 DualSense controller is making me question my life choices. </p><p>Have you ever had the issue where, despite your non-action, your controllers analog stick still manages to sense some mystical input, causing your character to drift aimlessly off a cliff or stare wistfully into the sky? Same. And so have a buttload of other people in online forums, as well as Sony&apos;s own pre-release testers for the hardware, reportedly.</p><p>Disgraced by the controller&apos;s alleged issues, along with Sony&apos;s apparent wilful negligence on the matter, Chimicles Schwartz Kriner & Donaldson-Smith LLP have now filed a class action lawsuit against the company.</p><div  class="fancy-box"><div class="fancy_box-title">Cut the cord...</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="DgcRv7GnQkujSW9efEMjZP" name="Steelseries Arctis Pro Wireless 2.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/DgcRv7GnQkujSW9efEMjZP.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Steelseries)</span></figcaption></figure><p class="fancy-box__body-text"><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-wireless-gaming-mouse/" target="_blank"><strong>Best wireless gaming mouse</strong></a>: ideal cable-free rodents<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-wireless-gaming-keyboard/" target="_blank"><strong>Best wireless gaming keyboard</strong></a>: no wires, no worries<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-wireless-gaming-headset/" target="_blank"><strong>Best wireless gaming headset</strong></a>: top untethered audio</p></div></div><p>According to <a href="https://www.youtube.com/watch?v=oGEWfaL5NcQ" target="_blank">IGN</a> and <a href="https://metro.co.uk/2021/02/16/ps5-dualsense-gamepad-drift-leads-to-class-action-lawsuit-against-sony-14089288/?ito=cbshare" target="_blank">Metro</a>, the case documentation notes that the problem "significantly interferes with gameplay and thus compromises the DualSense controller’s core functionality." It goes on to claim Sony&apos;s action was "fraudulent, deceptive, unlawful, and unfair," especially considering the limited repair options available for the issue.</p><p>Being a class action lawsuit, any US citizen who&apos;s felt the pain of the supposedly "defective" controllers can raise the stakes of the case by adding their evidence to the claim, potentially landing a payout in the event that Sony loses the case. You read that right: those who&apos;ve experienced this might manage to receive some money over their controller&apos;s drift issue, but only if Sony is found to be at fault. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The Xbox Series X controller is superior to the Elite Series 2 in one crucial way ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/xbox-series-x-controller-quick-switch-pc-console/</link>
                                                                            <description>
                            <![CDATA[ The cheaper Microsoft controller can quick-switch between PC and console... but there are still definite limitations. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LqN3PqYSGEDwYdgEho7hTm</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/FLTLhdS2ajhLq3RAsfKNAj-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 09 Feb 2021 12:50:12 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ dave.james@futurenet.com (Dave James) ]]></author>                    <dc:creator><![CDATA[ Dave James ]]></dc:creator>                                                                <dc:description><![CDATA[ http://cdn.mos.cms.futurecdn.net/6VGuJ2nPapd22dh5UsjpBS.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/FLTLhdS2ajhLq3RAsfKNAj-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Xbox Series X/S and Elite Series 2 controllers]]></media:description>                                                            <media:text><![CDATA[Xbox Series X/S and Elite Series 2 controllers]]></media:text>
                                <media:title type="plain"><![CDATA[Xbox Series X/S and Elite Series 2 controllers]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/FLTLhdS2ajhLq3RAsfKNAj-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I have a micro-obsession with the <a href="https://www.pcgamer.com/xbox-elite-wireless-controller-series-2-review/" target="_blank">Xbox Elite Series 2</a> controller, but ended up hating it, and myself, while trying to switch between using it on my gaming PC and <a href="https://www.pcgamer.com/microsoft-xbox-series-x-review-a-pc-gamers-perspective/#section-xbox-series-x-verdict" target="_blank">Xbox Series X</a>. It turns out that as Elite as it might be—it really is, <em>love </em>that pad—the new Series X/S joypads are smarter.  </p><p>It has recently come to light that there is an undocumented little trick in the Xbox Series X/S controllers&apos; arsenal that should endear the latest Microsoft pads to anyone flipping between PC and console. </p><div class="see-more see-more--clipped"><blockquote class="twitter-tweet hawk-ignore" data-lang="en"><p lang="en" dir="ltr">Using your @Xbox Series X|S controller with console & pc/mobile for @XboxGamePass frequently? #XboxSeries controllers can memorize sync!-> Hold "sync" to recall last mobile/PC device (flashing 2-3x)-> Double-tap "sync" to switch back to your #Xbox (flash once)#XboxSeriesX pic.twitter.com/0avzjoOdre<a href="https://twitter.com/OmitFlow/status/1358695588838199297">February 8, 2021</a></p></blockquote><div class="see-more__filter"></div></div><p>Microsoft&apos;s Timo Wolf took to twitter to highlight the feature, which allows you to quickly switch from Bluetooth mode on the PC to wireless connection on your Xbox. </p><p>Microsoft had previously stated that the new controllers would memorise devices it was synced to, but there wasn&apos;t any official documentation about how it could be used. Wolf has shown that it&apos;s as simple as holding the sync button down to switch to the last Bluetooth-connected device, and a double tap to go back to the Xbox console.</p><p>We&apos;ve tested it out ourselves and it definitely works, and we&apos;ve also checked out the Elite Series 2 to see if it does the same thing... and it most definitely does not. </p><p>Which is a massive shame as I&apos;d like to use it on both my PC and console, but I can&apos;t face the continual hassle of reconnection. Especially as the Series X is hidden behind my sofa as my 18 month-old son is irresistibly drawn to the shining Xbox logo/power button and would otherwise just sit there turning it on and off <em>for hours</em>.</p><figure class="van-image-figure " 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="tTKmBzDQwHzpnya2Nh5Bmk" name="xbox-series-x-pad-sync-button.jpg" alt="Xbox Series X/S controller sync button" src="https://cdn.mos.cms.futurecdn.net/tTKmBzDQwHzpnya2Nh5Bmk.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>This little quick-switch feature is a bonus for the Series X/S pads, and means it would be absolutely deserving of a place on our <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best PC controllers</a> list for that alone. But it&apos;s still not without its faults. </p><p>For one, the quick-switch feature only operates between Bluetooth and Xbox wireless—essentially what you&apos;re doing is switching between those two connection modes and the pad retains the details of whatever it was last connected to. </p><p>So, if you&apos;re using the Xbox Wireless Adapter on PC then you&apos;re still screwed because it will only remember the last device on each connection. That means you can&apos;t go from Xbox Wireless Adapter on PC to Xbox Wireless on the console with a quick switch; that still requires a reconnection.</p><div  class="fancy-box"><div class="fancy_box-title">Cut the cord...</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="DgcRv7GnQkujSW9efEMjZP" name="Steelseries Arctis Pro Wireless 2.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/DgcRv7GnQkujSW9efEMjZP.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Steelseries)</span></figcaption></figure><p class="fancy-box__body-text"><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-wireless-gaming-mouse/" target="_blank"><strong>Best wireless gaming mouse</strong></a>: ideal cable-free rodents<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-wireless-gaming-keyboard/" target="_blank"><strong>Best wireless gaming keyboard</strong></a>: no wires, no worries<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/best-wireless-gaming-headset/" target="_blank"><strong>Best wireless gaming headset</strong></a>: top untethered audio</p></div></div><p>Sure Bluetooth has come on some way in the last few years, but the Series X/S controller is not necessarily the most reliable when paired to Bluetooth. For some games it&apos;s fine, but for others it&apos;s needlessly erratic. FIFA 21, for example, is all over the place… though interestingly absolutely fine with the Elite Series 2 in Bluetooth mode. Go figure.</p><p>There is also the fact that if you connect via a cable to charge it seems to forget what it&apos;s been linked to and you have to reconnect all over again. And sometimes, if you have a Wireless adapter plumbed into your PC, it will hop onto that over your Xbox console connection too, making things even more awkward.</p><p>But hey, no-one ever said wireless communication was anything less than a horrific shit show. Anyways, the fact remains that if you&apos;re happy gaming via Bluetooth on your PC then you can quick-switch between PC and console with the Series X/S pad at will, which is kinda neat.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Valve to pay $4 million in Steam Controller patent infringement case ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/valve-to-pay-dollar4-million-in-steam-controller-patent-infringement-case/</link>
                                                                            <description>
                            <![CDATA[ SCUF Gaming holds the patent for the gamepad's rear controllers. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">8Dwzr87YAiejPypx6q7ooV</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/jDNCbyyx6VQfzYgE32x7RY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 03 Feb 2021 00:48:40 +0000</pubDate>                                                                                                                                <updated>Mon, 15 Jun 2026 15:00:25 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/jDNCbyyx6VQfzYgE32x7RY-1280-80.jpg">
                                                            <media:credit><![CDATA[Valve]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Steam Controller]]></media:description>                                                            <media:text><![CDATA[Steam Controller]]></media:text>
                                <media:title type="plain"><![CDATA[Steam Controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/jDNCbyyx6VQfzYgE32x7RY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Valve has been ordered to pay $4 million in damages, after a weeklong jury trial found that it had infringed a patent related to the <a href="https://www.pcgamer.com/steam-controller-setup-guide/" target="_blank">Steam Controller</a>&apos;s back controllers. Lawyers representing SCUF parent company Ironburg Inventions told the jury that Valve had been warned about <a href="https://patents.google.com/patent/US8641525B2/en" target="_blank">Ironburg&apos;s patent</a> in 2014, after a prototype of the Steam Controller was first shown at CES.</p><p>Ironburg&apos;s lawyer told the jury last week (via <a href="https://www.law360.com/ip/articles/1348495/video-game-giant-ripped-off-controller-patent-jury-hears" target="_blank">Law 360</a>),"Valve&apos;s intentional disregard of its infringement is at the heart of this case." </p><p>"Valve did know that its conduct involved an unreasonable risk of infringement, but it simply proceeded to infringe anyway — the classic David and Goliath story: Goliath does what Goliath wants to do," he continued.</p><p>US District Judge Thomas Zilly of the Western District of Washington found that all seven of Ironburg Inventions&apos; claims were infringed upon, though Valve maintained there were no infringements at all, arguing that its back buttons were demonstrably different to those patented by Ironburg. Other brands under the Ironburg umbrella include Corsair and Elgato.</p><p>Ironburg&apos;s patent is for "an improved controller for a game console that is intended to be held by a user in both hands in the same manner as a conventional controller, which has controls on the front operable by the thumbs, and has two additional controls located on the back in positions to be operated by the middle fingers of a user."</p><p>Microsoft&apos;s Xbox Elite Controller uses the same back buttons, which it licensed from Ironburg Inventions. The Steam Controller was discontinued in 2019 after four years on the market.</p><p>Cheers, <a href="https://www.videogameschronicle.com/news/valve-loses-4-million-steam-controller-patent-infringement-case/" target="_blank">VGC</a>.</p><p><br></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Razer Wolverine V2 review ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/razer-wolverine-v2-review/</link>
                                                                            <description>
                            <![CDATA[ Razer's new wired controller is one of its best. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ELcZfzQPHUPm2SAFDDtB2N</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/oJcZsLgADshXJawg3CTaUc-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 08 Jan 2021 12:02:09 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Kizito Katawonga ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/pnRbJLKMy9u2vJLSvGU7AL.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/oJcZsLgADshXJawg3CTaUc-1280-80.jpg">
                                                            <media:credit><![CDATA[Razer]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Razer Wolverine V2]]></media:description>                                                            <media:text><![CDATA[Razer Wolverine V2]]></media:text>
                                <media:title type="plain"><![CDATA[Razer Wolverine V2]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/oJcZsLgADshXJawg3CTaUc-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The Razer Wolverine V2 is the latest controller from the snake-obsessed peripheral and PC maker. I&apos;ve been using the Wolverine Tournament Edition for the last two years, and it&apos;s been my go-to device for PC and Xbox gaming. The Wolverine TE is a phenomenal controller thanks to its design, Mecha-Tactile switches, customization options, and durability. I love it so much I gave away my standard Xbox controllers and have even been known to pick it over the best keyboard/mouse combo.</p><div  class="fancy-box"><div class="fancy_box-title">Razer Wolverine V2 specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Weight </strong>- 9.6 oz (274 g)<br><strong>Connectivity </strong>-<strong> </strong>USB Wired<br><strong>Cable length </strong>-<strong> </strong>9.8 ft (3 m)</p></div></div><p>So my hopes for the new, cheaper $99 Razer Wolverine V2 were pretty high. While it&apos;s not technically a successor to the Wolverine TE, comparisons are inevitable. The Wolverine V2 is also a wired Windows PC and Xbox controller with most of the same core features. This cheaper controller does drop a few features of the TE while improving on others. </p><p>For starters, it has less mappable buttons, no RGB lighting, and uses a fixed USB Type-A cable instead of a detachable one. Despite that, the V2 might be the better option for most gamers looking for a semi-pro controller. </p><p>Razer has refined the design of the Wolverine to improve the ergonomics. The long, tapered grips have been replaced with more rounded, bulbous handles that are easier to grip. Razer has used new L-shape handles that feel deeper and more secure in your hands. This also makes it easier to reach the top triggers. Additionally, it has moved over to using a more textured rubber around the grips.</p><p>Some nice Razer Green piping separates the handles from the center chassis giving the V2 a modern and industrial look. The face buttons have changed too and include the new Xbox Series X/S quick share function. The menu and options buttons have been moved to the top edge of the faceplate and are now angled. This positioning is awful, as even someone with long fingers like me has a hard time reaching them. </p><p>A new volume control button lives below the Xbox share button and holding it and then pressing left or right on the D-Pad adjusts the volume of any wired headphones connected to the controller. This is a great feature to have, as it saves a ton of button presses trying to pause games in order to pull up the Xbox audio controls panel. </p><figure class="van-image-figure " 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="KSkWkmNaEj2exSHdvdsw2d" name="Razer_Wolverine_V2_mid.jpg" alt="Razer Wolverine V2" src="https://cdn.mos.cms.futurecdn.net/KSkWkmNaEj2exSHdvdsw2d.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/KSkWkmNaEj2exSHdvdsw2d.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Razer)</span></figcaption></figure><p>The main ABXY buttons and D-Pad still have the same exceptional Mecha-tactile switches, which are mechanical rather than membrane. This makes them satisfyingly crisp and responsive with the accompanying click. They have a short 0.65mm actuation distance that is 35% less than standard controllers making them feel more responsive. You definitely notice that if you switch back and forth between Xbox controllers and the Wolverine. </p><p>The analog sticks have a target reticule style texture that gives some extra grip, which works well. Sadly, you can&apos;t swap these out for different heights or shapes. You can however adjust their sensitivity and dead zones in the comprehensive Razer app for Windows 10 and Xbox. </p><figure class="van-image-figure " 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="yUT3cqwRpkvCGaAfUuYUAe" name="Razer_Wolverine_V2_top.jpg" alt="Razer Wolverine V2" src="https://cdn.mos.cms.futurecdn.net/yUT3cqwRpkvCGaAfUuYUAe.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/yUT3cqwRpkvCGaAfUuYUAe.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Razer)</span></figcaption></figure><p>At the top of the Wolverine are the standard Left and right trigger buttons. Unlike the Series X controller, these triggers aren&apos;t textured, but that&apos;s not a problem in practice. You can adjust the LT/RT trigger stops with toggles on the underside of the Wolverine V2. Doing so decreases the actuation distance so you can fire quicker which is great in shooters. Other games like Racers will be better served with the full range of motion.</p><p>Unlike the Wolverine TE which has four extra mappable M buttons next to the triggers, the V2 only has two. This seems like the V2 is a downgrade but looking back at my own 2 years of using the Wolverine TE, I only used the same two buttons on my TE, so it&apos;s no real loss. Remapping these buttons is extremely easy using the Razer Controller Setup app and you can create a number of profiles for different games. </p><figure class="van-image-figure " 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="eNupuymEbyiWNYy7q97gvb" name="Razer_Wolverine_V2_bottom.jpg" alt="Razer Wolverine V2" src="https://cdn.mos.cms.futurecdn.net/eNupuymEbyiWNYy7q97gvb.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/eNupuymEbyiWNYy7q97gvb.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Razer)</span></figcaption></figure><p>One cool trick is the sensitivity clutch feature, which works similar to HyperShift on Razer mice. It allows you to increase or decrease the sensitivity of the analog sticks at the press of a preassigned button. Pro snipers will likely find this feature very handy. </p><p>While I love most of what Razer has done with the Wolverine V2, two things annoy me. The first is the loss of that lovely RGB strip around the Xbox home button. Sure it really served no purpose, but no other controllers have RGB and I&apos;m pissed that Razer took away my pretty lights. </p><p>The most annoying thing about the Wolverine V2 though is the fact it&apos;s a wired-only offering. Razer has already solved lag-free wireless communication with HyperSpeed 2.4Ghz, so why are we stuck with a wired controller? It could have at least used a detachable USB Type-C cable. My guess is that Razer is preparing a Wolverine V2 Pro in the near future which will be wireless and modular like the Xbox Elite Series 2. </p><p>That said, even with the irritating cable, the Wolverine V2 is still one of the best controllers you can buy right now. I can live with it being tethered because of how good a controller it is in nearly every other respect.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
            </channel>
</rss>