<?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-AU"
                       href="https://www.pcgamer.com/au/feeds/tag/controllers/"
                       type="application/rss+xml"/>
                            <title><![CDATA[ Latest from PC Gamer AU in Controllers ]]></title>
                <link>https://www.pcgamer.com/au/hardware/controllers</link>
        <description><![CDATA[ All the latest controllers content from the PC Gamer  AU team ]]></description>
                                    <lastBuildDate>Tue, 07 Jul 2026 01:04:42 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ Heaps of gamepads are discounted as part of Amazon Prime Day 2026, but there's only one I'd unreservedly recommend ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/heaps-of-gamepads-are-discounted-as-part-of-amazon-prime-day-2026-but-theres-only-one-id-unreservedly-recommend/</link>
                                                                            <description>
                            <![CDATA[ Don't buy an inferior PC gamepad this Prime Day. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">oycGE7KbVjC7Nmyy4S4rRM</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/46gKp4LyKnubkDaTGggYJX-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 07 Jul 2026 01:04:42 +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:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/46gKp4LyKnubkDaTGggYJX-1280-80.jpg">
                                                            <media:credit><![CDATA[Gamesir, Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A GameSir controller on a Prime Day banner with the PC Gamer logo.]]></media:description>                                                            <media:text><![CDATA[A GameSir controller on a Prime Day banner with the PC Gamer logo.]]></media:text>
                                <media:title type="plain"><![CDATA[A GameSir controller on a Prime Day banner with the PC Gamer logo.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/46gKp4LyKnubkDaTGggYJX-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="77b6eadf-a9d7-4cd0-b3ff-93911bd9b9c4" data-action="Deal Block" data-label="AU$143.20" data-dimension48="AU$143.20" data-dimension25="$127" href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FHHFBDNQ/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:800px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="UVbtMi7RWf6F92uuq9xUzH" name="GameSir G7 Pro Controller with charging dock product image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/UVbtMi7RWf6F92uuq9xUzH.png" mos="" align="middle" fullscreen="" width="800" height="800" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>A tidy saving on this brilliant PC gamepad (which also works with Xbox consoles, albeit only wired). It features an astonishing 1000 Hz polling rate for higher precision, TMR analog sticks, face button microswitches, Hall Effect triggers, paddle buttons, 2.4 Ghz wireless and Bluetooth: it basically has everything you want form a pro controller, without being priced like a pro controller.</p><p>Also:<br><strong>GameSir G7 Pro Dragon's Dogma 2 Edition</strong> - <del>AU$179</del> <a href="https://www.amazon.com.au/GameSir-G7-Pro-Controller-controller/dp/B0GJZ8WJD9" target="_blank" rel="sponsored" data-dimension112="77b6eadf-a9d7-4cd0-b3ff-93911bd9b9c4" data-action="Deal Block" data-label="AU$143.20" data-dimension48="AU$143.20" data-dimension25="$127">AU$143.20</a><br><strong>GameSir G7 Pro Zenless Zone Zero Edition</strong> - <del>AU$239</del> <a href="https://www.amazon.com.au/GameSir-G7-Pro-Controller-controller/dp/B0G6DCNFDN" target="_blank" rel="sponsored">AU$191.20</a><a class="view-deal button" href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FHHFBDNQ/" target="_blank" rel="nofollow" data-dimension112="77b6eadf-a9d7-4cd0-b3ff-93911bd9b9c4" data-action="Deal Block" data-label="AU$143.20" data-dimension48="AU$143.20" data-dimension25="$127">View Deal</a></p></div><p>While traditionally best for headsets, keyboards and mice, Amazon sales are increasingly the best opportunity to pick up PC-compatible gamepads for cheap. The market for gamepads and controllers is nowadays <em>very </em>competitive, mostly because the likes of Razer, 8BitDo, Turtle Beach and GameSir make good products, and not cheap and inferior alternatives to first-party console controllers like was the norm a decade ago.</p><p>Actually, most third-party gamepads are plainly better than the Xbox or PS5 controllers. Drift-free Hall effect analog sticks are nowadays <em>de riguer</em> for third-party controllers. Similarly, rear paddle buttons. They tend to be a tad pricier than the DualSense or the Xbox controller, but they also come with more buttons, more customisation, and technology that avoids rapid stick wear.</p><p>The GameSir G7 Pro is the best gamepad for PC gaming, full stop. It's right at the top of our list of <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/">the best PC controllers in 2026</a>, thanks to the way it makes all the most sought after "Pro" style trimmings affordable. </p><p>Here's what you're getting:</p><ul><li>Two rear paddle buttons</li><li>Two extra claw grip buttons</li><li>Trigger stops</li><li>Gyro support (!)</li><li>Three D-pad varieties</li><li>Charging base</li><li>1000Hz polling rate (versus the 126Hz polling rate in the Xbox controller!)</li><li>Wired, 2.4Ghz wireless, and Bluetooth connectivity</li><li>Ten hours battery</li><li>TMR drift free analog sticks</li></ul><p>On that final note: TMR is a more advanced anti-drift tech than Hall effect. I explain the workings behind it in my <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/">review of the G7 Pro</a>, but basically: they're more precise, with a lower power draw.</p><p>The GameSir G7 Pro normally retails for AU$159, and when it's discounted, usually hovers around the AU$135 mark. This week, as part of Prime Day, Amazon is offering it <a href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FHHFBDNQ/" target="_blank" rel="sponsored">for AU$127</a>. </p><p>If that's still too much to spend on a gamepad, GameSir's Nova Lite Wireless controller (PC Gamer's favourite budget wireless controller) is currently going cheap as well:</p><div class="product"><a data-dimension112="6a0c3f96-e5c4-4805-982f-e8d06cdf8b58" data-action="Deal Block" data-label="Our favourite budget PC controller gets a discount that brings it into impulse-buy territory. There's a lot to love at this price point: 2.4Ghz wireless connectivity, Bluetooth, a wired option via the Type-C port, and ten hours of battery life. The build quality isn't the sturdiest going around, and there's no audio jack, but this is a great piece of kit for well under AU$50." data-dimension48="Our favourite budget PC controller gets a discount that brings it into impulse-buy territory. There's a lot to love at this price point: 2.4Ghz wireless connectivity, Bluetooth, a wired option via the Type-C port, and ten hours of battery life. The build quality isn't the sturdiest going around, and there's no audio jack, but this is a great piece of kit for well under AU$50." data-dimension25="$32" href="https://www.amazon.com.au/dp/B0CMCPY4VG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="soVwABeC6nbkWkMrnx2xcR" name="GameSir Nova Lite 2.4g Wireless Controller.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/soVwABeC6nbkWkMrnx2xcR.jpg" mos="" align="middle" fullscreen="" width="200" height="200" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Our favourite budget PC controller gets a discount that brings it into impulse-buy territory. There's a lot to love at this price point: 2.4Ghz wireless connectivity, Bluetooth, a wired option via the Type-C port, and ten hours of battery life. The build quality isn't the sturdiest going around, and there's no audio jack, but this is a great piece of kit for well under AU$50.<a class="view-deal button" href="https://www.amazon.com.au/dp/B0CMCPY4VG" target="_blank" rel="nofollow" data-dimension112="6a0c3f96-e5c4-4805-982f-e8d06cdf8b58" data-action="Deal Block" data-label="Our favourite budget PC controller gets a discount that brings it into impulse-buy territory. There's a lot to love at this price point: 2.4Ghz wireless connectivity, Bluetooth, a wired option via the Type-C port, and ten hours of battery life. The build quality isn't the sturdiest going around, and there's no audio jack, but this is a great piece of kit for well under AU$50." data-dimension48="Our favourite budget PC controller gets a discount that brings it into impulse-buy territory. There's a lot to love at this price point: 2.4Ghz wireless connectivity, Bluetooth, a wired option via the Type-C port, and ten hours of battery life. The build quality isn't the sturdiest going around, and there's no audio jack, but this is a great piece of kit for well under AU$50." data-dimension25="$32">View Deal</a></p></div><p>If neither of these suit, check out our list of the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/">best controllers for PC gaming</a>, or our exhaustive list of the <a href="https://www.pcgamer.com/hardware/live/news/prime-day-pc-gaming-deals-july-2026/">best Amazon Prime Day PC gaming deals</a>.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ A second OG Steam Controller prototype has been found at Goodwill ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/a-second-og-steam-controller-prototype-has-been-found-at-goodwill/</link>
                                                                            <description>
                            <![CDATA[ We don't know how much it cost, but it does apparently work. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">DfVEVHQzQgxWDTXXcEYQ34</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/gokbuqaWmL94WrqqnmSQ4-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 06 Jul 2026 12:08:16 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/gokbuqaWmL94WrqqnmSQ4-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/gokbuqaWmL94WrqqnmSQ4-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Seven years ago, a user of the Steam Controller subreddit <a href="https://www.reddit.com/r/SteamController/comments/eb87ah/steam_controller_chell_prototype_found_at_local/" target="_blank">found a prototype of the original Steam Controller at a local Goodwill</a>. Recently, in a strange bit of luck, a <a href="https://www.reddit.com/r/SteamController/comments/1umyxo9/seven_years_ago_another_member_of_this_subreddit/" target="_blank">second prototype has been found at Goodwill</a>. If one more pops up at the same chain, one must assume that Gabe Newell is simply dropping them off at Goodwills around America. It's the only rational assumption. </p><p>Taking to Reddit, user Waste-Set5032 shares that their dad happened upon the 'Chell' Steam Controller prototype at a Goodwill in Seattle. When one user ponders if the dad actually bought it, the <a href="https://www.reddit.com/r/SteamController/comments/1umyxo9/comment/ovm6i8v/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">dad steps in to confirm</a>. He says, "I thought about letting this go, but I know my son is a fan of everything Valve, so I picked it up. On top of that, I now know my son’s Reddit handle."</p><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/SteamController/comments/1umyxo9/seven_years_ago_another_member_of_this_subreddit">Seven years ago, another member of this Subreddit found a Chell Prototype in a Goodwill. Well, would you look at this, it happened twice. My dad in Seattle found one.</a> from <a href="https://www.reddit.com/r/SteamController">r/SteamController</a></blockquote><script async src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p>The son in question is 14 and claims "finding things from Valve is like finding ancient relics for me". He also says, "I love playing their older games like Portal 2 and Half Life because it feels like a bygone era of gaming and I love exploring it." You're not alone if reading that makes you feel like you're crumbling into dust. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XmARgX"></div>                            </div>                            <script src="https://kwizly.com/embed/XmARgX.js" async></script><p>The Chell Steam Controller prototype is believed to be from around 2013 or 2014, which means the prototype's new owner was around one or two years old when this prototype was created. It's got a fairly familiar design to those who know the <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">original Steam Controller</a>, with its inward curved shape and two big trackpads on either side.</p><p>It is, however, missing face buttons on the right-hand side, with these being scattered around the middle of the controller instead. The prototype also moves the Select and Start buttons to the bottom of the controller, and also misses out on any sort of thumbsticks. All of that is to say the prototype is even stranger than the 2015 model. </p><p>The <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">2026 Steam Controller</a> launched just a few months ago and is altogether a much better device, though it still retains some of that Valve weirdness (complimentary), featuring two thumbsticks and two trackpads.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/kXk5wqg7RoGSLDTWiXMuBZ.jpg" alt="Steam Controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/AszbJKeMrYAQd96mWXE5.jpg" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The original poster's dad has managed to give the controller prototype a try and claims it "works as a generic controller". However, he notes that the four buttons in the middle of the pad actually work as a D-Pad, with the top left button being up, the top right button being right, the bottom left button being left, and the bottom right being down. </p><p>Given it's a prototype without the button layout and thumbsticks you'd expect from a modern controller, the Chell prototype likely isn't something you'd use for competitive gaming, but it's a neat relic of the past to have. It's also a sign of how far Valve has come with regard to controller ergonomics in the last decade. </p><p>Unfortunately, we don't know much more about the controller in regard to feel or compatibility. We also don't know how much was paid for it. However, the prototype found seven years ago was reportedly <a href="https://www.reddit.com/r/SteamController/comments/eb87ah/comment/fb8uk8b/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">bought for $8</a>, which is <a href="https://www.pcgamer.com/hardware/i-bought-a-usd5-steam-controller-7-years-ago-and-forgot-it-existed-now-its-my-new-living-room-sidekick/" target="_blank">$3 more than the OG Steam Controller was selling for when it was discontinued</a>. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <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:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></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[ The DualSense can still drift, but Sony may be exploring magnetic tech for shape-shifting buttons in whatever comes next ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/the-dualsense-can-still-drift-but-sony-may-be-exploring-magnetic-tech-for-dynamic-tactile-buttons-in-whatever-comes-next/</link>
                                                                            <description>
                            <![CDATA[ Worth a poke. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LoyndENoX6mCEFaRvoYtT6</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/qV2bVw74H2XnNEqc4BaVKH-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 17 Jun 2026 11:43:49 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/qV2bVw74H2XnNEqc4BaVKH-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A DualSense controller is seen on a colourful background, with stripes of pink, purple, and blue.]]></media:description>                                                            <media:text><![CDATA[A DualSense controller is seen on a colourful background, with stripes of pink, purple, and blue.]]></media:text>
                                <media:title type="plain"><![CDATA[A DualSense controller is seen on a colourful background, with stripes of pink, purple, and blue.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/qV2bVw74H2XnNEqc4BaVKH-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>As a console interloper hailing from the PlayStation side of the tracks, I have a soft spot for controller rumble and haptics. It would appear I'm in good company, as a wild Sony patent exploring a fresh avenue for tactile feedback right there in your gamepad has just been published.</p><p><a href="https://patentscope.wipo.int/search/en/detail.jsf?docId=WO2026110304&_cid=P12-MPXZ4A-31241-1" target="_blank">The patent in question</a> concerns reactive buttons that can both soften and harden (via <a href="https://www.cheathappens.com/sony_patents_playStation_controller_buttons.asp" target="_blank">Cheat Happens</a>). In theory, this would offer different tactile sensations by altering button hardness in real-time, depending on either the in-game situation or, ahem, personal preference (steady on).</p><p>I've definitely complained about 'squidgy' controller face buttons and D-pads in the past, so what's the appeal here? Well, the patent pitches a couple of use-cases, including a terrifying 'finger grab' effect that could grip your thumb tip should you, say, get grabbed while wading across yet another poisoned swamp in a Souls game.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eAx2nX"></div>                            </div>                            <script src="https://kwizly.com/embed/eAx2nX.js" async></script><p>Alternatively, this feature could be used to hold your thumb in place and prevent slippage. I'm not exactly jazzed about potentially having to pry my thumbs away from my gamepad for whatever reason. That said, there's a potential accessibility argument here, with the adaptable buttons changing shape to accommodate palms, wrists, elbows, and so on.</p><p>The tech could achieve this shape-shifting effect either through fluid-filled membranes or 'magnetoviscoelastic elastomers'. Not completely dissimilar to magnetic tech you'll already find in your controllers and keyboards, this could cause the reactive buttons to soften or harden depending on the magnetic field strength.</p><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="UtBGaLLyfaJZDeKdRpcnTj" name="DUalSense Edgfe.jpeg" alt="DualSense Edge" src="https://cdn.mos.cms.futurecdn.net/UtBGaLLyfaJZDeKdRpcnTj.jpeg" 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: Sony)</span></figcaption></figure><p>In many ways, the idea of reactive buttons feels like a natural follow-on to the DualSense's detailed haptics. While you can use the DualSense over both a wired and Bluetooth connection on PC, you'll be looking to sources other than Sony for haptic support. <a href="http://pcgamer.com/hardware/controllers/dualsense-pc-gamers-have-been-vindicated-at-last-as-haptic-support-is-finally-here-though-no-thanks-to-sony/#mrfhud=true" target="_blank">I wrote about just one of the unofficial options available, DSX+, yesterday</a>.</p><p>Odds are, if we ever do see these reactive buttons on a DualSense successor, Sony won't be the party to bring it to PC; the company has doubled down on making the PS5's tentpole releases, like <a href="https://www.pcgamer.com/games/action/god-of-war-laufey-announcement/" target="_blank">God of War Laufey</a>, console exclusives, so it seems likely this reactive tech will follow a similar path into the walled garden of PlayStation.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ DualSense PC gamers have been vindicated at last, as haptic support is finally here—though no thanks to Sony ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/dualsense-pc-gamers-have-been-vindicated-at-last-as-haptic-support-is-finally-here-though-no-thanks-to-sony/</link>
                                                                            <description>
                            <![CDATA[ Power in your hands. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3jQuQwuX5vuxTkHH8RT7ih</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/N2YVAanjET8THrW4eQe7E3-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 16 Jun 2026 11:28:06 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/N2YVAanjET8THrW4eQe7E3-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Sony PS5 Dualsense gamepad controller top down view.]]></media:description>                                                            <media:text><![CDATA[The Sony PS5 Dualsense gamepad controller top down view.]]></media:text>
                                <media:title type="plain"><![CDATA[The Sony PS5 Dualsense gamepad controller top down view.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/N2YVAanjET8THrW4eQe7E3-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I spent a decent chunk of my early career writing about all things PlayStation. But despite all of that, I wouldn't call Sony's DualSense controller my go-to gamepad for PC gaming. Well, the latest DSX beta update might just make it a real contender.</p><p>Traditionally, <a href="https://www.pcgamer.com/ps5-dualsense-controller-on-pc/" target="_blank">you can use a DualSense controller on PC</a> via a wired connection or over Bluetooth via an extra adapter. What a faff! Furthermore, there's no official support for the pad's detailed haptics on PC—so the team behind DSX are now extending <em>unofficial </em>support over both Bluetooth and wired connections. <a href="https://store.steampowered.com/news/app/1812620/view/713403343824749908?l=english" target="_blank">The v3.2 Beta 01update adds</a> "Virtual DualSense with Audio support, allowing games to send native DualSense audio and haptics through DSX over Bluetooth or USB" (via <a href="https://wccftech.com/playstation-5-dualsense-haptics-pc-bluetooth-sony/" target="_blank">WCCFTech</a>).</p><p>There is a catch, though. The update post notes that haptic and controller-based audio support will require "DSX+ to create a virtual DualSense as it always has been." Essentially, that means you're going to have to pay <a href="https://store.steampowered.com/app/1812620/DSX/" target="_blank">$7.99 for the base software on Steam</a>, and then another <a href="https://store.steampowered.com/app/2345650/DSX_Virtual_DualSense_BT_AudioHaptics_DLC/" target="_blank">$3.99 for the DSX+ 'DLC'</a>. In short, paying over 10 bucks for functionality that's standard on PS5 does feel a wee bit cheeky to me. That said, small teams providing unofficial support like this have gotta eat too.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eAx2nX"></div>                            </div>                            <script src="https://kwizly.com/embed/eAx2nX.js" async></script><p>This update also introduces the handy option to launch the controller software manually outside of Steam. Neat! This does use "a 28-day ownership cache" system, though, so you'll still need to futz with Steam at least once a month to continue enjoying support. To enjoy this functionality alongside haptics support, you'll need to <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=3330635677" target="_blank">set up access to the DSX Beta branch</a> via Steam anyway.</p><p>I've not yet had a chance to go hands-on with DSX's haptic support, so I can't comment on how refined the feedback feels on PC versus console. But given that Sony has u-turned on bringing its tentpole releases to PC, such as <a href="https://www.pcgamer.com/games/action/god-of-war-laufey-announcement/" target="_blank">God of War: Laufey</a>, the case could be made that this unofficial haptic support comes a little too late. Still, if you're curious about what you're missing, this could be a great excuse to finally pick up <a href="https://www.pcgamer.com/returnal-review/" target="_blank">2023's Returnal</a> (we've even got a robust <a href="https://www.pcgamer.com/returnal-beginners-tips/" target="_blank">beginner's guide</a>).</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:520px;"><p class="vanilla-image-block" style="padding-top:56.35%;"><img id="rPdDukUuWhXaDxv37ZN4tA" name="gif 1.gif" alt="An intense gunfight in Returnal." src="https://cdn.mos.cms.futurecdn.net/rPdDukUuWhXaDxv37ZN4tA.gif" mos="" align="middle" fullscreen="" width="520" height="293" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Housemarque)</span></figcaption></figure><p>I'm also fond of all the subtle haptics that have since been added to the PS5 version of Final Fantasy XIV Online, though there's no guarantee you'd get this in the PC version of the game. In my humble opinion, the best showcase for the DualSense's haptics are the last two AstroBot games. Unfortunately, Astro's Playroom—a game which I've heard at least one game developer describe as 'the five-hour hand massage'—was a free pack-in release for <a href="https://www.pcgamer.com/hardware/sony-hikes-the-ps5-price-by-usd100-ps5-pro-by-usd150-this-was-a-necessary-step/" target="_blank">the increasingly expensive PlayStation 5 console</a>, so it feels like the bot has a snowball in Hell's chance of ever making it PC-side.</p><p>As a PlayStation girlie, I'd kind of already accepted I'd be stuck with unrefined rumble at best on PC. It's a shame Sony has missed a trick by not offering official haptic support on PC itself, but it's also unsurprising given their doubling down on PS5 exclusives. Still, when a major player closes a door, you can bet a small team with a fraction of the resources will crack open a window. Now, if you'll excuse me, I'm going to chill out in a rainy, forested corner of Atropos and soak up some DualSense ASMR.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'Basically Lego for gamers': This new game controller has modular buttons, sticks, grips, and even vibration motors ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/basically-lego-for-gamers-this-new-game-controller-has-modular-buttons-sticks-grips-and-even-vibration-motors/</link>
                                                                            <description>
                            <![CDATA[ I do wish the aesthetic was nicer, though. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">NgVdCuckfL32UyFLPF7N2A</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/p5gwpavUKsk4mk56creqaj-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 29 May 2026 11:22:38 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/p5gwpavUKsk4mk56creqaj-1280-80.jpg">
                                                            <media:credit><![CDATA[Beitong]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A picture of Beitong&#039;s PanGu controller]]></media:description>                                                            <media:text><![CDATA[A picture of Beitong&#039;s PanGu controller]]></media:text>
                                <media:title type="plain"><![CDATA[A picture of Beitong&#039;s PanGu controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/p5gwpavUKsk4mk56creqaj-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Other bits of PC hardware might not be, but controllers are actually in a really good place right now. There are so many options for all kinds of feel, layouts, and designs, and many of them rival Microsoft, Sony, and Nintendo for build quality, too. That's why, when I saw a company touting itself as 'basically Lego for gamers', I felt like I had to pay attention.</p><p><a href="https://x.com/BEITONG_betop/status/2059838687148703866?s=20" target="_blank">Shared on X</a>, company Beitong has decided to show off its PanGu controller. As all good controllers should by now, it comes with a charging dock, but the real selling point is the controller itself. It has swappable joysticks, ABXY buttons, back paddles, grip shells, and even vibration motors, and they can be exchanged without having to grab a screwdriver. </p><p>Though I'm not massively into the fairly blocky white build, I do find the design itself fascinating. The sticks and pads all have little buttons next to them to pop them out and swap them for others. Beitong says its software immediately understands the modules you've chosen and recommends layouts. It even has presets for specific games, which you can activate through the software. If it works, that's pretty neat.  </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XmAkPX"></div>                            </div>                            <script src="https://kwizly.com/embed/XmAkPX.js" async></script><p>The grips look like they function similarly to the Meta Quest 3 ones (i.e., pull down at the right angle to take them off), and this gives you easy access to the vibration motors. If you want to lessen the weight and don't care about vibration, it seems like a solid way of doing so. </p><p>It comes with TMR joystick modules, up to 1,000 Hz polling (wired and wireless), and is compatible with Windows, Switch, Android, and iOS. It's not officially on Beitong's Amazon storefront just yet, but the controller by itself seems to be fetching <a href="https://gadgethyper.com/products/beitong-pangu-modular-game-controller?srsltid=AfmBOoqBx9ckFTA_MsQewWobvvUAR3drLQ5uFa6JpQfAfkl8bhtqDHhX&variant=44195195682902" target="_blank">north of $100</a> from <a href="https://minixpc.com/products/beitong-pangu-customizable-modular-gaming-controller?srsltid=AfmBOopBbkWKHaMIoi0CMUfuk_9wT7ERM0UjpUUbU4rdgyFBHqqb7OuR&variant=45955796500714" target="_blank">other sellers</a>, with the dock bundle, or dock and bag bundle, fetching a bit more. </p><div class="see-more see-more--clipped"><blockquote class="twitter-tweet hawk-ignore" data-lang="en"><p lang="en" dir="ltr">This Controller Lets You Rebuild EVERYTHING 🤯🎮The BEITONG PanGu Controller is basically LEGO for gamers.Swap joysticks, ABXY buttons, back paddles, grip shells, even vibration motors — all without tools.Symmetrical? Asymmetrical? Lightweight? Fully customized? Your choice.… pic.twitter.com/iaJnF8ZyFR<a href="https://twitter.com/cantworkitout/status/2059838687148703866">May 28, 2026</a></p></blockquote><div class="see-more__filter"></div></div><p>Personally, that seems like a lot to pay for a brand I'm unfamiliar with, though its competition is a bit more expensive. It's similar in design to the $200 <a href="https://www.pcgamer.com/hardware/game-pads/victrix-pro-bfg-reloaded-review/" target="_blank">Turtle Beach Victrix Pro BFG Reloaded </a>(though that requires a screwdriver and is less customizable).</p><p>As I've learned through my years of testing controllers, feel will be nearly everything here, and is pretty much the only thing you can't tell through a video alone. </p><p>With the market filled with numerous excellent controllers, Beitong has a serious climb ahead of it, but the PanGu looks pretty notable regardless. It's just a shame I'm into the engineering a good bit more than the look. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The Steam Controller's main competition isn't from Microsoft or Sony: It's from third-party vendors ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/arguments-that-the-steam-controllers-competition-is-from-microsoft-or-sony-is-categorically-wrong-its-from-third-party-vendors/</link>
                                                                            <description>
                            <![CDATA[ Long gone are the days when third party was for player two. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">vezz6b83Z7dZwtEmYZVDBn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/gokbuqaWmL94WrqqnmSQ4-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 23 May 2026 13:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/gokbuqaWmL94WrqqnmSQ4-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/gokbuqaWmL94WrqqnmSQ4-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">James Bentley, hardware writer</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="SEb5dKTVfZ5EZF4fEcqdGR" name="PCG Writers 2025 Teal36" caption="" alt="PC Gamer headshots (James Bentley)" src="https://cdn.mos.cms.futurecdn.net/SEb5dKTVfZ5EZF4fEcqdGR.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>This week I've been:</strong> Playing <a data-analytics-id="inline-link" href="https://www.pcgamer.com/games/fps/ive-now-played-exactly-one-bullet-hell-fps-and-im-ready-for-this-to-be-the-next-big-genre/" target="_blank">Luna Abyss</a> and <a data-analytics-id="inline-link" href="https://www.pcgamer.com/games/rpg/zero-parades-for-dead-spies-review/" target="_blank">Zero Parades for Dead Spies</a>, instead of stepping out into all the rain we're getting this British Summer.</p></div></div><p>As strange as it is to say, I often feel like I'm <em>forced </em>to use the Xbox Controller whenever I turn on my Xbox (<a href="https://www.pcgamer.com/hardware/everything-is-an-xbox-now-so-i-see-no-reason-to-buy-xbox-again/" target="_blank">which is getting rarer and rarer nowadays anyway</a>). It's still a lovely feeling pad, but it genuinely feels like a downgrade when putting down the <a href="https://www.pcgamer.com/hardware/game-pads/victrix-pro-bfg-reloaded-review/" target="_blank">Victrix Pro BFG Reloaded</a>, <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-8k-aimlabs-edition-review/" target="_blank">Gamesir G7 Pro</a> 8K, or even <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d10-review/" target="_blank">EasySMX D10</a>, which I usually have to hand for my PC. </p><p>I've come to the realisation that, even ignoring the fact that Sony and Microsoft's standard controllers don't have much protection against stick drift, I still wouldn't pick them if I put them head to head against the rest of the controller market. </p><p>And yet, they still hog most of the conversation around controllers, and still regularly sit on Amazon's best-selling list. Case in point, two different listings for the Xbox controller(<a href="https://www.amazon.com/Xbox-Wireless-Gaming-Controller-Velocity-Console/dp/B0DT5SQ84T">1</a> and <a href="https://www.amazon.com/Xbox-Wireless-Gaming-Controller-Headsets-Console/dp/B0F1J12R6N">2</a>) both have Amazon added tags ("Overall Pick" and "Best Seller" as of time of writing), and these serve to place those controllers front and centre to potential buyers. But this preference isn't only a thing on storefronts. </p><p>I'm interested in the <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a>. I don't really like its polling rate or membrane buttons, but its mouse input is neat, and it comes with drift-resistant sticks, which I'd argue should be almost mandatory for a controller now. But I noticed a common narrative came out during its launch: the belief that it's better than Microsoft and Sony's gamepads. While I think that's debatable, I'm left wondering why we are forced to choose only one of those three.</p><p><a href="https://x.com/ErukanuSenpai/status/2050298025126273217" target="_blank">One post</a> went around a few weeks ago, which now has over one million views and over 8K likes as of the time of writing, that directly compares the Steam Controller to Microsoft, Nintendo, and Sony's offerings. It shows that Valve's new controller has tonnes of features that none of the others do, and it justifies the price. It argues, "If your only argument against the Steam Controller is the price, you're stupid."</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/gRJaCxjyjzDp6EwU3RkV.jpg" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JGwMwTfJXJsyhbgG2WV24.jpg" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/L8JxGPmwD479ht6QSrmY4.jpg" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>And it's easy to see why third-party controllers are often left out of these conversations. For one, as I noted at the start, Microsoft's platform is a finicky beast that only allows controllers to work wirelessly if they use its tech. This is why the GameSir G7 Pro has Xbox wireless versions (like the ZZZ and Wuchang model), which are more expensive. Unlike PC, you can't just grab any old wireless controller and get it working. </p><p>But the second, I think, is its history. Growing up, using a non-official controller often meant you were player two. It meant you had to deal with the jammy buttons, sticky bumpers, and weird thumbsticks. Third party meant cheap, both in cash and in feel. And I'm not convinced it has managed to shake that history. I do really like the EasySMX D10, but it being covered with RGB certainly doesn't help it in that regard. The same is true of the <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d05-review/" target="_blank">D05</a>, which has a flashy gold D-Pad and triggers. </p><p>Let's look at raw specs. The Steam Controller for $100 gets you TMR analogue sticks, extra custom buttons, dual trackpads, dual-stage magnetic triggers, gyro support, and a 35-hour battery life with a charging dock. This does beat out the Xbox pad and Sony's DualSense. But the EasySMX D10 gives you TMR sticks, a polling rate that is four times greater, linear Hall effect and non-linear micro switches, extra reprogrammable buttons, and (in my opinion) a nicer dock. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CLUqbm3rpKEfU3gR4VEdpE.jpg" alt="The GameSir G7 Pro gamepad sitting in its charging dock" /><figcaption>GameSir G7 Pro<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/V5g26wXsS9M8fU28HL3HE5.jpg" alt="EasySMX D10 while turned on, in a hand outside" /><figcaption>EasySMX D10<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ERDq49WLsgRGezy5m37wa5.jpg" alt="8BitDo Pro 3 controller" /><figcaption>8BitDo Pro 3<small role="credit">Future</small></figcaption></figure></figure><p>The <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro </a>offers everything the D10 has, but with a nicer feel and stronger build quality (and it's $20 less than the Steam Controller). Raw stats would matter little if they didn't have feel, but these controllers are great in that regard, too. These, and <a href="https://www.pcgamer.com/hardware/controllers/8bitdo-pro-3-review/" target="_blank">8BitDo</a>, all offer genuinely excellent-feeling controllers, equally matching the big dogs of the controller world. </p><p>This doesn't immediately make them better than the Steam Controller, but instead makes each choice viable. And that's what people miss when they overlook third-party controllers. </p><p>In the weeks since its launch, I've become more and more enamoured with the Steam Controller, and I may pick one up anyway, but that will be at least partially driven by what makes the controller unique, not what makes the controller unique when compared to a limited range. </p><p>I like its touchpads and gyro support. I think it seems genuinely pretty neat, and I like its ergonomics too. But its competition is wide, and only getting wider every day.  And it especially makes sense to know what's out there when you're spending up to $100 on it. Still, the fact that the <a href="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/" target="_blank">controller can sing</a> is kinda cool. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ You need to know the Steam Controller's charging puck is always live, so if you accidentally touch it with something conductive, you're in for a shock ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/you-need-to-know-the-steam-controllers-charging-puck-is-always-live-so-if-you-accidentally-touch-it-with-something-conductive-youre-in-for-a-shock/</link>
                                                                            <description>
                            <![CDATA[ It's not an issue exclusive to Valve's hardware, but at the same time, it's something that shouldn't really exist ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">yJpDucP8dQkJJ8TdpxZm8o</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/iCStRVfbcgSCJWxZgdUX4Y-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 22 May 2026 10:26:50 +0000</pubDate>                                                                                                                                <updated>Fri, 22 May 2026 16:45:19 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Evanson ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/HH5qHxdCSKxFpY2HXp2Q5K.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Nick, gaming, and computers all first met in the early 1980s. After leaving university, he became a physics and IT teacher and started writing about tech in the late 1990s. That resulted in him working with MadOnion to write the help files for 3DMark and PCMark. After a short stint working at Beyond3D.com, Nick joined Futuremark (MadOnion rebranded) full-time, as editor-in-chief for its PC gaming section, YouGamers. After the site shutdown, he became an engineering and computing lecturer for many years, but missed the writing bug. Cue four years at TechSpot.com covering everything and anything to do with tech and PCs. He freely admits to being far too obsessed with GPUs and open-world grindy RPGs, but who isn&#039;t these days?&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/iCStRVfbcgSCJWxZgdUX4Y-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/iCStRVfbcgSCJWxZgdUX4Y-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/SteamController/comments/1tjhiyv/psa_watch_out_for_the_exposed_contacts_of_the">PSA: Watch out for the exposed contacts of the Puck! Almost started a fire due to metallic smartwatch strap</a> from <a href="https://www.reddit.com/r/SteamController">r/SteamController</a></blockquote><script async src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p><br>Despite the relatively high price tag and software restrictions, the new <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> has been a massive success for Valve. And just like so many high-end gamepads, it also comes with a neat charging system that conveniently keeps it always ready for action. However, as one redditor found out, the simple puck will punish quite noticeably if you're not careful about keeping certain materials well away from it.</p><p>Essentially, Reddit user Toikka discovered that the charging puck for the Steam Controller is constantly 'live' when it's plugged in, i.e. the little metal pins don't 'deactivate' when you lift the gamepad off the puck. This was discovered when the user accidentally let their smartwatch's wrist strap briefly touch the pins.</p><p>Since it was a magnetically-latching band, the whole thing is metal-based and thus electrically conductive. Result? Valve's puck tried to 'charge' Toikka's wrist strap, and it "started sizzling due to a short circuit."</p><p>This kind of potential hazard isn't exclusive to Valve's unit, as the charging dock for my <a href="https://www.pcgamer.com/hardware/controllers/8bitdo-ultimate-2-wireless-review/" target="_blank">8BitDo Ultimate 2</a> controller does the same thing. I used a multimeter to check, and there's a constant voltage across them. Both companies are using a simple, low-cost design for their chargers to offset higher material costs elsewhere in the device, so this is perfectly normal.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-O6jx1O"></div>                            </div>                            <script src="https://kwizly.com/embed/O6jx1O.js" async></script><p>An ideal, but less cost-effective, solution would be to have an additional contact that acts as a sense pin. With it, the charger could be designed so that the remaining pins only become live when the sense pin is grounded by the gamepad, much like how those in the 12VHPWR power connector on Nvidia's latest RTX graphics cards work.</p><p>Of course, a far simpler and practically free solution to the whole issue is to just keep the charging system out of the way when you're not using it, and absolutely never put anything conductive anywhere near it. Or at the very least, unplug the puck so it's not live (edit: This will essentially nix the controller, as reader Marasi has reminded me that the puck also acts as the wireless dongle).</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2559px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="gVDBhcWUcvzBBvVapZzK6f" name="8bitdo_ultimate_2_wireless_controller_08" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller base" src="https://cdn.mos.cms.futurecdn.net/gVDBhcWUcvzBBvVapZzK6f.jpg" mos="" align="middle" fullscreen="" width="2559" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">8BitDo's Ultimate 2 charging dock has spicey pins too </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>There is one thing that I do think Valve et al. <em>should</em> be doing, though, and it's to add a very clear warning about the live nature of the puck. I hasten to add that such an instruction might actually be there somewhere in the documentation; unfortunately, I don't have the Steam Controller or Ultimate 2 boxes to hand to double-check, but there's nothing relating to this on either company's website.</p><p>But even so, given the litigious nature of today's world, I dare say that Valve might want to beef up whatever hints or warnings it already offers. Because I wouldn't be surprised if a bunch of social media nitwits decide to start a new trend of puckifying various things, resulting in an even greater nitwit causing a serious accident or harm.</p>
                                                            </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:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <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[ 'Average Valve W': After some Steam Controller packages were sent to the wrong country, Valve is reportedly giving 'any standard-edition title' to affected shoppers ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/average-valve-w-after-some-steam-controller-packages-were-sent-to-the-wrong-country-valve-is-reportedly-giving-any-standard-edition-title-to-affected-shoppers/</link>
                                                                            <description>
                            <![CDATA[ Apparently, a small number of packages were accidentally sent to the UK. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">dbwuzoxCEmvcEUiGgBhQLm</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/JVzVspDAf3wen3Zpg7z8-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 15 May 2026 11:54:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <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>It seems like the <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> is a hit. After selling out immediately, Valve implemented a <a href="https://www.pcgamer.com/hardware/valve-forming-an-orderly-queue-for-the-steam-controller-makes-it-clear-we-need-the-same-for-the-steam-machine-frame-and-perhaps-a-lot-more-in-demand-tech-too/" target="_blank">reservation system</a> to get your hands on it without having to <a href="https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/" target="_blank">fight so many scalpers</a>. If you recently purchased one, and your package has been sent to the wrong country by mistake, there's a chance Valve will reimburse you with a game of your choosing. That's not bad for a short wait. </p><p>That's according to user <a href="https://www.reddit.com/r/Steam/comments/1tcaprh/average_valve_w/" target="_blank">hvhhggggh over on the Steam Subreddit</a>. Their Steam Controller was reportedly routed to the UK by accident, and while they wait for it to be rerouted, Valve said, "To thank you for your patience, we would like to offer to add a game to your library. Please pick any standard-edition title available for purchase in your region and reply here with your selection" </p><p>I have reached out to Valve to confirm if this is the real policy around Steam Controller shipping delays and if there are any caveats. Given that most of the games on Steam are not owned by Valve, one would assume that the company would be paying out of pocket for any non-Valve choices here. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eM7mDO"></div>                            </div>                            <script src="https://kwizly.com/embed/eM7mDO.js" async></script><p>The email does clarify that only a "small number of packages were mistakenly sent to the UK", but we don't have concrete figures on how many just yet. </p><p>It is worth noting that <a href="https://www.reddit.com/r/Steam/comments/1tcaprh/comment/olmrstd/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">this user reached out to complain</a> when their package was late, so that's worth doing if yours has also been held up in shipping. This gesture from Valve has been met with widespread support, with the original Reddit user calling it an "Average Valve W". </p><p>The <a href="https://www.reddit.com/r/Steam/comments/1tcaprh/comment/olmr5nb/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">top comment </a>is a double compliment for Valve, saying "Sometimes I wish I had a reason to use the customer service and experience something like this, but so far Steam has been a frustratingly great experience and I have no substantive complaints."</p><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/Steam/comments/1tcaprh/average_valve_w">Average valve W</a> from <a href="https://www.reddit.com/r/Steam">r/Steam</a></blockquote><script async src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p>When someone mentioned that they could pick the most expensive standard-edition game out there, the <a href="https://www.reddit.com/r/Steam/comments/1tcaprh/comment/olmp9fh/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">original poster</a> said <a href="https://www.pcgamer.com/games/racing/forza-horizon-6-review/" target="_blank">Forza Horizon 6</a> was on their list. They later confirmed it was between that and <a href="https://www.pcgamer.com/games/action/after-3-hours-with-007-first-light-ios-weaknesses-are-on-display-in-a-way-they-havent-been-since-hitman-absolution/" target="_blank">007 First Light</a>, but Forza being Steam Deck verified made them pick the new racing game instead. </p><p>Though a seemingly small gesture, giving away games to those getting their Steam Controllers late has picked up a lot of goodwill for the company, and the original Reddit thread is filled with users sharing good experiences with Valve support. </p><p>At least those who get their controllers late will have a fancy new game to test the controller with. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Leaked Xbox Elite 3 controller images show at least one oddball addition, but it'll struggle to compete in a radically changed market ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/leaked-xbox-elite-3-controller-images-show-at-least-one-oddball-addition-but-itll-struggle-to-compete-in-a-radically-changed-market/</link>
                                                                            <description>
                            <![CDATA[ Gamepads are better, and cheaper, than they've ever been. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">qaT6DtsnjEHBcZpp8FjbgH</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/WNbCwztuujXpqSgcDyWgkE-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 14 May 2026 23:14:27 +0000</pubDate>                                                                                                                                <updated>Thu, 14 May 2026 23:41:12 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/WNbCwztuujXpqSgcDyWgkE-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A close up of the Xbox button on an Xbox controller]]></media:description>                                                            <media:text><![CDATA[A close up of the Xbox button on an Xbox controller]]></media:text>
                                <media:title type="plain"><![CDATA[A close up of the Xbox button on an Xbox controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/WNbCwztuujXpqSgcDyWgkE-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Earlier today, Brazilian tech outlet <a href="https://tecnoblog.net/noticias/este-e-o-novo-controle-da-microsoft-para-xbox-cloud-gaming/">Tecnoblog</a> published images of two unannounced Xbox controllers reportedly obtained from the country's telecommunications regulator. One is a small form factor gamepad designed for cloud gaming, resembling similar third-party gamepads by the likes of 8bitDo. The other is the successor to the Xbox Elite Controller 2.</p><p>I've been looking forward to news about this gamepad because, since the last iteration released in 2019, the whole landscape for gamepads has changed. Nowadays a third-party gamepad with all the pro accoutrements—rear paddle buttons, interchangeable D-pads, replaceable sticks—can be had for bargain prices, or at least, well below the Series 2's $180 going price. The <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/">Gamesir G7 Pro</a>, for example, which is in some ways <em>more </em>feature-rich, goes for $80. What can a titan like Microsoft do to stand out?</p><p>Microsoft obviously hasn't announced this controller, we don't know its price, and we don't know the full extent of its features. But based on the images and Tecnoblog's intel from the regulator's documents, it's a curious beast, chiefly due to what resembles two scroll wheels on either side of the headphone jack.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:880px;"><p class="vanilla-image-block" style="padding-top:47.50%;"><img id="XLTJeF6dikV6iMn8FdppzV" name="xbox-elite-3-2113-4" alt="The scroll wheels on the Xbox Elite 3 controller" src="https://cdn.mos.cms.futurecdn.net/XLTJeF6dikV6iMn8FdppzV.webp" mos="" align="middle" fullscreen="" width="880" height="418" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tecnoblog)</span></figcaption></figure><p>What could these be for? Tecnoblog speculates they could be designed for flight sims, but that seems like an extremely niche focus: I reckon flight sim fanatics would prefer proper flight sim peripherals. How would they be implemented in far more mainstream games, like FPSes? </p><p>Here's two more images from Tecnoblog:</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:658px;"><p class="vanilla-image-block" style="padding-top:72.95%;"><img id="ZGGiTRX7kLSWhtfk9wfqV9" name="Xbox Series 3" alt="An image of the unannounced Xbox Series 3 pro controller" src="https://cdn.mos.cms.futurecdn.net/ZGGiTRX7kLSWhtfk9wfqV9.webp" mos="" align="middle" fullscreen="" width="658" height="480" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tecnoblog)</span></figcaption></figure><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:739px;"><p class="vanilla-image-block" style="padding-top:53.59%;"><img id="LqhMQz4z6P8AX2VHXoBGX9" name="Xbox Series 3" alt="An image of the unannounced Xbox Series 3 pro controller" src="https://cdn.mos.cms.futurecdn.net/LqhMQz4z6P8AX2VHXoBGX9.webp" mos="" align="middle" fullscreen="" width="739" height="396" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tecnoblog)</span></figcaption></figure><p>Based on the images alone, that's about as radical as the Elite 3 controller gets. Like the previous model it'll have interchangeable rear paddles, and swappable sticks and D-pads. That middle button just under the Xbox button switches between local and cloud modes, the latter connecting to Xbox Cloud Gaming servers. The battery is still rechargeable and replaceable albeit smaller.</p><p>One thing that's impossible to glean from the images is the thing that's most important. Will Microsoft implement drift-free Hall Effect technology in the analog sticks, thus eliminating the ever-present fear of stick drift? Or might they implement Tunnel Magnetoresistance (TMR) sticks, which are similarly drift-free, but marginally more accurate? </p><p>Let's be blunt: If they don't implement either it's a non-starter. As I've written before, in 2026 you should <em>refuse</em> to buy any controller that comes with the problems endemic to Sony, Xbox, and Nintendo's controllers. You can buy third-party Hall Effect controllers for a pittance nowadays.</p><p>I'm also—I won't lie—kinda bored by the Elite 3 controller. Why would I buy this instead of the Steam Controller which has those still severely underrated trackpads? Valve's controller has TMR sticks as well, and while its rear paddle buttons are baked in and there's only two of them, I reckon four paddle buttons is a more niche proposition than trackpads (<a href="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">time will prove me right!</a>).</p><p>The smaller controller is very much a meat and potatoes affair: it's got all the usual features without any of the pro trimmings, it's remarkably small and designed for carrying around, and bears the same new toggle button beneath the Xbox button.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1060px;"><p class="vanilla-image-block" style="padding-top:50.38%;"><img id="2ecbzfxFCrq3vKiM5UVhwc" name="controle-xbox-montagem-1060x534" alt="The new, unannounced Xbox controller" src="https://cdn.mos.cms.futurecdn.net/2ecbzfxFCrq3vKiM5UVhwc.webp" mos="" align="middle" fullscreen="" width="1060" height="534" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tecnoblog)</span></figcaption></figure><p>When will these be properly announced? Microsoft hasn't given any hints, but my best guess would be at its Xbox Games Showcase on June 7, which happens as part of <a href="https://www.pcgamer.com/gaming-industry/events-conferences/summer-game-fest-2026/">Summer Game Fest 2026</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W2YRoe"></div>                            </div>                            <script src="https://kwizly.com/embed/W2YRoe.js" async></script>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Here's when the Steam Controller will be available again in Australia, and I hope you like being awake at 3am ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/heres-when-the-steam-controller-will-be-available-again-in-australia-and-i-hope-you-like-being-awake-at-3am/</link>
                                                                            <description>
                            <![CDATA[ It's time to start feeling anxious. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">xwe8megd55zr9atz7kKDUa</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/eodU4CmU7kSxoUnAF2T6HY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 08 May 2026 03:33:51 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></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>Steam Controller launched on Tuesday in Australia and promptly sold out. It's perhaps not surprising, but it sure is <em>annoying</em>. As a result of the rush—and to combat opportunistic resellers—Valve has announced it will kick off a reservation queue for the next drop. </p><p>The queue will reopen tomorrow, May 9 at 3am AEST. Yes, that's a somewhat inconvenient time to reserve your placement in a digital queue, but Australians should be used to this. Keep in mind it's a queue: getting in line at 3:01am tomorrow morning won't mean you'll have your controller immediately, but it'll mean you'll get one before everyone else.</p><p>As per Valve, reservations may take a while to fulfil in Australia. "Replenishment of inventory will vary from region to region. We will start fulfilling reservations next week in the US / Canada, and UK / EU / AU in the following weeks."</p><p>Only one Steam Controller can be reserved per Steam account, and once you've received the order email you'll need to make the purchase within 72 hours. Also, if you've already bought a Steam Controller, you're not eligible to be a part of this queue: sorry, it's everyone else's turn.</p><p>As Ted Litchfield <a href="https://www.pcgamer.com/hardware/game-pads/steam-controllers-to-come-back-in-stock-with-reprise-of-steam-deck-reservation-system/">pointed out</a> earlier today, this is the same process Valve resorted to when the Steam Deck was first launched. It's obviously not as convenient as buying something and expecting it to ship immediately, but then, if it means controllers fall into the hands of actual users <a href="https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/">and not eBay resellers</a>, it's definitely for the best.</p><p>The Steam Controller costs AU$149 in Australia, with shipping included. Valve didn't specify exactly where the reservation page will be, but my best guess is on the <a href="https://store.steampowered.com/sale/steamcontroller" target="_blank">Steam Controller listing</a>.</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:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/8DyQVBz7FCynDY9QiJyH9D.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;&lt;br&gt;&lt;/p&gt; ]]></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[ Valve releases the CAD files for the Steam Controller and its Puck, no doubt ushering in an era of unholy 3D printed creations ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/valve-releases-the-cad-files-for-the-steam-controller-and-its-puck-no-doubt-ushering-in-an-era-of-unholy-3d-printed-creations/</link>
                                                                            <description>
                            <![CDATA[ Making it your own. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">FDTsw6BBMeysFqkQtDqDt9</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/BFyCvxhF5rvguJAynziMSY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 06 May 2026 14:11:33 +0000</pubDate>                                                                                                                                <updated>Thu, 07 May 2026 09:55:54 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <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>The new Steam Controller launched on May 4 and promptly <a href="https://www.pcgamer.com/hardware/controllers/the-steam-controller-sold-out-in-30-minutes-utterly-breaking-steam-in-the-process/" target="_blank">sold out in about 30 minutes</a>, bringing Steam to its knees in the process. There's already a lot to like about Valve's funky fresh gamepad, as our Jacob's <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller review</a> can attest, but the company is now offering what is no doubt the cherry on the cake for modders.</p><p>Valve has just released <a href="https://steamcommunity.com/groups/steam_hardware/announcements/detail/702141174212723353" target="_blank">the CAD files for the external shell of the Steam Controller itself</a>, and its rechargeable puck as well. So, if our <a href="https://www.youtube.com/watch?v=Va9aTIktlSk" target="_blank">Steam Controller teardown video</a> left you hankering to get into the guts of the thing yourself, you've now got options for how you put it back together again.</p><p>Released under <a href="https://gitlab.steamos.cloud/SteamHardware/SteamController/-/blob/main/license.txt?ref_type=heads" target="_blank">a Creative Commons license</a>, the hardware mod squad can use the free files to 3D model and print their own take on the Steam Controller's "surface topology". Specifically, the files shared via <a href="https://gitlab.steamos.cloud/SteamHardware/SteamController" target="_blank">GitLab</a> have been released under a '<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank">CC BY-NC-SA 4.0</a>' license, which means you can share your creations so long as you do so under the same license, and with credit to Valve.</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>Typically, the main restriction of this type of Creative Commons license is that you can't sell your custom creations or otherwise make them with commercial uses in mind. However, Valve includes the following addendum at the top of the license.txt file: "If you are interested in creating a commercial product based on the Materials, please get in touch with Valve."</p><p>Historically, Valve has been surprisingly chill about allowing folks to sell remixed creations based on its properties. For instance, all the way back in 2017, Valve <a href="https://www.pcgamer.com/valve-will-allow-fans-to-create-and-sell-merchandise-based-on-its-games/" target="_blank">allowed fans to create and sell merchandise based on its games</a> via 3D printing service Shapeways. Furthermore, unlike other massive gaming corporations I could name, it's not been aggressively litigious about its own IP, software or otherwise. In other words, if you have a commercial purpose in mind for your custom Steam Controller casing, Valve would probably quite like to hear about it.</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/Va9aTIktlSk" allowfullscreen></iframe></div></div><p>Personally, I had been looking for some way to zhuzh up the Steam Controller's outer shell. <a href="https://www.pcgamer.com/hardware/controllers/weve-never-met-a-cult-we-didnt-want-to-be-a-part-of-so-were-getting-in-on-the-ground-floor-dbrand-announces-skins-for-the-new-steam-controller-in-the-most-dbrand-way/" target="_blank">Dbrand already offers a selection of skins for the gamepad</a>, though I'm not particularly partial to any of these (not to mention the fact that the more premium options cost close to a quarter of the Steam Controller's price tag).</p><p>I'm much more intrigued by <a href="https://www.pcgamer.com/hardware/pc-cases/dbrand-has-teased-a-render-of-a-portal-companion-cube-steam-machine-case-so-you-can-put-a-case-around-your-case/" target="_blank">the Companion Cube-style housing</a> Dbrand is already teasing for the Steam Machine. Not just because I've never lived down incinerating the Weighted Companion Cube in the original Portal, but also because it demonstrates what fun you can have with a custom shell design. Personally, I'm wondering if I can get my Steam Controller to look anything like that <a href="https://www.pcgamer.com/a-hardware-hacker-turned-that-horrid-toy-controller-into-a-working-one/" target="_blank">horrid Fisher-Price toy controller</a>.</p><p>Mind you, it'll be a minute before I can get my mitts on my own Steam Controller. As of time of writing, <a href="https://store.steampowered.com/sale/steamcontroller" target="_blank">the controllers are still out of stock on Steam</a> (though <a href="https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/" target="_blank">a slew of Valve's funky fresh gamepad hit eBay at astronomical prices</a>).</p><p><a href="https://x.com/valvesoftware/status/2051695149026353424?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E2051695149026353424%7Ctwgr%5Ef75d3ab1f239e3a51324c6ff71f8d46bf232cae4%7Ctwcon%5Es1_&ref_url=https%3A%2F%2Fvideocardz.com%2Fnewz%2Fvalve-releases-steam-controller-cad-files-modding-may-begin" target="_blank">Valve shared on X</a> this week that the "Steam Controller ran out faster than we anticipated, and we hate that not everyone who wanted one was able to get it. We’re working on getting more in stock and will have an update on expected timeline soon."</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Valve says Steam Controller sold out 'faster than we anticipated' but previously told us it has knobs it can turn to get more ]]></title>
                                                                                                                                                                                                <link>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/</link>
                                                                            <description>
                            <![CDATA[ Pray tell of thy knobs, Valve. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">W3ZmhyacvomBhkeRNBK7B3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/R2QsUpHPTpF2WkaMNJXVMY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 05 May 2026 16:53:57 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/R2QsUpHPTpF2WkaMNJXVMY-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/R2QsUpHPTpF2WkaMNJXVMY-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> has been available to purchase for barely a day and it's already sold out. That's a familiar occurrence around major hardware launches but even Valve is surprised by the sales fervour for the new pad, which <a href="https://www.pcgamer.com/hardware/controllers/the-steam-controller-sold-out-in-30-minutes-utterly-breaking-steam-in-the-process/" target="_blank">mostly sold out in minutes, not hours</a>. </p><p>In a post on Bluesky, it promises more are on the way and a timeline for availability is coming.</p><blockquote class="bluesky-embed" data-bluesky-uri="at://did:plc:yqtd2qj44va6cneamdsgdaez/app.bsky.feed.post/3ml4kyx4nns2w" data-bluesky-cid="bafyreifrq2bksszzxlscdlqc5qvtltoiaasu6pdpxdv3so4xh4exl2ckfe"><p lang="en">Steam Controller ran out faster than we anticipated, and we hate that not everyone who wanted one was able to get it. We’re working on getting more in stock and will have an update on expected timeline soon.</p>— @valvesoftware.com (<a href="https://bsky.app/profile/did:plc:yqtd2qj44va6cneamdsgdaez?ref_src=embed">@valvesoftware.com.bsky.social</a>) <a href="https://bsky.app/profile/valvesoftware.com/post/3ml4kyx4nns2w">2026-05-05T16:51:33.866Z</a></blockquote><p>Prior to the launch of the Steam Controller, we spoke to <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">Lawrence Yang and Steve Cardinali</a>, both of whom worked on the controller, about availability. In that chat, the two seemed confident about supply.</p><p>"We have built up a good supply of this," Cardinali said at the time. Though he noted that this was based on anticipated demand, which, by its own admission today, was lower than reality.</p><p>"But it's based on what we anticipate 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><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xp4ZAX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xp4ZAX.js" async></script><p>Yang then told us that Valve has knobs it can turn; one would expect this entails additional orders with manufacturers and assembly capacity to better meet demand.</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><p>The flipside for Valve is how far do you go? Do you risk making too many, which leads to a surplus and high inventory, or try to eke out supply to meet demand over a longer period of time, as it did with the Steam Deck? Valve was stuck with a heaps of excess inventory for the <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">original Steam Controller</a>, though that's not going to be a concern here: the new controller is off to a fine start by comparison.</p><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="BFyCvxhF5rvguJAynziMSY" name="IMG_4181_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/BFyCvxhF5rvguJAynziMSY.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>"If we're like, 'oh, we actually probably need to make more' then we can turn that knob up and have them producing more," Yang says.</p><p>The downside to this higher than anticipated demand is that the Steam Controller has already gained attention from scalpers. Some have been <a href="https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/" target="_blank">selling the controller on eBay for $300</a>, which is a 200% markup, though these appear to be drying up from a cursory look. Potentially as these listings are reported or bought then cancelled over and over again, to make the listings untenable—a strategy we saw employed with graphics cards during shortages. </p><p>But, hey, there's sure to be plenty of supply for controllers in the long-run. From my <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-teardown-simple-to-open-easy-to-fix/" target="_blank">dive inside the controller</a>, there's little here to pose a supply-side risk. No RAM, no storage, just a couple sensors, PCBs and SoCs. While it does take a while to get things shipped around the globe, resupply shouldn't pose a huge issue.</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," Yang says, rather hopefully.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Steam Controller is sold out in most regions, but Australia—you still have a chance (Update: Too late it's gone) ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/steam-controller-is-sold-out-in-most-regions-but-australia-you-still-have-a-chance/</link>
                                                                            <description>
                            <![CDATA[ How long will it last? Probably not long. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">xCdxJvQoH9GiRNfmwGs4kF</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/zZwRjNRUQ65aXkcjWiVtEY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 04 May 2026 23:17:11 +0000</pubDate>                                                                                                                                <updated>Tue, 05 May 2026 01:01:17 +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:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/zZwRjNRUQ65aXkcjWiVtEY-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/zZwRjNRUQ65aXkcjWiVtEY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The Steam Controller is now <strong>sold out</strong> in Australia.</p><p>Pre-orders for the Steam Controller went live overnight and <a href="https://www.pcgamer.com/hardware/controllers/the-steam-controller-sold-out-in-30-minutes-utterly-breaking-steam-in-the-process/">quickly sold out</a>. Not only that, the rush briefly brought down Steam in its entirety. I didn't expect the demand to be that high, nor apparently did Valve.</p><p>Demand hasn't proven so high in Australia though, because it's <a href="https://store.steampowered.com/sale/steamcontroller" target="_blank">very much still available</a> down under. It'll ship in 6-10 business days—more than the usual 3-5 business days—which implies a bunch of people <em>have </em>bought it.</p><p>The lingering availability mirrors the Steam Deck situation in Australia. Whereas Valve's handheld devices have suffered long unavailability in most other regions, they've been consistently available in Australia. </p><p>Does that mean we're buying them less down here? It's possible, though Valve's handheld did hit the market much later than in the northern hemisphere. The Steam Controller's availability could also have something to do with pre-orders launching in the dead of night in Australia: it may only be a matter of hours before they're gone.</p><p>Whatever the case, if you're an Australian and want a Steam Controller you're currently not at the mercy of scalpers, who are <a href="https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/">turning a tidy profit</a> in regions where the device is sold out. It's still available for its normal price of AU$149.</p>
                                                            </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:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/rGvfSUkSBEPzBAVS3jRh9E.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Tyler grew up in Silicon Valley during the &#039;80s and &#039;90s, playing games like Zork and Arkanoid on early PCs. He was later captivated by Myst, SimCity, Civilization, Command &amp; Conquer, all the shooters they call &quot;boomer shooters&quot; now, and PS1 classic Bushido Blade (that&#039;s right: he had Bleem!). Tyler joined PC Gamer in 2011, and today he&#039;s focused on the site&#039;s news coverage. His hobbies include amateur boxing and adding to his 1,200-plus hours in Rocket League.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <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[ The Steam Controller sold out in 30 minutes, utterly breaking Steam in the process ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/the-steam-controller-sold-out-in-30-minutes-utterly-breaking-steam-in-the-process/</link>
                                                                            <description>
                            <![CDATA[ The situation is fluid. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">mLkvLAu5TomJNYvocH9yug</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/93GTj89rWiRZsHuLFPBAHm-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 04 May 2026 17:52:06 +0000</pubDate>                                                                                                                                <updated>Mon, 04 May 2026 18:00:19 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                <author><![CDATA[ ted.litchfield@futurenet.com (Ted Litchfield) ]]></author>                    <dc:creator><![CDATA[ Ted Litchfield ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/8DyQVBz7FCynDY9QiJyH9D.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;&lt;br&gt;&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/93GTj89rWiRZsHuLFPBAHm-1280-80.jpg">
                                                            <media:credit><![CDATA[Valve]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Team Fortress Spy being shocked]]></media:description>                                                            <media:text><![CDATA[Team Fortress Spy being shocked]]></media:text>
                                <media:title type="plain"><![CDATA[Team Fortress Spy being shocked]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/93GTj89rWiRZsHuLFPBAHm-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Grass grows, birds fly, sun shines, and <del>brother I hurt people,</del> a Valve hardware launch brought Steam to its knees. A half hour after launch, the <a href="https://store.steampowered.com/sale/steamcontroller" target="_blank">Steam Controller has already sold out</a> after seriously borking the Steam Store. Fifteen minutes later? A sliver of hope as it showed fresh stock once more, only to immediately sell out again (if it wasn't a mirage in the first place).</p><p><a href="https://downdetector.com/status/steam/" target="_blank">Downdetector</a> shows a massive spike in error reports right around the 1 PM Eastern, 10 AM Pacific launch time of the Steam Controller, while anecdotally, the Steam Store was a minefield. I have the error message, "<em>There seems to have been an error initializing or updating your transaction. Please wait a minute and try again or contact support for assistance</em>," seared into my eyeballs at this point.</p><p>The <a href="https://store.steampowered.com/sale/steamcontroller" target="_blank">Steam Controller's splashy page on Steam</a> initially showed a 3-5 business day wait before extending to 6-10. I was frantically refreshing the payment page on Steam during PC Gamer's daily meeting right up until PCG news lead Andy Chalk gleefully told me my efforts were in vain.</p><p>I think we all anticipated this would happen, given the <a href="https://www.pcgamer.com/valve-clears-up-steam-deck-availability-confusion-just-as-q2-order-emails-go-out/" target="_blank">early rush to secure Steam Decks</a> all the way back in 2022, but like everyone out there trying to bag a day one Steam Controller, I figured I was built different—unspecified millions of people who successfully bought a controller clearly <em>were</em> built different. </p><p>It's an incredible turnaround from the ignominious end of the <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">original Steam Controller</a>, whose janky double-A battery goodness was going for an embarrassing $5 a pop by the end of its lifespan. Valve hardware is an <em>event</em> now, even if it's just a controller.</p><p>The new Steam Controller was supposed to have some friends launching with it today, but <a href="https://www.pcgamer.com/hardware/gaming-pcs/valve-on-the-steam-machine-delays-obviously-were-bummed-that-this-is-the-state-of-things/" target="_blank">the RAM crisis has clearly affected Valve's hardware rollout</a>. The company has said it's still planning on getting the Steam Frame and new Steam Machine out this year.</p><p>Hardware writer Jacob Ridley enjoyed the Steam Controller as a <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">great new all-rounder in his review</a>, but cautioned that it wasn't a value champion compared to cheaper options from 8bitdo or Gamesir that still offer premium features like Hall Effect sticks.</p><p>This is a developing story.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XkGmNX"></div>                            </div>                            <script src="https://kwizly.com/embed/XkGmNX.js" async></script><div class="product"><a data-dimension112="ad553431-fe66-49b4-9408-8c435e94a115" 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="ad553431-fe66-49b4-9408-8c435e94a115" 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[ GameSir G7 Pro 8K Aimlabs Edition review  ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-8k-aimlabs-edition-review/</link>
                                                                            <description>
                            <![CDATA[ Would you pay $10 more for higher polling? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LxaJz5yKcWogc5hm5z84mj</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/uT6Y9ABVa5DY9xXcAJrEwf-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 01 May 2026 11:37:15 +0000</pubDate>                                                                                                                                <updated>Fri, 01 May 2026 11:41:50 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/uT6Y9ABVa5DY9xXcAJrEwf-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The GameSir G7 Pro 8K Aimlabs Edition on its dock on wood, outside]]></media:description>                                                            <media:text><![CDATA[The GameSir G7 Pro 8K Aimlabs Edition on its dock on wood, outside]]></media:text>
                                <media:title type="plain"><![CDATA[The GameSir G7 Pro 8K Aimlabs Edition on its dock on wood, outside]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/uT6Y9ABVa5DY9xXcAJrEwf-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I've been a little enamoured with the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro</a> ever since our review came out late last year. We're firmly starting to get pro controllers without pro pricing, with rich feature sets, solid aesthetics, and even charging docks to boot. And, for the average gamer, you no longer have to go north of $150 for a truly luxurious pad. </p><p>The GameSir G7 Pro 8K does pretty much everything the G7 Pro does, except, well, it adds 8K polling. I think you could have figured that one out without me. So that's eight times the polling for just over 10% more cash. </p><p>You're also getting GameSir's Mag-Res Gen-2 TMR sticks, a handful of connectivity modes, magnetic faceplates and extra joysticks / D-pads. It's a mighty fine package that impressed me right out of the box. That would mean far less if it didn't feel good, but after my time with the GameSir G7 Pro 8K, I'm not only happy to make it my day-to-day controller, but I found myself willing to tackle shooters that I would traditionally want my old mouse and keyboard for. </p><p><a href="https://www.pcgamer.com/games/fps/mouse-pi-for-hire-review/" target="_blank">Mouse: PI for Hire</a> is a fast-paced shooter that's all about throwing you in a room with a bunch of baddies, and only letting you out when you've killed them all, yet the G7 Pro 8K's comfortable sticks, solid grips and precise triggers make it far less tense than you would think. And the game's length (ie, more than six hours) makes it perfect for controller, as I can get fatigued when I'm hunched over my desk. I feel like I'm not losing as much as I usually do when swapping from the competitive and precise keyboard to the slightly more casual controller. </p><div  class="fancy-box"><div class="fancy_box-title">GameSir G7 Pro 8K 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="v8MYQZdeEpfEsqbdEXTt6g" name="IMG_9039" caption="" alt="The GameSir G7 Pro 8K Aimlabs Edition on its stand on a black table, with spare D-Pads and thumbsticks nearby" src="https://cdn.mos.cms.futurecdn.net/v8MYQZdeEpfEsqbdEXTt6g.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 (wired only), 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>Polling rate: </strong>Up to 8,000 Hz<br><strong>Thumbsticks:</strong> TMR<br><strong>Thumbstick layout: </strong>Asymmetric<br><strong>Weight: </strong>270 grams<br><strong>Dimensions: </strong>120 x 160 x 64.2 mm<br><strong>Price: </strong><a data-analytics-id="inline-link" href="https://gamesir.com/products/gamesir-g7-pro-aimlabs-edition?srsltid=AfmBOooKr6GtBVioLxbP3CzQgCnsnTVEu82RRgU8W6Ep71JX7KZUCZpW" target="_blank">$90</a></p></div></div><p><a href="https://www.pcgamer.com/games/sports/10-years-later-no-one-has-replicated-rocket-leagues-mojo/" target="_blank">Rocket League</a> fares super well, thanks in part to all the controller's little extra buttons. The controller has two extra clicky buttons next to the bumpers and two paddles on the back, all of which are programmable. You can swap the trigger from Hall effect analogue ones to micro switch, with just a flick of a toggle, and you can lock the bumpers to stop accidental misclicks too. It's intuitive, easy to use, and stops me from spamming the back paddles as I wait for the loading screen to finish. </p><p>I'm not a fan of the connected D-Pad that comes preattached to the G7 Pro 8K, but I quickly swapped that out for a more traditional one from its box. It's super clicky, with well-defined buttons. I find the face buttons to give a responsive click, too, but not quite as loud as the D-pad or shoulder buttons. There's not an inch of the controller's buttons that I find unappealing, which is a real sight to behold (or hear). </p><div><blockquote><p>I found myself willing to tackle shooters that I would traditionally want my old mouse and keyboard for. </p></blockquote></div><p>I also find the G7 Pro 8K to be almost perfect for my hands. It feels fairly light, but certainly comforting to hold, and it's sturdy enough that I'm not afraid of dropping it. Squeezing it too hard doesn't cause any flex, and there's only a slight rattle if you shake it very hard, which I hope you're unlikely to do while you game. It has asymmetrical sticks, which already makes it rather Xbox-like, but its weight feel and shape also take after Microsoft, and it does it well. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ggGbfwqDPoR9tSiUVeSmyf.jpg" alt="The GameSir G7 Pro 8K Aimlabs Edition from the front, in a hand" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QVeXGegUHx4nge9ZjuLV3g.jpg" alt="The GameSir G7 Pro 8K Aimlabs Edition in a hand from the front left" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sdrdUGL4TrtVuzskTKa5xf.jpg" alt="The GameSir G7 Pro 8K Aimlabs Edition from below, in a hand, outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SPn3wLn8oE6DK5kRPEgAvf.jpg" alt="The GameSir G7 Pro 8K Aimlabs Edition in a hand outside, from the right" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The G7 Pro 8K model I have my hands on is the Aimlabs version. It comes with a flashy mix of blues and blacks, with a golden D-pad. The faceplate comes off, showing the innards underneath, but there are no extra faceplates in the box. I think I prefer the black and red model of the G7 Pro we reviewed, but there's a golden model and a Nioh 3 model of the 8K on the way in the future. The benefit of the standard red and black model is that its black grips complement other faceplates more than the translucent blue of the Aimlabs model. </p><p>For the average gamer, you will not notice the differences between the 8K model and the normal version of this controller. 1,000 Hz polling is more than fast enough, and even if you could pick up the 0.125 ms response time offered by 8K polling, you need a CPU strong enough and fps high enough for that to actually matter.</p><p>GameSir says the Gen-2 sticks focus on 'pro-level performance' with smoother, more linear control. I personally don't spot them as being head and shoulders above other TMR sticks, but then again, I'm not a pro. It's also worth mentioning that, for most, an 8,000 Hz polling rate just isn't worth taking the battery life hit to use it. At 1,000 Hz, the G7 Pro 8K still performs incredibly well. 8K is a niche, and one I likely won't even use in a wireless device if given the option. If you've got competitive motivations, paying the extra $10 for the polling rate upgrade could be a good shout, but us peasants will be just fine with the normal controller. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/f4EZCcirV24tPzoasXMSzf.jpg" alt="The GameSir G7 Pro 8K Aimlabs Edition from the top, in a hand, outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/3FkRmxQsXatRtY6Cwr922g.jpg" alt="The GameSir G7 Pro 8K Aimlabs Edition, showing off the top buttons" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/dKPps3ysYhDc3SoGTDD3yf.jpg" alt="The GameSir G7 Pro 8K Aimlabs Edition from the back in a hand, outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>On battery life, it has the same 1200 mAh battery that the G7 Pro has, so expect up to 10 hours at 1,000 Hz and significantly lower at higher polling rates. But it comes with a handy charging dock that also has room for the 2.4 GHz connector, so you can charge and play wirelessly from a single cable. It's handy, looks tidy, and I've managed to avoid the battery ever going dry in my time with it.</p><p>One thing worth noting is that the G7 Pro is not the only competition for the G7 Pro 8K. You get TMR sticks, a charging stand, and some flashy RGB in <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d10-review/" target="_blank">EasySMX's D10</a> for $60, though you do only get 1,000 Hz polling. </p><p><a href="https://www.pcgamer.com/hardware/controllers/easysmx-d05-review/" target="_blank">EasySMX's D05</a> bumps the thumbsticks down to Hall effect and offers a different (in my opinion, stronger) aesthetic for just $45. I find the GameSir to be firmer in the hands and more pleasant to use, but the world of controllers is so vast and impressive when you look outside of just what Sony and Microsoft are offering. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/uT6Y9ABVa5DY9xXcAJrEwf.jpg" alt="The GameSir G7 Pro 8K Aimlabs Edition on its dock on wood, outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Hx8XRHVxApQaWLWfqoTqwf.jpg" alt="The GameSir G7 Pro 8K Aimlabs Edition, showing off the Aimlabs branding on the right hand side" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/yzs7mUfkNueQT6FSFrMo2g.jpg" alt="The GameSir G7 Pro 8K Aimlabs Edition stand by itself" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Though a tad niche, the G7 Pro 8K also has a 6-axis gyroscope, should you be brave enough to control games like that, and dual motors in the grips for rumble.  I did check if using the gyroscope caused any rattle, and I couldn't cause any through normal play. </p><p>It is one of a lucky few to support the controlling method, like the recent <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a>, and I could see the market for it getting a bit bigger as a result. The rumble is nothing special, though it contributes to the feel of games, and you are given three different strengths of rumble, should it be a bit too much for you out of the box. </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 the best specs under $100:</strong> With tonnes of extra accessories, a super high polling rate, and second-generation GameSir TMR sticks, the G7 Pro 8K is a mighty fine beast.<br><br>✅ <strong>You like the aesthetic:</strong> $10 more than the G7 Pro is just light enough that it could be worth the extra cash for the aesthetic alone. And the extra thumbsticks.</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 care about 8K polling:</strong> Though the 8K model has better TMR sticks than the standard G7 Pro, is that and 8K polling really worth an extra $10 to you?<br><br>❌ <strong>You </strong><em><strong>just</strong></em><strong> want TMR sticks and a charging dock:</strong> The EasySMX D10 does all that for $30 less. I prefer the feel of GameSir's offering, but you can get most of its features on a tighter budget.</p></div></div><p>The GameSir software is fine, which in the hardware world, actually means pretty good. If it's unobtrusive and makes sense, it's already at least above average, and I'd say that's true of GameSir Connect. I do dislike GameSir's naming convention for software, though, with Nexus and Connect being two different bits of software for different controllers. </p><p>I love the GameSir G7 Pro 8k, but I also find myself a tad conflicted over it. It takes what makes the G7 Pro our pick for <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">the best controller</a> and just cranks it up another level, but I'm left asking "how much did it actually need improving?" and "is it worth $10 more?" </p><p>Ultimately, the G7 Pro is almost perfectly priced, being just a little more than the likes of the Xbox controller but offering a more appealing package. And GameSir is arguably competing with itself here. </p><p>Unfortunately for GameSir, and fortunately for GameSir, the 8K doesn't beat out the standard Pro in my summation for the majority of gamers. Congrats, GameSir, you played yourself. </p><p>It has everything that makes the G7 Pro notable, so it is undeniably a strong and comfortable controller, yet its older sibling offers all that but for cheaper. </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:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/yAFomvQ2kRS39NDfXHRP7G.jpeg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></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[ 'We've never met a cult we didn't want to be a part of, so we're getting in on the ground floor': Dbrand announces skins for the new Steam Controller in the most Dbrand way ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/weve-never-met-a-cult-we-didnt-want-to-be-a-part-of-so-were-getting-in-on-the-ground-floor-dbrand-announces-skins-for-the-new-steam-controller-in-the-most-dbrand-way/</link>
                                                                            <description>
                            <![CDATA[ Head-turning for the right reasons? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">JxxRbUeuCxsxmjRsxjQ2mF</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/bxyZgtA6VebY5mV5nSh93-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 28 Apr 2026 15:05:52 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending a significant chunk of that time working on print publications PLAY and Official PlayStation Magazine. When she’s not investigating all things hardware here, she&#039;s either constructing a passionate defence of a 7/10 game, daydreaming about her debut novel, or feeling wistful about the last time she chased some nerds around a field with an oversized foam sword.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/bxyZgtA6VebY5mV5nSh93-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/bxyZgtA6VebY5mV5nSh93-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The cat is out of the bag: The new Steam Controller will be available to purchase for $99/€99/£85/$149 AUD <a href="https://www.pcgamer.com/hardware/controllers/valves-new-steam-controller-goes-on-sale-next-week/" target="_blank">from next week</a>, and <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">our verdict on the new hardware is already in</a> (spoilers, we like it). The May launch will only introduce one, all-over black colourway to go with all your other noir hardware. Thankfully, gaming accessory company Dbrand is set to offer a few more colourful options.</p><p><a href="https://dbrand.com/shop/skins/steam-controller-skins?srsltid=AfmBOoo401JYCYX9T34PNZeE3djuKT6dfJpe2pNaT4-cRkyfG0XMThnb" target="_blank">Dbrand have already unveiled 44 fresh skins</a> to liven up your Steam Controller. "<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">The original Steam Controller</a> came out 11 years ago and was a bit of a cult classic," the company wrote as part of the announcement, "We've never met a cult we didn't want to be a part of, so we're getting in on the ground floor."</p><p>The new controller wraps definitely not all winners (the '<a href="https://dbrand.com/shop/skins/steam-controller-skins?design=rl-blk" target="_blank">Real Black Leather</a>' wrap seems a bit tacky in my humble opinion), but I like that each one includes a full coverage wrap alongside an 'accent' skin that only covers the lower portion of the controller. For instance, the <a href="https://dbrand.com/shop/skins/steam-controller-skins?design=damascus-acid&srsltid=AfmBOoo401JYCYX9T34PNZeE3djuKT6dfJpe2pNaT4-cRkyfG0XMThnb" target="_blank">Acid</a> and <a href="https://dbrand.com/shop/skins/steam-controller-skins?design=carnage&srsltid=AfmBOoo401JYCYX9T34PNZeE3djuKT6dfJpe2pNaT4-cRkyfG0XMThnb" target="_blank">Carnage</a> skins look a bit hectic as all-over wraps, but work well as a contained pop of colour around the touch pads.</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>The more premium selection of leather wraps at the top end go for about $25, while the more straightforward, colour block designs like '<a href="https://dbrand.com/shop/skins/steam-controller-skins?design=pastel-prp" target="_blank">Kinda Purple</a>' go for $12. Setting aside the fact that 'purple' is more blue than I'd personally like, I at least appreciate the option to personalise what would otherwise be yet another samey-looking gamepad. Each skin is scratch-proof, too, and meant to be easy enough to remove should you have second thoughts. </p><p>Better yet, a removed skin shouldn't leave your brand new Steam controller covered in sticky adhesive residue. That's great because, not only am I chronically indecisive, but I'll need something to tide me over until Dbrand's <a href="https://www.pcgamer.com/hardware/pc-cases/dbrand-has-teased-a-render-of-a-portal-companion-cube-steam-machine-case-so-you-can-put-a-case-around-your-case/" target="_blank">Companion Cube-style housing</a> for the Steam Machine drops.</p><p><a href="https://www.pcgamer.com/hardware/valve-still-hopes-to-ship-steam-machines-in-2026-but-a-delay-into-2027-is-starting-to-look-like-a-real-possibility-memory-and-storage-shortages-have-created-challenges-for-us/" target="_blank">Valve itself has re-committed to a 2026 release window for the Steam Machine</a>, which was revealed alongside the new Steam controller previously. Bearing the squeeze of <a href="https://www.pcgamer.com/hardware/memory/ram-and-storage-is-ridiculously-expensive-right-now-because-of-drumroll-ai-of-course-and-theres-little-reason-to-think-prices-will-drop-any-time-soon/" target="_blank">the memory supply crisis</a> in mind, I'll believe it when I see that teeny tiny gaming machine in PC Gamer towers with my own two eyes.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Steam Controller Australian price revealed ahead of May 5 release ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/steam-controller-is-au-usd149-in-australia-and-launching-day-one-with-the-rest-of-the-world/</link>
                                                                            <description>
                            <![CDATA[ The trackpad-laden gamepad launches next week. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">EsprmtoaZEREmySe2GQacZ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/KCHBXz96tngYsTs9sZLZHY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 28 Apr 2026 00:06:25 +0000</pubDate>                                                                                                                                <updated>Tue, 28 Apr 2026 01:02:09 +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:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/KCHBXz96tngYsTs9sZLZHY-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/KCHBXz96tngYsTs9sZLZHY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Following some compelling leaks it was confirmed overnight that Steam Controller will launch on May 5 in Australia. The price is AU$149, with free shipping direct from Valve's Australian warehouse.</p><p>It was already confirmed that the Steam Controller would release in Australia at the same time as the rest of the world. But it's worth reiterating, because Steam Machine and Steam Frame still haven't received release dates despite previously being tipped for an early 2026 release. The whole tech world is heaving due to the AI-induced component shortage, so nothing that was certain six months ago is certain now.</p><p>Still, as Dave James reported earlier today, Steam Controller stock should be reliably available. "We have built up a good supply of this," Valve engineer <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/">Steve Cardinali said</a>. "But it's based on what we anticipate supply to be. And supply could be much larger than we anticipate."</p><p>We published a load of Steam Controller material overnight. Jacob Ridley's <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/">Steam Controller review</a> is worth a look if you're considering a purchase, and we published a <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-teardown-simple-to-open-easy-to-fix/">Steam Controller teardown</a> demonstrating all the inner parts and how to access them.</p><p>How does the Steam Controller price size up with other gamepad prices in Australia? It's AU$10 cheaper than the AU$159 RRP on <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/">our favourite PC gamepad</a>, the GameSir G7 Pro (which is currently on sale on Amazon for <a href="https://www.amazon.com.au/dp/B0FD41XC3P">AU$135</a>). It's also pricer than the Xbox controller (AU$89 RRP) and the Sony DualSense (AU$119.95). </p><p>The Steam Controller has some pretty impressive features: the trackpads are a huge boon, but it also boasts TMR anti-drift analog sticks, four haptic motors, an advertised 35+ hours of battery life, and replaceable batteries. Based on Jacob's review it's a worthy piece of kit—especially if you're like me and <a href="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/">love trackpads</a>—but it'll really depend on how you use a gamepad. </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:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></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:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></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="low" 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:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></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[ Valve's Steam Controller goes on sale next week, May 4. It's pricier than you might have hoped, but more reasonable than I expected ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/valves-new-steam-controller-goes-on-sale-next-week/</link>
                                                                            <description>
                            <![CDATA[ Trackpad-tastic. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">yvoS8xEi5dK52bgMpHqnE4</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/KCHBXz96tngYsTs9sZLZHY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 27 Apr 2026 17:01:00 +0000</pubDate>                                                                                                                                <updated>Mon, 27 Apr 2026 17:07:09 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/KCHBXz96tngYsTs9sZLZHY-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/KCHBXz96tngYsTs9sZLZHY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The new <a href="www.pcgamer.com/hardware/game-pads/steam-controller-2026-review" target="_blank">Steam Controller</a> is an impressive bit of equipment—and if you're itching to get your hands on one, there isn't too long left to wait. According to Valve, the dual-trackpad-equipped beastie will be available to stick in your cart on the Steam store from Monday, May 4.</p><p>Pricing varies by region, with the mega-pad coming in at $99 in the US, €99 in the EU, and £85 in the UK. Aussie buyers will pay AUD 149, whereas Polish Steam-enjoyers will pay PLN 419.</p><p>Valve says these pricing differences are down to distribution costs, import duties/tariffs, and marketing conditions, which is pretty much a summary of many of the challenges facing the entire tech industry right now.</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><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm4jRO"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm4jRO.js" async></script><p>Still, the price tag is slightly less than I was expecting, especially when you take into account the uniqueness of Valve's design. The Steam Controller is a sizable beast with two large, haptic-enabled trackpads and twin TMR sticks, alongside a more traditional array of face buttons and triggers. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/U2L63LGauar8GHYxqyyhNY.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/iNXRdG87TDa6k5oCLmffFY.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/iCStRVfbcgSCJWxZgdUX4Y.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/eodU4CmU7kSxoUnAF2T6HY.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/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><p>There are also four sizeable buttons on the rear of the grips, which makes it a very customisable controller. There aren't many gaming devices that can truly mimic a mouse, and it's even got gyro controls to play with, too.</p><p>Our Jacob likes his review sample very much, calling it a "comfy pad for comfy gamers." It's not particularly quick for competitive gaming due to a standard 250 Hz polling rate, but if you're the sort of person who likes to recline on a couch or game in bed, it's pretty ace.</p><p>And with a 35-hour battery life, you shouldn't have to top it up too often with the included charging puck, either. <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">The original Steam Controller was a bit of a disappointment</a>, but this one's got a design that really works—and there's only a short while to go before you can grab one for yourself.</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:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <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:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <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:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/8DyQVBz7FCynDY9QiJyH9D.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;&lt;br&gt;&lt;/p&gt; ]]></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[ Whoopsie: Microsoft has been shipping Xbox controllers without batteries and is now compensating customers with rechargeable kits ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/whoopsie-microsoft-has-been-shipping-xbox-controllers-without-batteries-and-is-now-compensating-customers-with-rechargeable-kits/</link>
                                                                            <description>
                            <![CDATA[ If yours was missing batteries, Microsoft will send you a freebie. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">pjtqBC9CuP8EEyXqoVS9d3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/bErixFpJqAK3rqy6ydR5o3-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 09 Apr 2026 10:41:32 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jeremy Laird ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/yAFomvQ2kRS39NDfXHRP7G.jpeg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/bErixFpJqAK3rqy6ydR5o3-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Holding an Xbox controller in front of a keyboard]]></media:description>                                                            <media:text><![CDATA[Holding an Xbox controller in front of a keyboard]]></media:text>
                                <media:title type="plain"><![CDATA[Holding an Xbox controller in front of a keyboard]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/bErixFpJqAK3rqy6ydR5o3-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Minor Microsoft SNAFU detected. Turns out it has been shipping Xbox controllers without batteries for months (via <a href="https://www.neowin.net/news/if-your-new-xbox-controller-was-missing-batteries-microsoft-is-offering-compensations/" target="_blank">Neowin</a>). Belatedly, Microsoft is now compensating customers by sending out a rechargeable battery kit, plus a USB Type-C cable for free.</p><p>Xbox controllers are actually a little old school in having a user-accessible compartment that takes plain old AA batteries. Normally, the controllers ship with a couple of Duracell batteries to ensure that customers can game right out of the box.</p><p>Somehow, however, that hasn't been happening since December of last year, and Microsoft has now caught on to the oversight. <a href="https://x.com/XboxSupport/status/2041733265929732557">In a post on X</a>, the official Xbox Support account said, "A limited number of controllers have shipped without batteries since December. If you received one of these controllers, go here <a href="https://t.co/C5u0tvZOlz" target="_blank" rel="nofollow">aka.ms/batteries</a> for a rechargeable battery on us. All controllers moving forward will include batteries."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Oq8PwW"></div>                            </div>                            <script src="https://kwizly.com/embed/Oq8PwW.js" async></script><p>Affected customers can hit the link, register their device, and follow the instructions to receive compensation. Specifically, what you get if you qualify for the freebie is an "Xbox Rechargeable Battery + USB‑C Cable" combo.</p><p>That's a pretty clear upgrade on the regular disposable cells that are meant to come with a new controller and normally comes at the cost of $25, <a href="https://www.amazon.com/Xbox-Rechargeable-Battery-USB-C%C2%AE-Cable-one/dp/B08DFB4889" target="_blank">albeit it's currently available on Amazon for about 15 bucks</a>.</p><p>If the whole Duracell battery thing seems antiquated in this age of lithium everywhere, well, there are reports that the controllers come with those throw-away cells thanks to a marketing deal.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1080px;"><p class="vanilla-image-block" style="padding-top:56.85%;"><img id="jdBXkQC3Zvu97RUpuwyduW" name="Xbox battery" alt="Xbox rechargeable controller battery" src="https://cdn.mos.cms.futurecdn.net/jdBXkQC3Zvu97RUpuwyduW.jpg" mos="" align="middle" fullscreen="" width="1080" height="614" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Microsoft is sending out $25 rechargeable battery kits. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p><a href="https://www.gamespot.com/articles/xbox-controllers-have-been-shipping-without-batteries-for-months-but-microsoft-is-finally-compensating-people/1100-6539269/" target="_blank">Some even claim Duracell pays Microsoft to stick the batteries in Xbox controllers</a>, presumably on the assumption that it raises brand awareness in a positive context where those batteries are just about to enable a fun gaming experience.</p><p>Those kinds of batteries arguably aren't the most sustainable option for powering wireless devices. For sure, they are very handy for scenarios where something simple and highly compatible is required, and recharging isn't an option. But as Microsoft itself says in reference to the Xbox Rechargeable Battery + USB‑C Cable kit, "say goodbye to disposable batteries and interrupted gameplay."</p><p>In short, you can make a decent argument that the controllers should come with that kit as standard, and it's a teensy bit depressing if Microsoft is indeed stuffing Xbox controllers with disposable batteries as part of a marketing deal.</p><p>Or at least Microsoft was. Then it wasn't. Now it will again, presumably with the same Duracell items. Oh well.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ EasySMX D05 review ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/easysmx-d05-review/</link>
                                                                            <description>
                            <![CDATA[ You can get Hall effect controllers slightly cheaper, but you'd struggle to find as feature-rich a package without some heavy, heavy sales. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">WRLnnowV6sabshmTC8HujQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/PqjBcwBzNJUwKiWav7NBZF-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 31 Mar 2026 15:00:43 +0000</pubDate>                                                                                                                                <updated>Wed, 01 Apr 2026 12:15:13 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/SEb5dKTVfZ5EZF4fEcqdGR.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/PqjBcwBzNJUwKiWav7NBZF-1280-80.jpg">
                                                            <media:credit><![CDATA[EasySMX]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[EasySMX D05 black gaming controller from the front on a charging stand on a blue background]]></media:description>                                                            <media:text><![CDATA[EasySMX D05 black gaming controller from the front on a charging stand on a blue background]]></media:text>
                                <media:title type="plain"><![CDATA[EasySMX D05 black gaming controller from the front on a charging stand on a blue background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/PqjBcwBzNJUwKiWav7NBZF-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>With both TMR and Hall effect controllers coming down in price, the question is no longer 'is Hall effect worth it?' but 'is it cheap enough to not just upgrade to TMR?' And I've had that question in my hand over the last few weeks, comparing the <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d10-review/" target="_blank">EasySMX D10</a> and D05 head-to-head. After that time, I can say the answer is 'it depends'. I know that's an unsatisfying answer, but reality is rarely straightforward. </p><p>The D05 comes in a single colourway on the official site (with a few more colours on Amazon), but luckily, I like it. It's all black, except for a golden D-pad and golden triggers. The bumpers, notably, are a similar black to the face buttons and joysticks, and the whole thing looks both rather flashy and fairly clean. The included charging stand is relatively basic, in contrast, being black all over with 'EasySMX' written on the front. </p><p>However, once plugged in and on, the controller kicks into life and becomes even showier. There is a set of RGB lights underneath each thumbstick. The black plastic has a fair amount of light leakage, fitting somewhere between a normal controller and the aesthetics of that old, see-through Xbox. Light leakage, when paired with RGB, can sometimes look a little cheap, but the D05 mostly pulls it off. </p><p>That's all helped by the fact that the controller itself feels sturdy and comfortable in the hands. It's very clearly based on the Xbox Series X controller, with asymmetric sticks, textured grips, and Xbox's iconic shape. EasySMX has done a great job here, feeling almost identical to one of Microsoft's controllers, barring the extra weight. </p><div  class="fancy-box"><div class="fancy_box-title">EasySMX D05 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="TMHeuRk42WTiqGusXmL6YF" name="IMG_7781" caption="" alt="EasySMX D05 black gaming controller from the front on a charging stand on a blue background" src="https://cdn.mos.cms.futurecdn.net/TMHeuRk42WTiqGusXmL6YF.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: EasySMX)</span></figcaption></figure><p class="fancy-box__body-text"><strong>Compatibility:</strong> Windows, Switch, Android<br><strong>Connectivity:</strong> Wireless (2.4 GHz and Bluetooth) and Wired<br><strong>Ports:</strong> USB Type-C<br><strong>Thumbsticks:</strong> Hall effect<br><strong>Polling rate:</strong> 1,000 Hz<br><strong>Triggers:</strong> Hall effect<br><strong>Thumbstick layout:</strong> Asymmetrical <br><strong>RGB: </strong>Yes<br><strong>Battery life: </strong>10-20 hours<br><strong>Extra features: </strong>Two reprogrammable buttons, included charging dock<br><strong>Weight:</strong> 219 g (300 g with dock)<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://www.easysmx.com/products/easysmx-d05-multiplatform-gaming-controller-with-smart-charging-dock-hall-effect-joysticks-and-triggers?srsltid=AfmBOorHW9ul8xKLLyv_C8OEV93ZhRWddTdYbEtQcJ5y0X8PTvfc01-a" target="_blank">$45</a> | <a data-analytics-id="inline-link" href="https://www.easysmx.com/products/easysmx-d05-multiplatform-gaming-controller-with-smart-charging-dock-hall-effect-joysticks-and-triggers?srsltid=AfmBOorHW9ul8xKLLyv_C8OEV93ZhRWddTdYbEtQcJ5y0X8PTvfc01-a" target="_blank">£35</a></p></div></div><p>At 219 g, the D05 is certainly fairly light, but it has no flex and only really gives away its very budget price in a slight rattle. In fairness, it only produces a rattle when shaken, so it rarely comes up in use. For the most part, it punches above its weight in look and feel. </p><p>Solid build quality feels like the cherry on top of the cake here, when you are getting a 1,000 Hz polling rate, a charging dock, three connectivity modes, and Hall effect triggers and thumbsticks for less than the price of Sony and Microsoft's offerings. The D05 is already regularly available for just <a href="https://www.amazon.com/EasySMX-D05-PC-Controller-Enhanced-Bluetooth/dp/B0DTDZSZWJ" target="_blank">$35 over on Amazon</a>, at the time of writing, and I'd struggle to find anything better for its current price, except maybe the D10 over here in the UK, where it gets down to £30. </p><p>The <a href="https://www.pcgamer.com/hardware/controllers/8bitdo-pro-3-review/" target="_blank">8BitDo Pro 3</a>, my usual everyday controller, has a great aesthetic, a neat charging dock, and TMR thumbsticks. It's also just under double the price, and comes with a polling rate of just 250 Hz (a quarter of the D05). It's not even that far off the price of the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">GameSir Nova Lite</a>, which is our current pick for the best budget controller, and comes with a whole host of premium features to justify the extra cost.</p><p>Comparing the <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d10-review" target="_blank">EasySMX D10</a> and D05 together, it's not immediately clear to me which one is better. The stand and in-box presentation of the D10 is certainly flashier, and the D10 has TMR thumbsticks, alongside dual-mode triggers (Hall effect and non-linear micro-switch). But I actually prefer the aesthetic of the D05; it comes in tens of dollars cheaper, and I like its D-pad more. If you need TMR, the D10 is the only choice between the two worth considering, but if that's not the case, both put up a fight. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/RmWJv2F5GuiJA3TFZtZmYF.jpg" alt="EasySMX D05 black gaming controller next to its charging stand on a blue background" /><figcaption><small role="credit">EasySMX</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/dhsrMutBKEKwgFxNJsd8EF.jpg" alt="EasySMX D05 black gaming controller from behind on its charging dock, on a blue background" /><figcaption><small role="credit">EasySMX</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/jjCjdrKBoQwtmpgCQuXCQF.jpg" alt="EasySMX D05 black gaming controller  face down, from the right hand side, on a blue background" /><figcaption><small role="credit">EasySMX</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hTzCSwzB2F2NZqkTpnjoMF.jpg" alt="EasySMX D05 black gaming controller  from the back on a blue background" /><figcaption><small role="credit">EasySMX</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/MHfL7RykvdMEQT8UdPn3JF.jpg" alt="EasySMX D05 black gaming controller from the right side, on a blue background" /><figcaption><small role="credit">EasySMX</small></figcaption></figure></figure><p>The four-arrow D-pad is easy to use, and though it doesn't have a super-defined click, I rarely found myself misclicking. The triggers are also very solid, with a smooth press and textured tops. I spent honestly far too long throwing out coins with the triggers in coinpusher roguelike <a href="https://www.pcgamer.com/games/roguelike/i-thought-this-roguelike-was-just-about-playing-a-coin-pusher-machine-but-now-im-breeding-herds-of-rabbits-and-turning-wolf-poo-into-tree-fertiliser/" target="_blank">Raccoin</a>, and found myself with very little fatigue, even after hours. </p><p>Moody horror FPS <a href="https://store.steampowered.com/app/1790930/Crisol_Theater_of_Idols/" target="_blank">Crisol: Theatre of Idols</a> performs well, too, in this regard. Triggers are satisfying to click, and the thumbsticks are easy to control. I rarely struggled to hit baddies in the head, and when I miss, I struggle to blame the controller for it. </p><p>I did notice the face buttons are oddly textured. There's a fairly deep groove indicating which button is which. Those grooves are so deep that I can regularly make out which button I'm on, with just my thumb. This can also make them dust and grime magnets, which is a problem that controllers already suffer heavily from. After a little time, I did get used to these heavily etched buttons, but it's certainly an oddity.</p><p>I did find the controller to accommodate the fast clicks and reliance on face buttons in the Soulslike action RPG <a href="https://www.pcgamer.com/games/action/no-rest-for-the-wicked-early-access-impressions/" target="_blank">No Rest for the Wicked</a>. Combining all of the above, the D05 took on the challenge of precise actuation and tight controls in <a href="https://www.pcgamer.com/games/sports/10-years-later-no-one-has-replicated-rocket-leagues-mojo/" target="_blank">Rocket League</a> with ease. In play, I found it lacking in almost no regard. It even has two back paddles, which can be easily customised with the controller's built-in function button. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/bfb23onxV3g7xy83BAdLXF.jpg" alt="EasySMX D05 black gaming controller from on the front on a charging stand (with blue RGB on) on a blue background" /><figcaption><small role="credit">EasySMX</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/eknwb8YxbBhCJbgkCkCBxE.jpg" alt="EasySMX D05 black gaming controller on its charging stand with red RGB on, on a blue background" /><figcaption><small role="credit">EasySMX</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hi3YmdF82ac6mFrMaa8aqE.jpg" alt="The bottom of EasySMX D05 black gaming controller (with red RGB on) on a blue background" /><figcaption><small role="credit">EasySMX</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/w9L7dyZqaiAuCF9tzSq5ZF.jpg" alt="EasySMX D05 black gaming controller from the side (with rainbow RGB) on a blue background" /><figcaption><small role="credit">EasySMX</small></figcaption></figure></figure><p>Arguably, the cheapest part of the controller is its charging dock. It's simply a black box, with a USB Type-C and Type-A port on the back, and charging prongs on the top. It's missing the RGB and recessed 2.4 GHz connector port of its more expensive controller cousin, but its only real fault is feeling a tad plasticky. The 2.4 GHz does sit out at a slightly awkward angle in the back, but the likelihood of showing off the back of the stand is very slim either way. </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 sick of stick drift:</strong> With Hall effect thumbsticks, this is a relatively cheap way of getting around stick drift. <br><br><strong>✅ You forget to charge:</strong> The D05's included charging dock is simple but effective, and encourages me to charge it basically every time I'm not using it.</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 better than Hall effect: </strong>The EasySMX D10 isn't a whole pile more, and comes with TMR sticks. In practice, I didn't find the D10 to be better to control, but it's close enough in price to be worth considering.<br><br>❌ <strong>You want something more muted:</strong> Though you can turn off the RGB, the gold trim is certainly a little flashy.</p></div></div><p>One peculiarity with the D05 (and D10 by extension) is that they both lack any PC software. With the function button, you can change RGB intensity and colour, as well as customise vibration, and you can even adjust actuation in the triggers for a rapid trigger mode, but you will have to learn all of its function controls to get the most out of it. While it's mostly fine to use without any dedicated software, it would be more convenient to have a PC app or browser-based interface to configure it all.</p><p>The D05 gets between 10 and 20 hours of charge, depending on vibration and RGB level, and for me, that is more than enough. The charging stand's convenience means I regularly got into the habit of popping it on charge every night, and I've never seen it go dead. </p><p>Despite trying to broadly emulate the Xbox Series X controller, I think there's an argument to be made that it's actually a <em>better package.</em> For approximately half the price, you are getting stick drift resistance, that charging dock, quadruple the polling rate, a solid enough battery life, a neat aesthetic, and a whole host of extra features. It's not quite as firm in the palm, and its weight isn't as fine-tuned, but I can't name a single other controller at the $35-$45 price range I'd be picking instead. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ EasySMX D10 review ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/easysmx-d10-review/</link>
                                                                            <description>
                            <![CDATA[ A feature-rich budget TMR controller that only sometimes feels like a compromise. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">fM5EQd4AH6qDUADhLjdeqe</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/UgLVpPDZm7T9ZV36sAHGz4-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 27 Mar 2026 15:14:14 +0000</pubDate>                                                                                                                                <updated>Wed, 01 Apr 2026 10:47:49 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/SEb5dKTVfZ5EZF4fEcqdGR.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/UgLVpPDZm7T9ZV36sAHGz4-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[EasySMX D10 on a turned on charging stand, on a black desk]]></media:description>                                                            <media:text><![CDATA[EasySMX D10 on a turned on charging stand, on a black desk]]></media:text>
                                <media:title type="plain"><![CDATA[EasySMX D10 on a turned on charging stand, on a black desk]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/UgLVpPDZm7T9ZV36sAHGz4-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>My favourite bit about new tech getting into the gaming hardware market is not their shiny (often very expensive) introduction. It's instead the moment that the more value-oriented brands start to throw it into everything. Mechanical switches, Hall effect triggers, and now TMR. Heck, we've even seen TMR implemented in keyboards like the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/cherry-xtrfy-mx-8-2-pro-tmr-tkl-review/" target="_blank">Cherry Xtrfy MX 8.2 Pro TMR TKL</a> (though it will be a while until we see a truly budget form of this keeb). </p><p>Effectively, TMR (tunnel magnetoresistance) is so valued because it's a technology using magnetic sensors to provide highly efficient and precise controls. It not only helps with battery life but combats stick drift, and is even more efficient than Hall effect. </p><p>This is what drew me to the <a href="https://www.easysmx.com/products/easysmx-d10-multiplatform-gaming-controller-with-tmr-joysticks-trigger-lock-charging-dock?srsltid=AfmBOooKb5Xl72KXfRVgkbL39SVhcsWzZVDo0_Jzc0_nmXuEmFvQ7hKq">EasySMX D10</a>. It undercuts the already pretty budget-friendly <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">Gamesir G7 Pro</a>, giving much of the same specs and even a charging dock, for $20 cheaper. Though $60 / £60 is the official price point on EasySMX's website, you likely won't be paying near that. On Amazon UK, as of the time of writing, <a href="https://www.amazon.co.uk/EasySMX-Controller-D10-Anti-Drift-Mechanical-Black/dp/B0FG713BGK?th=1" target="_blank">it costs just under £30</a> or <a href="https://www.amazon.com/dp/B0F8BPMSFM" target="_blank">$50 on Amazon US</a>. </p><p>At that price, I can tell you straight away that the D10 is absolutely worth its cost. As it crawls up to MSRP, there's an argument to be made elsewhere, and, in that same sense, I think I would find it hard to recommend at full price. That's not inherently because it's not <em>worth it</em>, but purely because we've seen how low that price tag can get. </p><div  class="fancy-box"><div class="fancy_box-title">EasySMX D10 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="zXzHL2tEr6hqv3kduKnjE5" name="IMG_7759" caption="" alt="EasySMX D10 (on) in a hand while outside" src="https://cdn.mos.cms.futurecdn.net/zXzHL2tEr6hqv3kduKnjE5.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, Switch, Android<br><strong>Connectivity:</strong> Wireless (2.4 GHz and Bluetooth) and Wired<br><strong>Ports:</strong> USB Type-C<br><strong>Thumbsticks:</strong> TMR<br><strong>Polling rate:</strong> 1,000 Hz<br><strong>Triggers:</strong> Linear Hall effect and non–linear micro-switch<br><strong>Thumbstick layout:</strong> Asymmetrical <br><strong>RGB: </strong>Yes<br><strong>Extra features: </strong>Two reprogrammable buttons, included charging dock<br><strong>Weight:</strong> 256 g (396 g with dock)<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://www.easysmx.com/products/easysmx-d10-multiplatform-gaming-controller-with-tmr-joysticks-trigger-lock-charging-dock?srsltid=AfmBOop0VruqoO1-G1LlyqdLwWmMTaYVMUZXBven40YMG19l-pSZKPXB" target="_blank">$60</a> | <a data-analytics-id="inline-link" href="https://www.easysmx.com/products/easysmx-d10-multiplatform-gaming-controller-with-tmr-joysticks-trigger-lock-charging-dock" target="_blank">£60</a></p></div></div><p>And for its price, the EasySMX D10 offers quite a lot. You are getting a 1,000 Hz polling rate with its 2.4 GHz connector, a charging dock that doubles as the connector, linear Hall effect triggers, and TMR thumbsticks. It's not only accurate, but it's not going to break down in a year thanks to stick drift. </p><p>It's comparable in shape, weight and design to the Xbox Series X controller, though not quite as smooth and sturdy in the hands. It's certainly not a flimsy controller, but I feel less comfortable flinging it around than Microsoft's arguably greatest bit of hardware.</p><p>To me, it feels lower quality in terms of general feel compared with the likes of the <a href="https://www.pcgamer.com/hardware/controllers/8bitdo-pro-3-review/" target="_blank">8BitDo Pro 3</a>, which is another easy-to-use controller with a built-in charging stand. In its favour, other connected D-pads have a tendency to feel mushy, but this one doesn't. Effectively, the arrow buttons in the D-pad are all connected together, as opposed to four separate buttons.  It's a very clicky D-pad, though sound here is inconsistent, with the right side producing a hollow click where the left doesn't. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/AFY2T8UJAQGXESUMKLuUD5.jpg" alt="the top middle of the EasySMX D10 outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/V5g26wXsS9M8fU28HL3HE5.jpg" alt="EasySMX D10 while turned on, in a hand outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/RbTT2wEKGony5EkmuqvYJ4.jpg" alt="EasySMX D10 in a hand, in a garden" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5HnngewKVB2nY9tsnaybA5.jpg" alt="EasySMX D10 from the top, in a garden" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I do find the connected D-pad a tad awkward to hit diagonally, though, which can impact platformers. This doesn't become too much of a problem outside of this use case, as I don't often need a diagonal hit, but it's still worth noting. </p><p>Thumbsticks are comfortable to use, face buttons are a tad clacky, but perfectly <em>fine,</em> and triggers are both well-placed and easy to hit. Those triggers, in the long-press Hall effect mode, don't have as much feedback as I'd like, but that's a light preference. In most regards, it's a totally solid controller that feels a tad more budget than some, but that's to be expected as that's almost exactly what this pad is—budget. </p><p>As far as looks are concerned, I'm not majorly into the black model I've been testing. Seethrough grips plus a stripe of RGB on either side certainly help it stand out, but it's one of the more gamer-esque aesthetics out of any controller I have right now, which to me can look cheap. It's certainly not bad in any way, but uninteresting to me. The purple and green version of the controller would be where my money is going instead. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/U3XqRaKMv4NcjW4e4Nv5F5.jpg" alt="EasySMX D10 (on) on the charging stand on a black desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ZQJAuhZjWTpRmfEGp3rc55.jpg" alt="EasySMX D10 from the back without the charging stand, on a black desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/yP5mkg6VjDZAoLNRhBXa55.jpg" alt="turned on EasySMX D10 by itself on a black desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UgLVpPDZm7T9ZV36sAHGz4.jpg" alt="EasySMX D10 on a turned on charging stand, on a black desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/kvtA2hY2pweYmM9WTBLVu4.jpg" alt="EasySMX D10 from the side on a black desk" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>In the hand, it's a comfortable and well-balanced bit of kit. Its weight doesn't feel lopsided, and its textured grips sit into my palms well. I've used it for long gaming sessions with little fatigue. </p><p>Rocket League, a game filled with the constant pressing of triggers and tonnes of complex controls, performs perfectly well, and remapping via two buttons on the back is easy too. I remapped my air roll to the bumpers, and they function solidly here. </p><p>Using the controller in <a href="https://www.pcgamer.com/skate/" target="_blank">Skate</a> reaffirmed that maybe I'm the problem when it comes to my skating ability. Its selection of tricks are easy to pull off, despite a huge reliance on a single thumbstick, and I can only assume I have TMR to thank for that. </p><p>Over in <a href="https://www.pcgamer.com/games/fps/doom-the-dark-ages-review/" target="_blank">Doom: The Dark Ages</a>, I found the sticks to be accurate, easy to use, and comfortable under the thumbs. I didn't find myself using the reprogrammable back paddles very often, but you can remap them on the fly with ease. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/GdMKh4EaBtexFn95Mz3XD5.jpg" alt="EasySMX D10 from behind, in a garden" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/79wLwkLR2JGn3Y66EfUpD5.jpg" alt="the back of the EasySMX D10 in a hand, in a garden" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/gAMJJUjUY9oxmC2wiebFD5.jpg" alt="EasySMX D10 from the top, in a garden" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rZMsQDGhJ7Wcvm3jsUCqx4.jpg" alt="EasySMX D10 on a charging stand from the back, on a black desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VKqYZETdgqENEVEiDPFcy4.jpg" alt="EasySMX D10 from the front, on the charging stand (while off) on a black desk" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>As well as TMR sticks and Hall effect triggers, the controller has a small switch on the back to swap the trigger to a microswitch, which changes the travel distance. This means you can enable an analogue press for the nuances of driving in racing games, and a single button for quick fire in shooters. It's a neat touch that was once the preserve of premium pads and is becoming more and more common with controllers. </p><p>I'm a bit of a sucker for charging docks, and the D10's works well. It comes with a 2.4 GHz connector, which you can slot into the dock itself, giving you the ability to charge and connect to the controller through a single USB port. In 2.4 GHz mode, the D10 connects in just a second to my rig, and I've never had any problems with it. It also has a Bluetooth mode and a dedicated Nintendo Switch mode. It also has gyro controls, which is a neat, niche touch. </p><p>One peculiar thing about the D10 is that EasySMX provide no software for it. You will have to learn everything through the manual. This does mean having to go onto the EasySMX site for drivers, but controller drivers don't appear to have been updated in years. Luckily, I didn't experience any software issues, even if the lack of customisation is noticeable. </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> It's on sale:</strong> When it drops down to the $40 range, the D10 is an obviously great budget choice.<br><br>✅<strong> You forget to charge your controller: </strong>The charging dock/connector gives your controller a home when you're done with it, and like your real home, it helps you recharge.</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 to learn shortcuts: </strong>With no software, the only way to control the D10 is by learning shortcuts. <br><br><strong>❌ You mostly play platformers: </strong>The connected D-pad is a tad awkward for precise controls. It's certainly something you can get used to, but I wouldn't bother if I were mostly into platformers and fighters.</p></div></div><p>As such, you will also have to get comfortable with shortcuts, most of which are done via the M button at the bottom of the front of the pad. For the likes of the Nintendo Switch, this is preferable to using software, but learning controls certainly takes some getting used to. These shortcuts can adjust lighting, change rumble, and reprogram buttons. </p><p>Though not perfect by any means, EasySMX's D10 provides a cheap alternative to many pro controllers, with plenty of great features and design decisions. You can tell, in some niche ways, that you are getting a budget controller, but it's hard to say no to TRM sticks, Hall effect triggers, a charging dock, and a few programmable buttons at its price point. </p><p>There's a fight to be had around the $60-80 mark that I'd struggle to see EasySMX winning, but when it's down to $40, I can't see a better option out there. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ This simple gaming chair bracket could have saved me years of sim racing with two wooden blocks holding my pedals in place ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/steering-wheels/this-simple-gaming-chair-bracket-could-have-saved-me-years-of-sim-racing-with-two-wooden-blocks-holding-my-pedals-in-place/</link>
                                                                            <description>
                            <![CDATA[ Seems like a smart fix for a very annoying issue. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">h9Edc8nEiNweF7nGiMgyq5</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/FeXNhWyFJ2zkKkdSbyQjv-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 27 Mar 2026 12:31:31 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Steering Wheels]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/FeXNhWyFJ2zkKkdSbyQjv-1280-80.jpg">
                                                            <media:credit><![CDATA[SR Rigs]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A diagram showing the SR Pedal Stand Pro from SR Rigs.]]></media:description>                                                            <media:text><![CDATA[A diagram showing the SR Pedal Stand Pro from SR Rigs.]]></media:text>
                                <media:title type="plain"><![CDATA[A diagram showing the SR Pedal Stand Pro from SR Rigs.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/FeXNhWyFJ2zkKkdSbyQjv-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I used to use a couple pieces of wood to hold my pedals and chair in place when sim racing. It wasn't a perfect set-up, as the wood ended up splintering into the carpet and it just looked awful. It wasn't even that stable, if I'm honest, but that's what was required to prevent my load-cell pedals slipping under heavy braking. This sim racing mount should help alleviate that issue.</p><p>It's called the SR Pedal Stand Pro from <a href="https://www.simracing-rigs.com/" target="_blank">SR Rigs</a>. It lifts up your pedals to a more suitable position for racing and extends underneath a user's feet to hold a gaming chair in place. The casters of the chair slot into a locking system and there's a strap to prevent a chair from tilting under heavy braking.</p>                    <div class= "tiktok-wrapper" style="min-height: 750px;"><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@sr.rigs/video/7618278189122538785" data-video-id="7618278189122538785" style="max-width: 605px; min-width: 325px;">                        <section>                            <a target="_blank" title="@sr.rigs" href="https://www.tiktok.com/@sr.rigs">@sr.rigs</a>                            <p></p><a target="_blank" title="♬ Originalton - SR Rigs" href="https://www.tiktok.com/music/Originalton-7618278201374788384">♬ Originalton - SR Rigs</a></section>                    </blockquote></div>                <p>It was created under similar circumstances to my own. The person behind SR Rigs was using a heavy weight and a kitchen chair to avoid slipping, on no less than the very same Fanatec pedals I was having issues with.</p><p>The SR Pedal Stand Pro is designed to withstand braking forces up to 60 kg. The pedal height and chair mounting can be adjusted to accommodate users of varying heights. It supports a range of pedals, including those from Moza, Fanatec, Thrustmaster, and Logitech. It also folds away for easier storage. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XpJMlW"></div>                            </div>                            <script src="https://kwizly.com/embed/XpJMlW.js" async></script><p>I've since swapped to a <a href="https://www.pcgamer.com/playseat-trophy-logitech-g-edition-review/" target="_blank">Playseat Trophy</a> for sim racing, solving one problem, but in doing so creating another. I can store the Playseat upright to try and save some space, but even so, it takes up a lot of room. A <a href="https://www.pcgamer.com/monoprice-dark-matter-gt-foldable-racing-wheel-stand-review/" target="_blank">folding sim racing stand</a> is one way around this, and a cheap one, though they tend to offer a more upright racing positive and can still move a little under braking.</p><p>One potential downside here is you are still reliant on mounting your racing wheel to a desk. In my experience, some desk clamps kinda suck, and can move around a little or come loose. You also need a desk that's at a suitable height or height-adjustable for the best racing position, which maybe necessitates buying a new desk. </p><p>Your chair also needs to fit the requirements of the SR Pedal Stand Pro. The castors need to be between 40–46 cm and you must have a standard gas lift cylinder with a diameter of 2.8–3 cm.</p><p>It's a very limited run for this product and, for now, there's a <a href="https://www.simracing-rigs.com/" target="_blank">launch waitlist for the first batch</a>. Pricing is not yet confirmed.</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:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/8GHv7ZUGwf8bhinBRgQGjb.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Hope’s been writing about games for about a decade, starting out way back when on the Australian Nintendo fan site Vooks.net. Since then, she’s talked far too much about games and tech for publications such as Techlife, Byteside, IGN, and GameSpot. Of course there’s also here at PC Gamer, where she gets to indulge her inner hardware nerd with news and reviews. You can usually find Hope fawning over some art, tech, or likely a wonderful combination of them both and where relevant she’ll share them with you here. When she’s not writing about the amazing creations of others, she’s working on what she hopes will one day be her own. You can find her &lt;a href=&quot;https://blockbusterstation.buzzsprout.com/&quot; target=&quot;_blank&quot;&gt;fictional chill out ambient far future sci-fi radio show/album/listening experience podcast&lt;/a&gt; right here. &lt;br&gt;
&lt;br&gt;
No, she’s not kidding.&amp;nbsp;&lt;/p&gt; ]]></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[ The future of Nacon gaming accessories looks uncertain as the company files for insolvency ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/the-future-of-nacon-gaming-accessories-looks-uncertain-as-the-company-files-for-insolvency/</link>
                                                                            <description>
                            <![CDATA[ Will Nacon's hardware wing be the first to feel the brunt of debt restructuring efforts? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">mhqbAsTSV8HqG4Xm8gEjBc</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/55oDRNFrhW8WaxWrYUpbXH-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 25 Feb 2026 15:40:35 +0000</pubDate>                                                                                                                                <updated>Wed, 25 Feb 2026 15:40:40 +0000</updated>
                                                                                                                                            <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RqRA6M28uuy6JeF64tnvJR.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/55oDRNFrhW8WaxWrYUpbXH-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The front controls of the Nacon Revolution X Unlimited controller]]></media:description>                                                            <media:text><![CDATA[The front controls of the Nacon Revolution X Unlimited controller]]></media:text>
                                <media:title type="plain"><![CDATA[The front controls of the Nacon Revolution X Unlimited controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/55oDRNFrhW8WaxWrYUpbXH-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>French publisher and hardware manufacturer Nacon has <a href="https://www.pcgamer.com/gaming-industry/styx-publisher-nacon-files-for-insolvency-just-a-week-after-we-gave-its-latest-game-82-percent-asks-white-knuckling-creditors-to-figure-out-whats-next-in-a-calm-and-constructive-framework/" target="_blank">filed for insolvency</a>, after Bigben Interactive, the majority shareholder in the company, failed to make a partial lone repayment. This appears to have caused a knock on effect that has led the company to declare that its "available assets do not allow it to meet its due liabilities." (via <a href="https://www.ign.com/articles/nacon-files-for-insolvency-days-before-its-big-showcase-and-just-over-2-weeks-before-greedfall-2-releases-its-full-10-version" target="_blank">IGN</a>). </p><p>While the news will be worrying for fans of games published under its umbrella, it's also concerning for its hardware wing. Nacon designs and manufactures a variety of hardware peripherals, including controllers, headsets, microphones, and more recently, racing wheels. </p><p>With debt organisation considerations <a href="https://corporate.nacongaming.com/wp-content/uploads/2026/02/Nacon-CP-25.02.2026-English-Diffusion.pdf" target="_blank">now requested</a> [PDF], it certainly seems likely that Nacon will be forced to look at what it can and cannot afford to keep. And while its game publishing endeavours look to have been reasonably successful, a question hangs over the viability of many of its wide-ranging hardware efforts.</p><p>For our part, we've reviewed a fair number of Nacon controllers (and various other accessories) in recent years, and haven't always been blown away by the results. </p><p>The <a href="https://www.pcgamer.com/hardware/microphones/nacon-rig-m2-streamstar-review/" target="_blank">Nacon Rig M2 Streamstar</a> microphone and <a href="https://www.pcgamer.com/hardware/gaming-headsets/nacon-rig-900-max-hs-review/" target="_blank">Rig 900 Max HS</a> gaming headset failed to impress me personally, although other efforts, like the <a href="https://www.pcgamer.com/hardware/controllers/nacon-revolution-x-unlimited-review/" target="_blank">Nacon Revolution X Unlimited</a>, have faired slightly better.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="XohwnsJgZoHrvCXzjgwQCT" name="20250728_110918" alt="The Nacon Rig 900 Max HS next to its charging stand" src="https://cdn.mos.cms.futurecdn.net/XohwnsJgZoHrvCXzjgwQCT.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" 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 also got a chance to <a href="https://www.pcgamer.com/hardware/steering-wheels/nacons-promising-revosim-rs-pure-direct-drive-racing-wheel-lets-you-use-your-phone-as-a-dashboard-and-settings-tool-but-it-feels-like-it-could-do-with-a-little-work/" target="_blank">test out a pre-release version of its recent Revosim RS racing efforts last year</a>, and while there was plenty I liked about the direct drive wheel and pedal combo, I couldn't shake the feeling that it was a slightly-too-early demonstration of something that was a fair way from being ready to come to market. </p><p>It remains to be seen what happens next with the company, though it is trying to stay positive about the recent move. It says of the insolvency: "This procedure will enable the Company to continue its business, renegotiate its debts, and develop a credible and effective continuation plan."</p><p>While Nacon hasn't always knocked it out of the park, its hardware efforts have made for some interesting, and occasionally unique, additions to the hardware pot. So let's hope that continuation plan sticks.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Moza AB9 FFB Base + MH16 Flightstick + MTP Throttle review ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/moza-ab9-ffb-base-mh16-flightstick-mtp-throttle-review/</link>
                                                                            <description>
                            <![CDATA[ One for the serious flight simmers, but a very impressive experience. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">fjGZ5xcK8LaBGjLhbCCzjU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/7sPx82rcLMVn5XmFgPZj97-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 18 Feb 2026 14:48:01 +0000</pubDate>                                                                                                                                <updated>Wed, 18 Feb 2026 14:50:34 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RqRA6M28uuy6JeF64tnvJR.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/7sPx82rcLMVn5XmFgPZj97-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Moza AB9 FFB Base, MH16 Flightstick, and MTP Throttle attached to a desk]]></media:description>                                                            <media:text><![CDATA[A Moza AB9 FFB Base, MH16 Flightstick, and MTP Throttle attached to a desk]]></media:text>
                                <media:title type="plain"><![CDATA[A Moza AB9 FFB Base, MH16 Flightstick, and MTP Throttle attached to a desk]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/7sPx82rcLMVn5XmFgPZj97-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you're familiar with the world of simulation, then force feedback <a href="https://www.pcgamer.com/best-steering-wheels-for-pc/" target="_blank">racing wheels</a> are likely nothing new to you. Force feedback (FFB) flight sticks, on the other hand, are a much rarer find. A search around for current options reveals a small selection of boutique, "made in a shed" solutions that may well be excellent for flying, but usually come with prohibitively expensive price tags.</p><p>On the surface, Moza Racing's AB9 FFB base seems expensive. It's <a href="https://us.mozaracing.com/products/ab9-base" target="_blank">$499</a> by itself, and you'll need something like the Moza MH16 Flightstick to attach to it, lest you be left with a useless box. That'll set you back <a href="https://us.mozaracing.com/products/mh16-flightstick" target="_blank">$149</a>. You'll likely also want some throttle controls and switches, too, à la the Moza MTP Throttle for <a href="https://us.mozaracing.com/products/mtp-throttle" target="_blank">$329</a>. Moza has provided me with all three (along with a <a href="https://us.mozaracing.com/products/flightbase-table-clamp" target="_blank">$59</a> desk clamp for the base), and the total comes to $977 at current prices.</p><p>While that might seem like a lot of moolah to spend on a set of flight controls, compared to <a href="https://shop.brunner-simulation.ch/product/cls-e-joystick/" target="_blank">other force feedback solutions</a>, it's actually surprisingly reasonable for a full setup. And let me be very clear right from the off: None of this equipment is designed for, nor priced for, the casual user.</p><p>Nope, we're firmly in flight sim enthusiast territory here, which leaves me a little out of my depth. I've reviewed quite a few <a href="https://www.pcgamer.com/the-best-pc-joysticks/" target="_blank">flight sticks</a> in my time, but most of them have been for the more casual end of the market. Everything about the Moza gear, though, screams overbuilt, granular, and professional.</p><div  class="fancy-box"><div class="fancy_box-title">Moza AB9 FFB Base + MH16 Flightstick 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="ijZzELfyYacESZ8GXxqUdi" name="Mozacarpet" caption="" alt="A Moza AB9 FFB Base and MH16 Flightstick on a rather attractive rug" src="https://cdn.mos.cms.futurecdn.net/ijZzELfyYacESZ8GXxqUdi.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>Type: </strong>Force feedback flight simulator base + flight stick<br><strong>Peak torque: </strong>12 Nm<br><strong>Material:</strong> Aluminium + plastic<br><strong>USB refresh rate:</strong> 1000 Hz<br><strong>Connection ports:</strong> 1x proprietary power connector (and included 216 W brick), 4x Cat-5 connection ports for data, throttle, rudder pedals, 1x USB Type B<br><strong>Controls (stick): </strong>Trigger, 8-way trim switch, three hat switches, paddle switch, FOV button, removable side module<br><strong>Extras: </strong>USB Type-B to Type-A cable, mounting screws and tools<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://us.mozaracing.com/products/ab9-base" target="_blank">$499</a>/<a data-analytics-id="inline-link" href="https://uk.mozaracing.com/products/ab9-base" target="_blank">£479</a> (base), <a data-analytics-id="inline-link" href="https://us.mozaracing.com/products/mh16-flightstick" target="_blank">$149</a>/<a data-analytics-id="inline-link" href="https://uk.mozaracing.com/products/mh16-flightstick" target="_blank">£139</a> (flight stick)</p></div></div><p>The AB9 Base itself, for example, is absolutely massive. It's roughly the same size as some small form factor PCs I've tested, and weighs 5.5 kg (12.1 lbs). Inside lies a pair of servo motors capable of delivering a peak torque of 12 Nm, which, I can tell you from sim racing experience, is quite the load on your wrists.</p><p>I initially eyed it with suspicion, not least because of the relatively small desk clamp. In practice, though, it's actually a remarkably robust solution thanks to its 5 mm thick steel construction. The clamp can be mounted to either the bottom or side of the base itself—although given the huge dimensions, you'll likely want to use the latter. </p><p>Small metal inserts slide into the front of the chassis to provide clamping points, and Moza provides a selection of hex keys and differently-sized mounting hardware to bring the two together, which means it'll likely attach to most flight rig setups as well.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/qUtqXKmVEyZ7zMmfR4ZjsS.jpg" alt="A Moza MH16 Flighstick attached to a Moza AB9 FFB Base, clamped to a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/uTxs4nQMtjvcAHZQoD8QxA.jpg" alt="A close up of the Moza AB9 FFB Base attached to a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6gYnq9rdLjjnh6hikwKC36.jpg" alt="A Moza AB9 FFB base, with an outstretched hand in shot for scale" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/M6t929texY3Bs7Fq7y3UsS.jpg" alt="A desk clamp attached to a Moza AB9 FFB base" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rjLcXiNxnVqFWJpr6znXrS.jpg" alt="A top-down view of the Moza AB9 FFB Base with its shipping sticker still attached" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6iHSdxwJNrbBjEYvybQkrS.jpg" alt="The rear connection ports of the Moza AB9 FFB Base, with a small metal insert for mounting" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The MH16 Flightstick connects to a port on the top of the base via a pull-out cable, which means you can securely mate the connections together before clamping it down with a threaded mechanism. It's a nice touch, although the cable is initially a little tough to pull out, which led to a bit of head scratching as I thought I'd read the instructions wrong.</p><p>Atop the flight stick itself, you get a comprehensive selection of very well-made controls. There's a chunky, positive-feeling trigger, an eight-way hat switch, TMS and CMS hat controls, and two buttons, one of which is mounted on the front of the stick next to a large paddle switch. Attached to the top of the side of the stick is a modular unit with two more hat switches, which can be swapped on and off for different configurations.</p><p>It's a lovely-feeling stick to hold in the hand, which is a real boon. I'm often surprised by how cheap the controls can feel on mid-range units, but it's clear that you've bought into the high-end here, and material choice matters. It's not quite as premium-feeling as the <a href="https://www.pcgamer.com/hardware/controllers/thrustmaster-ava-f-a-18-super-hornet-flight-stick-review/" target="_blank">Thrustmaster AVA F/A-18 Super Hornet</a>, but then again, not much is.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/JeSymNuUCNeiHqLVDvkqzW.jpg" alt="A Moza MH16 Flightstick attached to a Moza AB9 FFB Base unit, clamped to a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Ae5TNbEHa82KZRMSou5bsS.jpg" alt="The top of the Moza MH16 Flightstick, showing a selection of buttons and hats" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4s9Ctcuxw8RVYUZ6iq7sif.jpg" alt="The underside of the Moza MH16 Flightstick, showing the red trigger and the side of the removable control module" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The Thrustmaster unit is the Lamborghini of flight sticks as far as I'm concerned, but alas, it's got no force feedback or dedicated throttle controls, and costs a whopping $600 by itself. See what I mean about the Moza being relatively good value overall?</p><div  class="fancy-box"><div class="fancy_box-title">Moza MTP Throttle 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="k2X6mgWMyuWbvk6ZDWSWB5" name="20260216_124246" caption="" alt="The various controls of the Moza MTP Throttle flight sim controller, lit up in green" src="https://cdn.mos.cms.futurecdn.net/k2X6mgWMyuWbvk6ZDWSWB5.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>Type: </strong>Flight sim throttle control<br><strong>Material:</strong> Aluminium + plastic<br><strong>Controls: </strong>27 programmable switches, adjustable detent system, Hall effect joystick, split throttles, throttle-mounted paddles<br><strong>Extras: </strong>Built-in vibration feedback, control panel lighting, Cat-5 connection cable<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://us.mozaracing.com/products/mtp-throttle" target="_blank">$329</a>/<a data-analytics-id="inline-link" href="https://uk.mozaracing.com/products/mtp-throttle" target="_blank">£329</a></p></div></div><p>Then there's the MTP Throttle controller, which is also a very sizable unit. Here you get a dizzying array of controls to configure, with 27 programmable switches, split throttle controls, paddles, buttons, and adjustments galore. I could go into specifics here, but I'll be honest, I'm still figuring out what some of them do. </p><p>Again, this is proper pro-simmer stuff, and not for the casual user. I've endeavored to get the most out of this setup, but short of building a replica cockpit, I don't think most users will be left wanting for options.</p><p>One slight drawback here is the lack of desk clamp availability for the throttle control, which means you'll either have to mount it to an existing sim rig, or leave it to its own devices atop your desk. </p><p>I opted for the latter, and while it's heavy enough to prevent movement during most uses, I did manage to slide it out of position during the odd "oh shit" moment. Moza will sell you a mount adapter with suckers on the bottom to prevent it from sliding around, but it's an <a href="https://mozaracing.com/products/flightbase-mount-adapter" target="_blank">extra $35</a>.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/SfzqyfzHtcmrBcjQCNeUA5.jpg" alt="The various controls of the Moza MTP Throttle flight sim controller, lit up in green" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/XCkKhtxH7buMeRJtyoh6v4.jpg" alt="The various controls of the Moza MTP Throttle flight sim controller, lit up in green" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/MpVhHyfvZLKQXtsVsc8wB5.jpg" alt="The various controls of the Moza MTP Throttle flight sim controller, lit up in green" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CjAn3cbCrE97W2ymbAwZB5.jpg" alt="The various controls of the Moza MTP Throttle flight sim controller, lit up in green" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Similarly, the <a href="https://us.mozaracing.com/products/z-axis-module" target="_blank">Z-Axis module</a> for the flight stick will run you an extra $89, which feels a little like nickel and diming the end user for features many other flight controllers will include out of the box. Still, the grand total for everything would add up to $1,100, and again, we're talking a full set of force feedback controllers here—this sort of tech doesn't come cheap.</p><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="X8pdQPRSsAGyYMi2HWLz4k" name="Mozasoftware2" alt="Screenshots of Moza Cockpit, its interface software for flight sim peripherals" src="https://cdn.mos.cms.futurecdn.net/X8pdQPRSsAGyYMi2HWLz4k.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/X8pdQPRSsAGyYMi2HWLz4k.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: Moza)</span></figcaption></figure><p>Moza's Cockpit software is a clever thing. The level of customization you can perform is mindboggling, and unlike just about every other flight stick software package I've ever used, it's got a clean and relatively straightforward UI. It's still not a simple thing to configure, but after using plenty of sticks with what can only be described as Windows 98-era interfaces, it comes as something of a relief.</p><p>As if to prove this "more modern than the rest" point, plugging in the base and throttle controls for the first time (the two chain together with an included network cable) results in an automatic self-test, and it's quite the moment. I recorded the effect because you'll want to see it for yourself.</p><iframe src="https://content.jwplatform.com/players/VuQu1qny.html" id="VuQu1qny" title="Moza AB9 Auto test.mp4" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>Yes, that's the flight stick moving on its own in an act of auto-configuration. I'll be honest, it gave me a fit of giggles the first time I watched its choreographed tilting, and I could replay that video all day long. There's something about watching a PC gaming peripheral move by itself that never gets old, that's all I'll say.</p><div><blockquote><p>The force feedback effect in telemetry mode is, to put it frankly, quite astonishing</p></blockquote></div><p>Moza Cockpit also has a clever way of integrating with a choice selection of games. As flight stick force feedback is such a rarity, the software has three primary modes to pull data from.</p><p>It can be used as a DirectInput controller, or it can hook itself into the flight telemetry of various games, including DCS, Microsoft Flight Simulator 2020 and 2024, XPlane 11 and 12, War Thunder, Elite: Dangerous, and others. The third mode, integrated FFB, attempts to use a combination of the two methods for extra compatibility.</p><p>All that's needed in most cases is to point the software towards the game's install path and select a telemetry process from a drop-down menu, wherein the software will attempt to hook the two together. While this is a relatively blunt solution to the problem of game compatibility, it worked fairly well in my testing.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vY287dbJedB5WAQFK9bAvP" name="20260216_124328" alt="A full Moza flight sim setup, including a Moza MTP Throttle unit, a Moza AB9 FFB Base, and a Moza MH16 Flightstick" src="https://cdn.mos.cms.futurecdn.net/vY287dbJedB5WAQFK9bAvP.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" 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>After configuring the basic controller options in DCS: World, I took to the skies for a swoop around in the Sukhoi Su-25T. It's my go-to flight testing configuration, firstly because it's free (and I'm cheap), and also because it's an easy-to-fly, yet hard to master, jet aircraft. And let's face it, we all know jets are the most fun.</p><p>The force feedback effect in telemetry mode is, to put it frankly, quite astonishing. The feedback is remarkably detailed, allowing you to feel not just the vibration of the engines at various throttle states, but also every little judder that suggests you might be stressing the airframe a touch too far. More than that, the way the stick lightens up when you screw up a manoeuvre and allow the controls to get away from you creates an oddly intuitive effect.</p><p>It makes you start flying the plane by feel, not by theory—and just like a good direct drive sim racing setup, the extra level of immersion it provides is genuinely hair-raising.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wvX9SpUBQ6eyyS6z3QhmLE" name="20260216_151153" alt="A photo of a 32-inch monitor displaying DCS World, with a jet fighter cockpit soaring above... Georgia? I forget" src="https://cdn.mos.cms.futurecdn.net/wvX9SpUBQ6eyyS6z3QhmLE.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" 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>For the first time since starting my journey into the murky world of flight simulators, I feel like I'm actually in control of the plane when I'm flying with the Moza. I can use my intuition to figure out what the airframe wants out of me, and stall conditions become less about watching dials and managing airspeed and angle of attack, and more about feeling for unwanted judders, or over-lightening of the stick.</p><div><blockquote><p>It feels like a setup with huge amounts of potential</p></blockquote></div><p>In short, it's massive amounts of fun. It's not a perfect compatibility experience, though. MSFS 2024 required a fair bit of tuning to get everything to work properly, as it only recognises the sticks on the most basic level. Essentially, it knows it's got a flight stick and throttle controls to work with, but doesn't appear to recognise exactly which ones, at least in my personal testing.</p><p>However, this is where the integrated FFB mode comes to the rescue. While configuring the telemetry mode alone led to some odd results (although I'm sure it's possible to configure it correctly with some more tweaking), sticking the Moza Cockpit software into integrated mode solved most of my issues.</p><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="gdo8hPqajar895h45XLKVL" name="MozaFFBsettings" alt="A closeup screenshot of Moza Cockpit's force feedback settings menu" src="https://cdn.mos.cms.futurecdn.net/gdo8hPqajar895h45XLKVL.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: Moza)</span></figcaption></figure><p>It still required me to map some of the controls manually within MSFS itself, but the feedback in this mode is still chunky, reassuring, and detail-filled, once the initial faff has been shoved out of the way.</p><p>I'm once again reminded of how far flight simulator hardware has to go in terms of ease of setup. For flight sim pros, all of these options are likely child's play to configure, and a niggling feeling in the back of my head suggests that user error might be to blame here. For those of us still trying to work out our X-axis follow ratios from our elbows, though, it's all a bit much—and adding force feedback into the equation complicates things even further. </p><p>Every flight stick/flight sim game I've tried to date suffers from configuration hiccups of some sort, but for those looking to get into the hobby, I'd definitely suggest something on the more basic end of the spectrum to keep all that fuss to a minimum.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2250px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="hvYVQr57uUjDggqhBT8Dyi" name="fsim1" alt="A plane leaning on its nose in a field while someone looks at it" src="https://cdn.mos.cms.futurecdn.net/hvYVQr57uUjDggqhBT8Dyi.jpg" mos="" align="middle" fullscreen="" width="2250" height="1266" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>But my goodness, the Moza kit is really something when you've got everything up and running, even to a basic degree. The feedback is surprisingly detailed, the control options are legion, and the throttle is remarkably positive in its action. </p><p>It feels like a setup with huge amounts of potential—but even for a flight sim dunce like me, I can still bodge it together to create a giggle-inducing day of swooping the skies. And switching back to a regular stick afterwards feels… downright dull, actually.</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 force feedback with less hassle: </strong>While other, more boutique solutions exist, it's a pretty sparse market for FFB flight sticks. Moza's attempts are fairly consumer-friendly, and while the kit is still expensive and a little fiddly to configure, it feels like a comprehensive, well-thought-out package.<br><br><strong>✅ You take your flight sims seriously:</strong> Moza's gear is aiming for the high-end of the flight sim market, despite being more reasonably priced than similar equipment. If you're making a serious investment in flight simulation, though, it's got plenty to recommend it for.</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 not all-in on flight sims: </strong>Moza's equipment might be more user-friendly than many, but it's definitely not for novices. Those looking to mess around in the skies rather than going all-in would be better served by a cheap but cheerful regular setup.</p></div></div><p>Still, whether you should buy any of this gear for yourself really comes down to how seriously you take your flight sims. Because while I can absolutely see the value added by this sort of setup, and how one might reasonably pay $1,000+ for it and feel like they've got a good deal, it's still proper enthusiast gear. </p><p>And while the software makes a good fist of tying everything together, it's not quite the plug-and-play experience you'll get (or something close to it, anyway) if you go for something like, say, the <a href="https://www.pcgamer.com/the-best-pc-joysticks/#section-the-best-mid-range-joystick" target="_blank">Logitech G X56 HOTAS RGB</a>. Moza's software is some of the best I've used, there's no doubt—but you'll still find yourself hunting through many, many menus if you really want to get the most out of it.</p><p>But what this equipment adds to the experience of virtual flying is quite simply undeniable, and for that, I have to give the Moza setup its stars. It's bulky, it can be confusing, and it'll cost you a pretty penny. </p><p>But if you're looking to take flight sims seriously, and you've got the cash (and hours) to spare on this one particular facet of our hobby, I think you'll want to take this Moza FFB set to the skies. At least to experience the tingly dread of a lightened stick, a buzzing stall warning, and a desk-shaking rumble as you plummet to the ground.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Steam Controller re-review: A fresh look at Valve's flawed but influential 10-year-old controller ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/steam-controller-re-review-a-fresh-look-at-valves-flawed-but-influential-10-year-old-controller/</link>
                                                                            <description>
                            <![CDATA[ Overlooked or rightfully neglected? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ugGjzn4dHDykcHhGWYEMvN</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/kXk5wqg7RoGSLDTWiXMuBZ-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 02 Feb 2026 17:57:12 +0000</pubDate>                                                                                                                                <updated>Mon, 02 Feb 2026 17:57:24 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/SEb5dKTVfZ5EZF4fEcqdGR.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/kXk5wqg7RoGSLDTWiXMuBZ-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></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/kXk5wqg7RoGSLDTWiXMuBZ-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Valve made a brave move with the launch of its Steam Controller in 2015. It's a pad designed for PC gaming on the sofa, and it removed the right thumbstick of a traditional controller and replaced it with a mouse-aping trackpad. With another trackpad on the left-hand side in place of the d-pad, you're dual-wielding... and stuck with a high learning curve and a pretty ugly look. However, some have sworn it's the way to go, once you're used to it, and I've had what I can only describe as a morbid curiosity ever since.</p><p>It's fair to say that we at PC Gamer have never been the biggest fans of the Steam Controller, either. <a href="https://www.pcgamer.com/steam-controller-hands-on-at-gdc-2014/" target="_blank">We got the chance to try it at GDC in 2014</a>, where we said, "I would've absolutely had more fun and been more effective with an Xbox 360 controller." </p><p>We then got to test it for its official launch the following year and were, again, <a href="https://www.pcgamer.com/steam-controller-impressions/" target="_blank">not that impressed</a>. We also weren't <a href="https://www.pcgamer.com/steam-controller-2-oh-no-valve-want-to-make-it-happen/" target="_blank">that into the idea of a second one</a> back in 2022, though we did admit the <a href="https://www.pcgamer.com/thank-you-steam-controller-stans-and-sorry/" target="_blank">Steam Deck owes its great controls to the controller.</a> </p><p>In fairness, with Valve eventually <a href="https://www.pcgamer.com/valve-has-run-out-of-steam-controllers-and-is-cancelling-orders/" target="_blank">selling the controller for just $5 by the end of its life</a>, it seems like the general controller-wielding masses weren't massively moved by it either. But with the controller just recently celebrating its ten-year anniversary, and Valve unveiling a <a href="https://www.pcgamer.com/hardware/controllers/steam-controller-specs-availability-hands-on/" target="_blank">Steam Controller follow-up</a>, I thought now was the perfect time to give it the 'ol college try.</p><div  class="fancy-box"><div class="fancy_box-title">Steam Controller (2015) 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="J7fPWeJ2kFJQup9XqeVsPZ" name="IMG_7255" caption="" alt="Steam Controller" src="https://cdn.mos.cms.futurecdn.net/J7fPWeJ2kFJQup9XqeVsPZ.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, Mac, SteamOS<br><strong>Connectivity: </strong>Wireless and wired<br><strong>Thumbstick layout: </strong>Just the one<br><strong>Weight:</strong> 286 grams<br><strong>Dimensions: </strong>120 x 160 x 64.2 mm<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://store.steampowered.com/app/353370/Steam_Controller_2015/" target="_blank">$50 (at launch)</a></p></div></div><p>The Steam Controller doesn't sell itself very well from the second it gets picked up. With the sunken side and lack of a right thumbstick, it reminds me of those old mockup concepts of the Xbox 720 you'd find back in 2010. Moving past the looks, there's a noticeable <em>clack</em> to most of its buttons. The bumpers are probably the worst culprit for this, but no button is particularly nice-feeling.</p><p>They emit a notable ping on the inside when pressed that feels like the hardware geek equivalent of grinding your teeth. This ping is distinctly loud in the trackpads at a normal controller distance, but the rest of them aren't too loud in that regard. However, it's still a consideration I've had to make, which I don't for most controllers. </p><p>Occasionally, the bumpers rattle just a little when I take my finger off, too, which is one of many signs the controller just isn't that well built. It feels very plastic-heavy in the palm and has a general rattle to it.</p><p>The trackpad can also let out a horrid ticking sound. This is linked to the controller's haptics, and you can reduce it by reducing feedback, but, naturally, that means less feedback. The battery system is neat, though, with a latch at the back that pops a brace off, and a slot in the side of each grip to put batteries.</p><p>Those batteries can then be flicked out by hitting a button just above them. The Steam Controller only works wirelessly with batteries, but it can work wired with a Micro USB port at the top. Wireless play simply requires throwing in the batteries, plugging in a USB receiver, and hitting start. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/FycAqUENrMAb4dphHTob5Z.jpg" alt="Steam Controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ToifLmJcqN98pNDXHBuX5Z.jpg" alt="Steam Controller" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>So, given that the Steam Controller is intended to bridge the gap between mouse and keyboard, I felt the suite of games I needed to try had to be a little of both. The first game I booted up was Counter-Strike 2. It felt… awkward. Fine control is not awful, but snap shooting takes a lot of work for little reward. </p><p>I still managed to wipe the floor with bots, but that's mostly because of positioning and movement. The actual shooting takes a back seat to everything else. I also tested <a href="https://www.pcgamer.com/games/fps/highguard-is-fine-when-you-dont-have-an-internet-in-your-ear-telling-you-its-nasty/" target="_blank">Highguard</a>, <a href="https://www.pcgamer.com/games/fps/as-someone-who-actively-avoids-fps-games-the-demo-of-dont-stop-girlypop-might-be-the-answer-to-my-prayers/" target="_blank">Don't Stop, Girlypop!</a>, and <a href="https://www.pcgamer.com/games/fps/i-consider-it-a-millennial-shooter-the-fps-dev-making-hit-shooters-by-leaning-into-2007-core/" target="_blank">Echo Point Nova</a> on the controller, and these also felt worse than with a mouse and keyboard or standard controller. </p><p>See, I think part of my problem here is that you're forced to use a trackpad for your aim. The left-hand side has a joystick, so I get a little flexibility, but the trackpad is unavoidable. One problem here is that you can't really use your thumb flat like you can with a traditional controller, so I felt myself constantly hovering my thumb just a little to avoid misclicks. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CiBADHWf4M9GfcAt3VjzJZ.jpg" alt="Steam Controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Lgt2cN5ZkpKirEVVjhSi6Z.jpg" alt="Steam Controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fKtQD5QoTPVqqWQqkoTc4Z.jpg" alt="Steam Controller" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Testing out <a href="https://www.pcgamer.com/games/sports/10-years-later-no-one-has-replicated-rocket-leagues-mojo/" target="_blank">Rocket League</a> (admittedly, not on Steam) required manually adjusting all my mouse and keyboard controls, as it doesn't pick up the Steam Controller as a pad. Unfortunately, this leaves controls feeling rigid. For example, where you’d usually be able to roll forward as you jump with a standard controller, the Steam Controller makes you do those inputs separately. This means it will always be a little slower to roll than a traditional controller. </p><p>Also, keyboard and mouse controls stay, so hitting the right bumper and 'A' together would change from full screen to windowed. With 'A' being jump, and the right bumper being air roll, I found myself hitting this combo often. It also can't handle ball controls, as the trackpad is less linear than the controller. </p><p>This means camera control is janky and stuttery. No matter what my teammates say, that's why I missed that open goal. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6cbidHdXTNLQnMpMXeBq4Z" name="IMG_7267" alt="Steam Controller" src="https://cdn.mos.cms.futurecdn.net/6cbidHdXTNLQnMpMXeBq4Z.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" 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>However, one problem did pop up with Rocket League that was fairly common in other games. The huge trackpad and small face buttons make for a very awkward stretch, and you need to take your thumb entirely off the trackpad before moving to the face buttons to avoid a misclick. </p><p>There's also a bridge between mouse and keyboard, and controller, that some games struggle to parse. Art simulator <a href="https://www.pcgamer.com/i-tried-following-a-bob-ross-tutorial-while-playing-an-artist-sim-and-the-struggle-was-real/" target="_blank">Such Art</a> just failed to pick up the trackpad as a mouse, and instead seemed to pick it up like a joystick. This means that movement would jerk from one place to the other, rather than a smooth glide. I suspect this same control problem is what made Rocket League's camera malfunction. </p><div><blockquote><p>One thing I can say for certain is that I see the vision here</p></blockquote></div><p>So, I can say that, on traditional controller games, the Steam Controller failed to make a good impression on me. However, the biggest sell for the Steam Controller is to play games <em>not </em>traditionally available on a controller, so <a href="https://www.pcgamer.com/against-the-storm-review/" target="_blank">Against the Storm</a> was my next pick. </p><p>Here is where I really started to get the vision of the Steam Controller, or at least its trackpad. I did find myself longing to use a mouse, but the trackpad was always designed more for couch play with the original Steam Machines, and here, it works. The standard controller layouts didn't work, but a community one mapped almost perfectly, and some minor tweaks got me the rest of the way. As well as this, the focus on the triggers meant the face buttons annoyed me less than I was expecting. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/gWEkzjmptPH3XySw3jguHZ.jpg" alt="Steam Controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mYkShH4WomXJiDG8b7KtJZ.jpg" alt="Steam Controller" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p><a href="https://www.pcgamer.com/crusader-kings-2-review/" target="_blank">Crusader Kings 2</a> is similar, though the clutter of menus and not-quite-precise enough trackpad did mean I felt constantly just a little slow. I often felt myself slowing the game down or entirely pausing it to get to notifications. </p><p>Moving over to <a href="https://www.pcgamer.com/total-war-warhammer-3-review/" target="_blank">Total War: Warhammer 3</a> and its blend of strategy and RTS, I found the overworld relatively easy to control, but fine controls in the corner of the screen would occasionally send me a little off the map. The battles are tough, though. This is partly due to controllers having fewer buttons but mostly because the trackpad feels slow, and the pad feels flimsy in the hands. Even after getting used to its shape, everything just feels inefficient. </p><p>But one thing I can say for certain is that I see the vision here. Even a clumsy trackpad gives more control than a typical controller, and being able to handily navigate windows without a mouse and keyboard means I can lounge a little while I play. And the Steam Controller was a bit of a trailblazer in broader controller support for non-traditional controllers on Steam.</p><p>In turn, the Steam Controller was naturally very important in the development of the <a href="https://www.pcgamer.com/steam-deck-review/" target="_blank">Steam Deck</a>. Greg Coomer, Steam Deck designer, <a href="https://www.pcgamer.com/thank-you-steam-controller-stans-and-sorry/#:~:text=%22Yeah%2C%20that%20feels,the%20Steam%20Store.%22" target="_blank">told us</a>, "We learned so much from the Steam Controller, and we continue to, you know. It's a supported device in a big way on Steam still… even though we don't currently have it in the Steam Store." </p><p>The community support for the Steam Controller was picked up (and finetuned) by Steam Deck users. The Steam Deck's implementation of two trackpads, two joysticks, and a directional pad makes the device much more versatile for different use cases, and this is something the upcoming Steam Controller carries on with.</p><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="gokbuqaWmL94WrqqnmSQ4" name="steam-controller-01" 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/gokbuqaWmL94WrqqnmSQ4.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The new Steam Controller (left) next to the old one (right) </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>But the original Steam Controller is still ugly, feels awkward and cheap in the hands, and I'm not entirely sure it won't break from a couple of particularly rough drops. However, the new Steam Controller set to launch this year looks like it's stepping up the plate with solid build quality (as best as we can tell with the time we got with it) and the addition of modern trappings like TMR and a charging puck. </p><p>As an oddity of a time gone by, I enjoy the weirdness of Valve's first Steam Controller, and certainly see why one would like it. Despite my grievances, if I could go back in time and pay the $5 to get the controller, I would. I don't know if that says more about the worth of the controller or my frivolous spending habits. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Open source Steam Controller-a-like is a beast with new screens and gyro controls: 'there's so much more I can add' says creator ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/open-source-steam-controller-a-like-is-a-beast-with-new-screens-and-gyro-controls-theres-so-much-more-i-can-add-says-creator/</link>
                                                                            <description>
                            <![CDATA[ OpenSplitDeck is shaping up to be a seriously impressive controller. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">nS3mH4APDKYWDyxMGhHrMF</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/im94SaQCjbtdYJxsBkoyA4-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 27 Jan 2026 13:08:31 +0000</pubDate>                                                                                                                                <updated>Tue, 27 Jan 2026 13:20:05 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/MhpLVw9KnLQKyRCgPc3QGR.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/im94SaQCjbtdYJxsBkoyA4-1280-80.jpg">
                                                            <media:credit><![CDATA[TommyB]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[TommyB&#039;s open source controller project, the OpenSplitDeck.]]></media:description>                                                            <media:text><![CDATA[TommyB&#039;s open source controller project, the OpenSplitDeck.]]></media:text>
                                <media:title type="plain"><![CDATA[TommyB&#039;s open source controller project, the OpenSplitDeck.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/im94SaQCjbtdYJxsBkoyA4-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It's been a while since <a href="https://www.pcgamer.com/hardware/one-gamer-got-so-tired-of-waiting-for-valve-he-made-his-own-steam-controller-2-out-of-steam-deck-parts-and-it-even-splits-in-half-like-switch-joy-cons/" target="_blank">we last heard</a> about this open source Steam Controller-a-like project from TommyB—the DIY project was a glimpse of what a controller with input parity with the <a href="https://www.pcgamer.com/steam-deck-review/" target="_blank">Steam Deck</a> could look like with a split design and dual trackpads. Since that time, Valve has actually announced its very own <a href="https://www.pcgamer.com/hardware/controllers/steam-controller-specs-availability-hands-on/" target="_blank">Steam Controller</a>. Yet TommyB says "that doesn't change anything" and his controller looks better than ever.</p><p>It's called the OpenSplitDeck. The new version looks as chunky, if not chunkier, than the one we saw back in June last year. Though it has been massively overhauled since then with a heap of new upgrades and quality-of-life improvements.</p><p>It now supports gyro controls, much like the Steam Controller, with one gyroscope in each half of the controller. Gyro functionality is, creator TommyB says, "a little noisy" at the moment, but he's looking into ways to improve this and use the dual-gyroscopes to better effect in-game. Each half of the controller also features a slim screen down the inside edge.</p><p>One of the larger overhauls here is a shift away from Arduino to the Nordic nRF Connect SDK. This is generally the recommended option for programming for the Seed Studio XIAO nRF52840 MCU used on the OpenSplitDeck. Even so, TommyB notes that a few things are still a bit broken on the latest version: sleep mode is a bit clunky and requires more power than it should and the capacitative thumbsticks are b0rked due to a lack of pins. </p><p>"If I can make another hardware version that uses another raw nRF52840 chip on here, that means you could order the board without really having to do any more assemble. You shouldn't have to solder anything," TommyB says.</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/R8YwpwIV1gQ" allowfullscreen></iframe></div></div><p>Otherwise, it's a big step in the right direction to get this controller ready to roll. The entire project lives on <a href="https://github.com/tommybee456/OpenSplitDeck" target="_blank">Github</a> with a full parts list if you're actually serious about giving building one a go. Sourcing all the parts required to put it together would set you back around $200-$300, though you'd end up with more than you'd need for a single controller.</p><p>Some of the parts, as noted in the video, are sourced from iFixit, and the shell comes from a replacement Steam Deck shell from Amazon. All of which is hoped to be replaced by 3D-printed files at some point or another, which would reduce costs… providing you have a 3D printer or access to one.</p><p>As TommyB says, it's more a controller "for the type of person that likes to tinker". If you want affordability, perhaps the actual Steam Controller will be a better fit for input parity with the Steam Deck. Though we don't yet know how much that will cost, or when it will arrive, but I'd take a guess that'll be a good bit cheaper than $200. But where's the fun in that? </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Quick—Amazon is flogging the best PC gaming controller for just AU$135 ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/quick-amazon-is-flogging-the-best-pc-gaming-controller-for-just-aud139/</link>
                                                                            <description>
                            <![CDATA[ If you need a new gamepad this is what you should get, it's that simple. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ELAUBwK4SPggC2bTdGrGU9</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/XhvyVwnULKWwAw3BgdLg9e-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Jan 2026 03:43:51 +0000</pubDate>                                                                                                                                <updated>Thu, 22 Jan 2026 05:45:24 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/VHK6WWHuYbRyFX3dSXbr3G.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/XhvyVwnULKWwAw3BgdLg9e-1280-80.png">
                                                            <media:credit><![CDATA[GameSir]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[An image of the GameSir G7 Pro controller]]></media:description>                                                            <media:text><![CDATA[An image of the GameSir G7 Pro controller]]></media:text>
                                <media:title type="plain"><![CDATA[An image of the GameSir G7 Pro controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/XhvyVwnULKWwAw3BgdLg9e-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="f8385c75-9441-4603-b8b8-5ebbd45ba31c" data-action="Deal Block" data-label="A tidy saving on this brilliant wireless PC gamepad (which also works with Xbox consoles, albeit only wired). It features an astonishing 1000 Hz polling rate for higher precision, TMR analog sticks, face button microswitches, Hall Effect triggers, paddle buttons, 2.4 GHz wireless and Bluetooth: it basically has everything you want form a pro controller, without being priced like a pro controller." data-dimension48="A tidy saving on this brilliant wireless PC gamepad (which also works with Xbox consoles, albeit only wired). It features an astonishing 1000 Hz polling rate for higher precision, TMR analog sticks, face button microswitches, Hall Effect triggers, paddle buttons, 2.4 GHz wireless and Bluetooth: it basically has everything you want form a pro controller, without being priced like a pro controller." data-dimension25="$135" href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FD41XC3P" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:228px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="NNRhRGHnfmKBrnmRLy3oMT" name="Gamesir G7 Pro" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/NNRhRGHnfmKBrnmRLy3oMT.png" mos="" align="middle" fullscreen="" width="228" height="228" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>A tidy saving on this brilliant wireless PC gamepad (which also works with Xbox consoles, albeit only wired). It features an astonishing 1000 Hz polling rate for higher precision, TMR analog sticks, face button microswitches, Hall Effect triggers, paddle buttons, 2.4 GHz wireless and Bluetooth: it basically has everything you want form a pro controller, without being priced like a pro controller.<a class="view-deal button" href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FD41XC3P" target="_blank" rel="nofollow" data-dimension112="f8385c75-9441-4603-b8b8-5ebbd45ba31c" data-action="Deal Block" data-label="A tidy saving on this brilliant wireless PC gamepad (which also works with Xbox consoles, albeit only wired). It features an astonishing 1000 Hz polling rate for higher precision, TMR analog sticks, face button microswitches, Hall Effect triggers, paddle buttons, 2.4 GHz wireless and Bluetooth: it basically has everything you want form a pro controller, without being priced like a pro controller." data-dimension48="A tidy saving on this brilliant wireless PC gamepad (which also works with Xbox consoles, albeit only wired). It features an astonishing 1000 Hz polling rate for higher precision, TMR analog sticks, face button microswitches, Hall Effect triggers, paddle buttons, 2.4 GHz wireless and Bluetooth: it basically has everything you want form a pro controller, without being priced like a pro controller." data-dimension25="$135">View Deal</a></p></div><p>The <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/">GameSir G7 Pro</a> wipes the floor with its competition in the "pro" gamepad space. It manages to pack in nearly every luxury feature you could want in a modern controller, and with an RRP far lower than your Xbox Elites or your Razer Wolverines. </p><p>The features are many: it has two rear paddle buttons, two extra bumpers, a D-pad with three removable plates, and face button microswitches. It comes with a charging dock, inside which you can plug the 2.4 GHz wireless dongle. It also has that most elusive of PC controller technologies—gyro support. But best of all is its anti-drift tech: it ups the ante on the nowadays common Hall Effect analog sticks with "tunnelling magnetoresistance" technology.</p><p>That newer tech is stick-drift resistant, which is nice, but the reason it's better than Hall Effect is its precision: the sticks have smaller dead zones, and not only that, draw less power than Hall Effect sticks. That last point is important—these things will last you for ten hours between charges.</p><p>I <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/">reviewed</a> the GameSir G7 Pro last year and I still use it every day. Which is why I feel compelled to point out that <a href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FD41XC3P/">Amazon is currently selling the G7 Pro for 15% off</a>, bringing it down from AU$159 to AU$135. </p><p>It's not the first time we've seen this discount—Black Friday saw the same price cut. It's not an unprecedented price drop in other words, but if you're in the market for a controller this is pretty much what you should be getting, and that AU$24 saving is a welcome bonus indeed.</p><p>Here are some pics I took of my review sample, which is a different colour to the one being sold at Amazon. Otherwise, it's exactly the same.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CLUqbm3rpKEfU3gR4VEdpE.jpg" alt="The GameSir G7 Pro gamepad sitting in its charging dock" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TtbtcSpBQvgK5F6xrbsAT3.jpg" alt="GameSir G7 Pro's TMR equipped analog stick" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6tYRgsAwAyu37tYzmjxYKa.jpg" alt="The GameSir G7 Pro's directional pad in the foreground, with its two analog sticks in the background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YhnccsiE8gDHvRMr8kBvKe.jpg" alt="GameSir G7 Pro with its exterior case taken off" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YUAaJWMzjmuS3WAtFzP8dL.jpg" alt="GameSir G7 Pro's face buttons" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The G7 Pro is great but it isn't perfect. It has an ultra-fast 1000 Hz polling rate, but you'll need to download GameSir's software to actually toggle it on (you otherwise will <em>never </em>need to use that software, which is a relief). </p><p>There is no RGB here, in case you want it, and some people might prefer a more conventional four back paddle button layout: as I mentioned above, the G7 Pro has two rear paddle buttons and two extra bumper buttons.</p><p>If you can deal with these small annoyances though, it comes highly recommended by us: it tops our list of <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/">the best PC controllers</a>.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Arc Raiders' overpowered aim assist gets stronger at high frame rates, and I feel like I'm cheating when I use it ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/games/third-person-shooter/arc-raiders-overpowered-aim-assist-gets-stronger-at-high-frame-rates-and-i-feel-like-im-cheating-when-i-use-it/</link>
                                                                            <description>
                            <![CDATA[ I've been testing Arc Raiders at different locked frame rates and the difference it makes to the controller aim assist is wild. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">JrwpdJUENfykSBp6DVUkRW</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/2F4QgZaCdisJF2mtwNmD-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 13 Jan 2026 17:30:35 +0000</pubDate>                                                                                                                                <updated>Wed, 14 Jan 2026 09:39:50 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/SEb5dKTVfZ5EZF4fEcqdGR.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/2F4QgZaCdisJF2mtwNmD-1280-80.jpg">
                                                            <media:credit><![CDATA[Embark Studios]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A screenshot from Arc Raiders, showing a zoomed in reticule]]></media:description>                                                            <media:text><![CDATA[A screenshot from Arc Raiders, showing a zoomed in reticule]]></media:text>
                                <media:title type="plain"><![CDATA[A screenshot from Arc Raiders, showing a zoomed in reticule]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/2F4QgZaCdisJF2mtwNmD-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I remember the days of other children on the playground telling me I could 360 in a zombies map to get the ray gun. These sorts of 'hacks' never worked, unfortunately. That's why I felt a twinge of scepticism in me today when I spotted <a href="https://www.ign.com/articles/whoever-has-the-better-pc-wins-arc-raiders-players-second-guess-cheating-allegations-after-discovering-link-between-aim-assist-and-fps" target="_blank">this report from IGN</a> pointing out players on the <a href="https://www.pcgamer.com/games/third-person-shooter/arc-raiders-review/" target="_blank">Arc Raiders</a> subreddit found you can magically get better aim by cranking up your fps. But I've tested it, and it's true.</p><p>This saga all started when a viewer of streamer <a href="https://youtu.be/p92RtkuaY_U?si=G2xZp46Phde-tm-i" target="_blank">Nickmercs</a> noticed Nick's aim snapped onto Arcs (the bots in the game) as he was shooting. Nick uses a controller, which is key to the whole affair. After <a href="https://www.reddit.com/r/ArcRaiders/comments/1q8lli8/comment/nyoj5lk/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">some took to accusing the previous Faze member of cheating</a>, others discovered that the aim assist for controller players appears to be stronger in Arc Raiders, the higher your fps is.</p><p>With the PC Gamer <a href="https://www.pcgamer.com/hardware/graphics-cards/nvidia-rtx-5070-ti-review-msi-ventus-3x/" target="_blank">RTX 5070 Ti</a> rig, I set everything to low, dynamic lighting to static, and resolution to 1080p and managed to get up to 300 fps without frame generation. It's possible to cap the frame rate in the game's settings, so I have all I need to test this theory out.</p><p>I discovered that Reddit is actually right about this one. Shock horror, I know. </p><p>At 300 fps, I discovered a few quirks when it comes to aim assist. The first is that it's  strangely inconsistent and locks on much easier as you move. But, once the reticle locks onto a target, it would move six or seven in-game feet back and forth without any input. I can put the controller down and watch it go. This is, frankly, absurd, and the five or so people I've shown it to have all scoffed. </p><p>At 30 fps, however, it locks on for a second or so, but I could never get it to track anywhere near as accurately or consistently. It wouldn't follow the Arc whatsoever without human input.</p><iframe src="https://content.jwplatform.com/players/cDjrdcX1.html" id="cDjrdcX1" title="Arc Raiders - aim assist at 60 vs 300 fps" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p><em><strong>In the clip on the left, I move the reticle to try and lock onto the Arc, but it rarely follows for more than a second. The clip on the right has no input from me at all. </strong></em></p><p>However, perhaps the most consistent way to point out how strong the aim assist is by aiming next to an Arc as it moves without actually touching it with the reticle. I found that, at 30 fps, the reticle would move ever-so-slightly towards the arc. At 300 fps, however, it would snap to the Arc and would require moving the thumbstick quite dramatically to the side to pull it away.</p><p>It sharply locks on, and the Arc simply won't let me go without a fight. I had to pull my right analogue stick halfway across to the right simply to pull away, and it would fire the reticle a couple of centimetres away from my target. It's almost distractingly sticky. </p><iframe src="https://content.jwplatform.com/players/cjoudQGU.html" id="cjoudQGU" title="Arc Raiders - aim assist comparison at 30/60/140/240/300 fps" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p><em><strong>The left-most clip above only gently pulls my reticle inward, where the clip on the very right sharply snaps onto the Arc. </strong></em></p><p>So, I knew aim assist was affected by the frame rate in some form, but I didn't yet know how that shapes up in real games. So I took me and my Razer controller to a public match. </p><p>Turns out being able to sharply lock onto an Arc doesn't just make shooting easier, but it also manages to follow an Arc through a tree. This is a straight advantage over mouse and keyboard. In the clip below, you can see it follow for an unbroken eight seconds, moving through a scattering of leaves on top of a tree. Even when it stops, it snaps back on a moment later. </p><iframe src="https://content.jwplatform.com/players/709vxdvL.html" id="709vxdvL" title="Arc Raiders - aim assist at 240 fps" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>I do find gently moving my reticle or even walking towards Arcs significantly improves my chances of activating the OP aim assist, and being short to mid-range helps too. Too far away and it gets lost, too close and it never quite snaps right. </p><p>Even at 60 fps, I do manage to get the reticle to lock onto Arcs, but only while moving and gently moving the stick. This means that aim assist is still a viable choice on low fps, though not nearly as potent. With some practice, I mastered the art of just doing enough for the game to help me out. Thanks, Arc Raiders. </p><p><em><strong>In the clip below (60 fps), I am gently moving the stick, and aim assist is doing the rest of the work. </strong></em></p><iframe src="https://content.jwplatform.com/players/rFptUzB0.html" id="rFptUzB0" title="Arc Raiders - aim assist at 60 fps" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>Still, to get Arc Raiders running at such a high fps, I have to make a lot of compromises I usually wouldn't when I play games. The resolution and graphics settings are significantly lower than I want. I also noticed that turning on frame generation makes aim assist much worse, too. I'd prefer a good-looking Arc Raiders to an easy Arc Raiders. And this explains why viewers managed to pick up on the aggressive aim assist in Nickmercs' stream. </p><p>According to <a href="https://powergpu.com/pages/content-creator?srsltid=AfmBOoqVAGyQaEOooA_tvnY4Bt1hAY0S8DMyHjru1C-nn3bxaonDDyTu" target="_blank">PowerGPU</a>, Nick is reportedly running a rig with an RTX 5090, AMD Ryzen 9 9950X3D, and 64 GB of RAM. It's a beefy rig that will naturally get up to average frames per second even at solid graphics settings, which will clearly show how strong the aim assist is. </p><p>If you like to play the game on a controller and are lucky enough to have a rig capable of a cool 240 fps, it might be worth cranking down the quality settings for such an improvement on your aim. Though, if I'm honest, I still thinking playing with a mouse and keyboard will be more accurate overall. Though that's a skill issue.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I enjoy touching all the hardware bits that pass through PCG's offices, but this bit of kit was all but made for my upsettingly small baby hands ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/i-enjoy-touching-all-the-hardware-bits-that-pass-through-pcgs-offices-but-this-bit-of-kit-was-all-but-made-for-my-upsettingly-small-baby-hands/</link>
                                                                            <description>
                            <![CDATA[ And yes, it is purple. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">tQB6qhX4BpbDRbDGhUFxrE</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/QkXKX2HTyW5qCVZ6KEogoB-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Wed, 31 Dec 2025 16:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Md68GDXhupcXtwAacuPKrd.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending the last seven working on print publications PLAY and Official PlayStation Magazine. When she’s not writing about all things hardware here, she’s getting cosy with a horror classic, ranting about a cult hit to a captive audience, or tinkering with some tabletop nonsense.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/QkXKX2HTyW5qCVZ6KEogoB-1280-80.png">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Various bits of purple PC gear--a set of gaming headphones, two controllers with 2.4 Ghz dongles, and a teeny-tiny USB--on a blue background. The &#039;PC Gamer Personal Pick 2025&#039; badge floats in the top-left corner.]]></media:description>                                                            <media:text><![CDATA[Various bits of purple PC gear--a set of gaming headphones, two controllers with 2.4 Ghz dongles, and a teeny-tiny USB--on a blue background. The &#039;PC Gamer Personal Pick 2025&#039; badge floats in the top-left corner.]]></media:text>
                                <media:title type="plain"><![CDATA[Various bits of purple PC gear--a set of gaming headphones, two controllers with 2.4 Ghz dongles, and a teeny-tiny USB--on a blue background. The &#039;PC Gamer Personal Pick 2025&#039; badge floats in the top-left corner.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/QkXKX2HTyW5qCVZ6KEogoB-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Gear of the Year</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="gexKX4otYoYDH2btLwQudc" name="GOTY Banners Main 2025" caption="" alt="A PC Gamer Hardware Awards 2025 logo" src="https://cdn.mos.cms.futurecdn.net/gexKX4otYoYDH2btLwQudc.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>Check out more of the year's best tech in our </strong><a data-analytics-id="inline-link" href="https://www.pcgamer.com/tag/hardware-awards-2025/" target="_blank"><strong>PC Gamer Hardware Awards 2025</strong></a><strong> coverage.</strong></p></div></div><p>There's a lot I love about this job—particularly all of the opportunities I now enjoy getting to smear my sticky little mitts all over a wide range of hardware. Looking back on a year of hardware reviews, plenty of premium bits of kit didn't impress me much—especially when each penny has felt especially precious in recent years. So, setting the <a href="https://www.pcgamer.com/tag/hardware-awards-2025/" target="_blank">coveted category awards</a> aside, it's definitely tricky to pick one techie thing that really spoke to me this year. That said, it's not like I don't have some cracking options to choose from for my personal pick.</p><p>Could it be the <a href="https://www.pcgamer.com/hardware/gaming-headsets/razer-kraken-kitty-v3-pro-review/" target="_blank">Razer Kraken Kitty V3 Pro</a>, the kitty-eared gaming headset that's just as much a fashion statement as it is a really premium audio device? Or is my personal hardware pick the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/be-quiet-light-mount-review/" target="_blank">Be Quiet! Light Mount</a>, the quietest gaming keyboard anyone at PCG towers has had the pleasure of tinkling the keys of? Nope, it's a gamepad you can buy for less than <a href="https://www.amazon.com/Ultimate-Controller-Joysticks-Remappable-Gaming-Console/dp/B0D72TNXSC/ref=sr_1_1?crid=2GNX7LQZMRFD&dib=eyJ2IjoiMSJ9.vGN5ooEqk-lpLAEI-BRwKdCme_Y6otszCAWSllmRMdsoXMcqrbEyhXz-gywztguZSK9VE0lzlYYexM7IDqk-HnHF_ImjJKrey7AasJpPxxb2A7wQ6aDyvfJHR8tmQoC_9AMyfLFRW8DiQZzhVQR7im2WCfLnY0n7R86mtBOmL0dLD-048z9M1TB3SuLuc7ebHH6NXP2JpvWpRJ_fFeW35zzr-qOAPAQNkvzjW9HS8fQ.3Bzefrk5dvwly8_ZBg76kbEcZzXrD3uM_wgVmastmc0&dib_tag=se&keywords=8BitDo%2BUltimate%2B2C%2BWireless%2BController&qid=1765559936&sprefix=8bitdo%2Bultimate%2B2c%2Bwireless%2Bcontroller%2Caps%2C454&sr=8-1&th=1" target="_blank">$30</a>/<a href="https://www.amazon.co.uk/8Bitdo-Ultimate-Controller-Joysticks-Remappable/dp/B0D72TNXSC" target="_blank">£25</a>.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2J5GsJvFFx4ZUkXhhG5DQF" name="Purple gear" alt="Various pieces of purple PC gear." src="https://cdn.mos.cms.futurecdn.net/2J5GsJvFFx4ZUkXhhG5DQF.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>"But wait," I hear you cry, "Haven't you reviewed two Pro controllers, both worth six to seven times that?" Yes, the <a href="https://www.pcgamer.com/hardware/game-pads/scuf-valor-pro-review/" target="_blank">wireless version of the Scuf Valor Pro</a> and the <a href="https://www.pcgamer.com/hardware/game-pads/razer-raiju-v3-pro-review/" target="_blank">Razer Raiju V3 Pro</a>, respectively. Instead of sticking with either of these admittedly rather lovely review units, I went out and, basing my decision solely on the personal testimony of my fellow hardware team aficionados, I bought something with my own money. As such, my personal pick is the <a href="https://www.pcgamer.com/hardware/controllers/8bitdo-ultimate-2c-wireless-controller-review/" target="_blank">8BitDo Ultimate 2C wireless controller</a> for the simple reason that it offers something neither of those Pro controllers do: it comes in my preferred shade of purple. </p><p>I'm only half-joking.</p><p>Now, to be fair, our top pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best budget PC controller</a>, the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">GameSir Nova Lite</a>, costs five bucks less and also comes in a colourway described as a 'Dark Purple'—but let's be honest, that's a deep navy at best. The Ultimate 2C enjoys a pitch-perfect, all-over lilac colourway that pairs nicely with all of my <em>other </em>purple hardware, but colour acuity aside, there's plenty else to love about this similarly budget PC controller.</p><p>First things first, you're getting more banging buttons for those five additional bucks. These extra, remappable buttons take the form of the R4 and L4 bumpers along the top edge of the gamepad. Alongside the more standard shoulder and trigger buttons, plus the joysticks, they're all Hall effect too. Effectively banishing the spectre of stick drift isn't bad for 30 bucks.</p><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="kzCubapBF8rJrQioFR56SF" name="Purple gear" alt="Various pieces of purple PC gear." src="https://cdn.mos.cms.futurecdn.net/kzCubapBF8rJrQioFR56SF.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Yes, alright, if you give it some welly on the handgrips, that 30 bucks price tag feels a lot less appealing; squeeze hard enough, and both the GameSir Nova Lite and the 8BitDo Ultimate 2C are betrayed by their creaky plastic construction. I'd argue the GameSir has just a bit more flex, but there's really not much in it. That said, I haven't really had to white knuckle my way through any games this year—save for perhaps <a href="https://www.pcgamer.com/games/horror/labyrinth-of-the-demon-king-review/" target="_blank">Labyrinth of the Demon King</a> thanks to <a href="https://www.pcgamer.com/games/horror/my-favorite-horror-game-of-2025-sounds-like-a-literal-nightmare-because-its-composer-sampled-the-creaking-of-an-old-house-and-a-metal-saw-scraping-an-instrument-that-sounded-horrifying-yet-could-have-been-made-in-feudal-japan/" target="_blank">its incredible soundtrack</a>.</p><p>Sure, if you're going pro in the competitive scene, this pad's (still very high) 1,000 Hz polling rate and kinda squishy D-Pad resistance may not be for you. However, I am resolutely mediocre at all things multiplayer, and the Ultimate 2C meets me where I'm at. After all, I don't really need the most responsive PC controller in the world when all I'm doing is hiding in a bush in <a href="https://www.pcgamer.com/games/third-person-shooter/arc-raiders-interview-embark-talks-behavior-based-matchmaking-map-updates-and-playing-nice-with-strangers/" target="_blank">Arc Raiders</a> (besides that, I can confirm not even the Nova Lite hurt my parry game in <a href="https://www.pcgamer.com/clair-obscur-expedition-33/" target="_blank">Clair Obscur: Expedition 33</a> one bit—that was firmly a skill issue).</p><p>Anyway, while we're comparing controllers, I simply prefer how the Ultimate 2C feels in my weirdly tiny baby-hands. The GameSir Nova Lite has a fairly standard silhouette, with handgrips that jut out at a slight angle, whereas the Ultimate 2C's form factor is more comparable to the Nintendo Switch Pro controller (though at half the price). What may lead to aches and pains for larger palms is just right for my tiny mitts.</p><p>To elaborate, the outer edge of the Ultimate 2C's handgrips is a straighter line that makes for a more compact controller overall, and shearing off what is likely only centimetres of width makes for a gamepad that's far less fatiguing for my itty-bitty palms to use. 8BitDo haven't left that chonk on the cutting room floor, though, with the underside of this controller's palm rests possessing a more noticeable curve compared to the Nova Lite. In all, it's a well-balanced pad that I am glad to have and to hold through long gaming sessions.</p><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="FHfQhyJchfA3uTJareErPF" name="Purple gear" alt="Various pieces of purple PC gear." src="https://cdn.mos.cms.futurecdn.net/FHfQhyJchfA3uTJareErPF.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>If I may circle all the way back around again, hardware <em>looks </em>really do matter alongside its performance. I cast my gaze upon all of my purple gear and, while my first thought is often, "Do I have a problem?" That's quickly drowned out by one joyful notion: "Matchy-matchy." In other words, if a bit of gear doesn't even spark joy to look at, then what's the point of allowing it to clutter up your gaming setup?</p><p>So, while I enjoy testing a wide array of hardware for the purpose of review, <em>this </em>was the bit of kit I went out and spent my own hard-earned money on. And if that's not high enough praise from a hardware reviewer, then what is?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Varmilo releases mildly cursed looking 'foot keyboard' designed to give you an edge in competitive games ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/varmilo-releases-mildly-cursed-looking-foot-keyboard-designed-to-give-you-an-edge-in-competitive-games/</link>
                                                                            <description>
                            <![CDATA[ Gain the upperhand… with your foot. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">BVHrMvwHbnfjwRCbr3ZhJU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/zzRcThdxTMFMCSbVdjXjyQ-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Wed, 03 Dec 2025 11:14:33 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Md68GDXhupcXtwAacuPKrd.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending the last seven working on print publications PLAY and Official PlayStation Magazine. When she’s not writing about all things hardware here, she’s getting cosy with a horror classic, ranting about a cult hit to a captive audience, or tinkering with some tabletop nonsense.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/zzRcThdxTMFMCSbVdjXjyQ-1280-80.png">
                                                            <media:credit><![CDATA[Varmilo]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Varmilo &#039;foot keyboard&#039; is seen floating beside a product illustration that demonstrates the peripherals intended use.]]></media:description>                                                            <media:text><![CDATA[The Varmilo &#039;foot keyboard&#039; is seen floating beside a product illustration that demonstrates the peripherals intended use.]]></media:text>
                                <media:title type="plain"><![CDATA[The Varmilo &#039;foot keyboard&#039; is seen floating beside a product illustration that demonstrates the peripherals intended use.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/zzRcThdxTMFMCSbVdjXjyQ-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Any day I cast my gaze upon a cursed bit of hardware is a good day, in my book. By that metric, today is off to a heel-stomping start, thanks to <a href="https://varmilo.com/products/foot-keyboard" target="_blank">Varmilo's line of wireless 'Foot Keyboards'</a>.</p><p>I'll give you a moment to process that. Alright? Now, let me explain. The cursed keebs in question are a line of wireless peripherals designed to give you an esports edge (via <a href="https://videocardz.com/newz/varmilo-launches-wireless-50-foot-keyboard-for-gamers" target="_blank">Videocardz</a>). How, you may be asking? By relegating key button presses to the domain of limbs you otherwise aren't using to game… is this what they call 'maximising efficiency'?</p><p>So, picture this: rather than stretching your palms to reload or sprint, you could bind those commands to one of these under-the-desk peripherals instead. These cursed keebs come in three and four key versions, so the world's your oyster—or rather, foot pedal.</p><p>Regardless of the button layout you go for, each 'key' is an ABS cap 25 mm in diameter, and features a Cherry MX Silent Black switch under the hood (or should that be 'under hoof'?). Each one requires an actuation force of at least 60 g, bottoming out at 85 g, meaning you're unlikely to accidentally press these by just resting your tootsies on top. The entire unit itself weighs about 1 kg as well, so it's unlikely to shift around under your toe taps.</p><p>With a polling rate of 1000 Hz and support for a 2.4 GHz connection, this bit of kit from Varmilo should be reasonably responsive. You can also connect wirelessly over Bluetooth, or plug in for a wired connection if you'd rather. If you'd like to toe tap revolution your way through your local competitive scene, you can pick up one of Varmilo's feet keyboards for about $50 (or £39).</p><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="n5oSNdHkhugNuapKSpopJT" name="MSI Liberator foot pedal hero" alt="Two of the MSI liberator foot pedal peripherals float in a blue-pink gradient void. The peripheral on the left is blue, while the peripheral on the right is red." src="https://cdn.mos.cms.futurecdn.net/n5oSNdHkhugNuapKSpopJT.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: MSI)</span></figcaption></figure><p>Now, for all of my wide-eyed wonder, it turns out gaming peripherals that look a bit like a foot pedal for a sewing machine or indeed your bass guitar are nothing new. Outside of racing sim setups, it turns out MSI offers the <a href="https://www.msi.com/Gaming-Gear/GP11GP12" target="_blank">Liberator line of foot pedals for gaming</a>. It's interesting to note that both of these products are pitched as offering an edge in competitive games to able-bodied gamers, rather than as an accessible controller or peripheral.</p><p>At any rate, the Liberator is neat as it offers a more cradle-esque form factor, placing its buttons like bumpers you can nudge into, as opposed to the Varmilo device's leverless fightpad look. The GP12 model from MSI is particularly interesting too as it allows you to connect up to four units together for a total of 12 remappable buttons within toe's reach… though at that point, <a href="https://www.pcgamer.com/games/rpg/after-14-hours-and-239-nonstop-tries-an-elden-ring-steamer-beat-shadow-of-the-erdtrees-final-boss-twice-simultaneously-with-a-controller-and-a-dance-pad/" target="_blank">why not just source a dance mat</a>?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The SpongeBob SquarePants Limited Edition Xbox controllers are made for goofy goobers and you can't convince me otherwise ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/the-spongebob-squarepants-limited-edition-xbox-controllers-are-made-for-goofy-goobers-and-you-cant-convince-me-otherwise/</link>
                                                                            <description>
                            <![CDATA[ Plus there's an Elite version for... well, I'm not sure who. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Du4GMsaQFVJL7gr4N6mv7D</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/HbKAmks5NZpwj4LRsEx3jk-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 19 Nov 2025 17:11:54 +0000</pubDate>                                                                                                                                <updated>Wed, 19 Nov 2025 17:15:00 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RqRA6M28uuy6JeF64tnvJR.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/HbKAmks5NZpwj4LRsEx3jk-1280-80.jpg">
                                                            <media:credit><![CDATA[Microsoft]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A SpongeBob SquarePants-themed Xbox controller on a blue background]]></media:description>                                                            <media:text><![CDATA[A SpongeBob SquarePants-themed Xbox controller on a blue background]]></media:text>
                                <media:title type="plain"><![CDATA[A SpongeBob SquarePants-themed Xbox controller on a blue background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/HbKAmks5NZpwj4LRsEx3jk-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Who lives in a pineapple under the sea? SpongeBob SquarePants! Who sits in his room and plays games on his own like a miserable git? Me. </p><p>Which means I'm probably not the target market for the <a href="https://www.xbox.com/en-us/accessories/controllers/the-spongebob-movie-le-xbox-controllers" target="_blank">SpongeBob Movie Limited Edition Xbox controllers</a>, which seem full of fun and whimsy and childhood delight. Okay, so they're just screen-printed regular Xbox Wireless controllers, available in both regular and <a href="https://www.pcgamer.com/xbox-elite-wireless-controller-series-2/" target="_blank">Elite</a> flavours, but even I had to raise a smile at the bizarreness of the design.</p><p>I mean, <a href="https://news.xbox.com/en-us/2025/11/18/spongebob-movie-limited-edition-xbox-controllers/" target="_blank">the central Xbox button and the X face button are his pupils</a>, for goodness sake. That means you can jab SpongeBob right in his (presumably porous) eyeballs with regularity, which sounds like a fun evening in with the family.</p><p>They're also available to customise as part of the Xbox Design Lab suite, so you can... I don't know, make them look like SpongeBob has a terrible illness? The Elite version seems to be going that way by default, as the outer grips look to be an odd mix of textured black plastic and bile green stamping. Anyway, there's <a href="https://www.imdb.com/title/tt23572848/" target="_blank">a new SpongeBob movie</a> on its way, apparently, and now you too can buy into the marketing campaign.</p><p>Which might be a little hard on your pocketbook, because they're not cheap. The standard version is $99, while the Xbox Elite model starts at a stonking $185.</p><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="ce637vBR9CKrL85vLkfdAQ" name="Spongebob controllers" alt="Two Limited Edition SpongeBob Xbox controllers, as part of a promotional ad for the movie" src="https://cdn.mos.cms.futurecdn.net/ce637vBR9CKrL85vLkfdAQ.jpg" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/ce637vBR9CKrL85vLkfdAQ.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: Microsoft)</span></figcaption></figure><p>It always was pretty pricy, the Elite. Speaking of which, I'm not sure why you'd go for the premium feel of Microsoft's top Xbox controller with SpongeBob's gurning visage plastered on top of it, but I'm sure for someone out there, it's the perfect holiday gift.</p><p>Me, I'm getting socks again I reckon. That's alright. They're practical, and I can use them to soak up my middle-aged tears. For the rest of you, go and have fun. You goofy goobers, you.</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[ 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:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Md68GDXhupcXtwAacuPKrd.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jess has been writing about games for over ten years, spending the last seven working on print publications PLAY and Official PlayStation Magazine. When she’s not writing about all things hardware here, she’s getting cosy with a horror classic, ranting about a cult hit to a captive audience, or tinkering with some tabletop nonsense.&lt;/p&gt; ]]></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[ The best PC gamepad you can get just got a sweet Black Friday deal, with 1000 Hz polling and TMR sticks for less than AU$140 ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/the-best-pc-gamepad-you-can-get-just-got-a-sweet-black-friday-deal-with-1000-hz-polling-and-tmr-sticks-for-less-than-aud140/</link>
                                                                            <description>
                            <![CDATA[ The GameSir G7 Pro tops the list of our favourite controllers for PC, and for good reason. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">qTiaVEnPPPMbmfdsfZBDr</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/6tYRgsAwAyu37tYzmjxYKa-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 17 Nov 2025 21:02:34 +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:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/VHK6WWHuYbRyFX3dSXbr3G.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/6tYRgsAwAyu37tYzmjxYKa-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The GameSir G7 Pro&#039;s directional pad in the foreground, with its two analog sticks in the background]]></media:description>                                                            <media:text><![CDATA[The GameSir G7 Pro&#039;s directional pad in the foreground, with its two analog sticks in the background]]></media:text>
                                <media:title type="plain"><![CDATA[The GameSir G7 Pro&#039;s directional pad in the foreground, with its two analog sticks in the background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/6tYRgsAwAyu37tYzmjxYKa-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Earlier this year I <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/">reviewed</a> the GameSir G7 Pro controller and came away mightily impressed. For AU$159 you get a 2.4 Ghz wireless controller with all the usual "pro" trimmings—paddle buttons, a modular d-pad and face button microswitches—as well as other features that help it trounce the competition, especially at this price point.</p><p>The most significant among these is perhaps the TMR (or Tunnelling Magnetoresistance) analog sticks, which are not only drift free, but also potentially more precise and with a lower power draw than other stick tech. I go into it in more detail in <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/">my review</a>, but basically: they're marginally better than Hall Effect analog sticks which have, for the past few years, been the go-to tech for players who hate the drift-prone problems rife in Sony and Xbox's gamepads.</p><p>Aside from the TMR sticks, I really loved the extra bumper buttons, especially the way the rear paddle buttons can be toggled off in a way that makes them feel like <em>they're not really buttons at all</em>. If this controller had an RRP of AU$300, it'd still be noteworthy, but one of the crucial draws of the GameSir G7 Pro is that it's astonishingly cheap for what you get: I feel like it eliminates the need to ever buy an Xbox controller again.</p><p>Anyway, Amazon's Black Friday sale just kicked off and you can currently get the <a href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FD41XC3P">GameSir G7 Pro for AU$135:</a> a neat 15% discount. It's not the steepest cut—and apparently only the white model is available—but if you're going to get one, now's the time to bite.</p><div class="product"><a data-dimension112="40918aa9-e958-4727-8362-d0d83f3869b9" data-action="Deal Block" data-label="A tidy saving on this brilliant PC gamepad (which also works with Xbox consoles, albeit only wired). It features an astonishing 1000 Hz polling rate for higher precision, TMR analog sticks, face button microswitches, Hall Effect triggers, paddle buttons, 2.4 Ghz wireless and Bluetooth: it basically has everything you want form a pro controller, without being priced like a pro controller." data-dimension48="A tidy saving on this brilliant PC gamepad (which also works with Xbox consoles, albeit only wired). It features an astonishing 1000 Hz polling rate for higher precision, TMR analog sticks, face button microswitches, Hall Effect triggers, paddle buttons, 2.4 Ghz wireless and Bluetooth: it basically has everything you want form a pro controller, without being priced like a pro controller." data-dimension25="$135" href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FD41XC3P" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:679px;"><p class="vanilla-image-block" style="padding-top:70.40%;"><img id="aKUL5gXQ66Bzv7CHiWmd6Z" name="gamesir" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/aKUL5gXQ66Bzv7CHiWmd6Z.jpg" mos="" align="middle" fullscreen="" width="679" height="478" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>A tidy saving on this brilliant PC gamepad (which also works with Xbox consoles, albeit only wired). It features an astonishing 1000 Hz polling rate for higher precision, TMR analog sticks, face button microswitches, Hall Effect triggers, paddle buttons, 2.4 Ghz wireless and Bluetooth: it basically has everything you want form a pro controller, without being priced like a pro controller.<a class="view-deal button" href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FD41XC3P" target="_blank" rel="nofollow" data-dimension112="40918aa9-e958-4727-8362-d0d83f3869b9" data-action="Deal Block" data-label="A tidy saving on this brilliant PC gamepad (which also works with Xbox consoles, albeit only wired). It features an astonishing 1000 Hz polling rate for higher precision, TMR analog sticks, face button microswitches, Hall Effect triggers, paddle buttons, 2.4 Ghz wireless and Bluetooth: it basically has everything you want form a pro controller, without being priced like a pro controller." data-dimension48="A tidy saving on this brilliant PC gamepad (which also works with Xbox consoles, albeit only wired). It features an astonishing 1000 Hz polling rate for higher precision, TMR analog sticks, face button microswitches, Hall Effect triggers, paddle buttons, 2.4 Ghz wireless and Bluetooth: it basically has everything you want form a pro controller, without being priced like a pro controller." data-dimension25="$135">View Deal</a></p></div><p>GameSir is also selling some of its older controllers cheap via Amazon, as part of Black Friday. See the <a href="https://www.amazon.com.au/GameSir-Wireless-Controller-Bluetooth-Vibration/dp/B0CMCQ6WMC/">GameSir Nova Lite for AU$38.25</a> (down from AU$45), which according to <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/">our reviewer</a> punches "well above its very light weight" for a gamepad at this price point (and yes it has Hall Effect sticks).</p><p>If you're after something other than a gamepad, we're collecting everything all <a href="https://www.pcgamer.com/au/black-friday-pc-gaming-deals/">Black Friday PC gaming deals in Australia</a>.</p>
                                                            </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:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/VHK6WWHuYbRyFX3dSXbr3G.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></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[ How grip sensing was added to the new Steam Controller is a 'typical Valve story' involving a passionate employee moving desks ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/how-gyro-support-was-added-into-the-new-steam-controller-is-a-typical-valve-story/</link>
                                                                            <description>
                            <![CDATA[ One Valve employee essentially made it happen. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">HXPcMHtMcUL6nXQiuoCsF6</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/AszbJKeMrYAQd96mWXE5-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 12 Nov 2025 19:30:00 +0000</pubDate>                                                                                                                                <updated>Mon, 15 Jun 2026 15:01:53 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <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>Valve has packed the new <a href="https://www.pcgamer.com/hardware/controllers/steam-controller-specs-availability-hands-on" target="_blank">Steam Controller</a> with multiple ways to control a PC game from the comfort of your sofa. It has standard thumbsticks (phew), a pair of trackpads, and gyro controls. Three for the price of… well, we don't know the price of the Steam Controller yet. Though I hadn't considered gyro controls for my gaming PC prior to actually using the Steam Controller.</p><p>"So, there's a whole community of gamers who really are into gyro aiming," Steve Cardinali, a Valve engineer working across the Steam Controller and Steam Frame Controllers, says.</p><p>Cardinali notes that the Steam Controller has a special way of sensing when a user is holding it, which allows it to enabled/disable gyro controls. Cardinali explains the process of adding grip sensing as a "typical Valve story", involving one passionate Valve employee that just <em>had </em>to get the feature into the design.</p><p>"There's a guy at Valve who's super into gyro and the gyro aim community," Cardinali says. "And when he heard we were working on the controller, he came downstairs and was like, 'you guys got to add some kind of grip sense for gyro'.</p><p>"He came and moved his desk down by us and sat with us for like, six, eight months or something, and helped us figure it out because he's really in that community. He helped us lay it all out, figure out how it could best help them, and then just recently, he helped do a bunch of software work to help optimise it for us."</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/JGwMwTfJXJsyhbgG2WV24.jpg" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/gRJaCxjyjzDp6EwU3RkV.jpg" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><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>The entire Steam Controller becomes an input with gyro controls, similar to Nintendo's Joy-Cons. I'm told there are many ways to use gyro controls on PC—Cardinali notes that Steam Input lets you map the gyro to whatever you like—and I'm offered to test the Steam Controller's capabilities in a game of Balatro. I'm tilting and aiming the controller to move the mouse cursor here. It's pretty accurate, more so than thumbsticks, and as I said to Cardinali at the time, you get used to it pretty quickly. </p><p>The grip sensing feature turns on the gyro when you're holding the controller, and disables it when it's released. It also can be used to recenter the gyro. This might prove an important feature if you're barrelling towards the ground in a fighter jet in Battlefield 6 due to dropping your Controller.</p><p>Though it's an interesting glimpse behind the curtain for Valve. A surprisingly small company, I'm told that the engineers all mostly work in one building to make this sort of collaboration easier, and they play test everything themselves.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/kw9ca8ANcurdSruv6FteYo.jpg" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/95zHorqZBfhG4xoe8VQU.jpg" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>"If you're at home and you're thinking, 'I wish this could do this', we've probably thought about that, too," Josh Hudman says. "We're using it and we think the same."</p><p>So, that's why this is a typical Valve story. A passion-project turned feature in brand new hardware set for a global launch. Vindication for all those gyro control fans out there still holding onto older Steam Controllers for the feature. I think I'd rather use the trackpads still. But I'm willing to give it a go, and if it makes me a convert, I and everyone else better give this Valve engineer and their ensemble of gyro users their due.</p><div ><table><caption>Steam Controller specifications</caption><tbody><tr><td class="firstcol " ><p><strong>Compatibility</strong></p></td><td  ><p>Windows/Mac/Linux</p></td></tr><tr><td class="firstcol " ><p><strong>Thumbsticks</strong></p></td><td  ><p>Tunnel Magnetoresistance (TMR)</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Bluetooth, 2.4 GHz (via Puck or Steam Machine, up to four controllers at once), USB wired</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>35 hour+</p></td></tr><tr><td class="firstcol " ><p><strong>Extra features</strong></p></td><td  ><p>Gyro controls w/ grip sense, HD haptics, 2x trackpads, 4x rear grip buttons</p></td></tr><tr><td class="firstcol " ><p><strong>Release date</strong></p></td><td  ><p>2026</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>TBC</p></td></tr></tbody></table></div><p>The Steam Controller goes on sale sometime next year, date to be confirmed. As is the price. We know, however, it will feature TMR thumbsticks, twin trackpads with haptic feedback, 2.4 GHz via an included puck, Bluetooth, and 35 hours or more of battery life.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Valve announces the Steam Controller and it's genuinely good: 'we knew we needed to make this controller' ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/steam-controller-specs-availability-hands-on/</link>
                                                                            <description>
                            <![CDATA[ The new Steam Controller is a smart way to play PC games on the sofa, stealing the Steam Deck's clever controls. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">2U9iV7WkmhVsoVsWc4Ts4J</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/WX5CBPYBtDzfHtHQNeUz-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 12 Nov 2025 18:00:00 +0000</pubDate>                                                                                                                                <updated>Mon, 15 Jun 2026 15:01:53 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob earned his first byline writing for his own tech blog, before graduating to breaking things professionally at PCGamesN, where he was one half of a popular weekly YouTube show. Joining PC Gamer in 2020, Jacob is now managing editor of the hardware team, and you&#039;ll usually find him testing the latest components or building a gaming PC. He says he&#039;s determined to build a fort as big as a house out of case boxes. Jacob enjoys heading out of the office to report from floors, benches, and, if he&#039;s lucky, plush press rooms at the biggest tech shows, such as Computex and CES.&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not writing about components, you&#039;ll find Jacob trying to get away from the modern world as fast as possible by bike and pitching up camp in murky woods.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/WX5CBPYBtDzfHtHQNeUz-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/WX5CBPYBtDzfHtHQNeUz-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Valve has announced a new Steam Controller, called the Steam Controller, and I've given it a go. Valve has given its latest creation the same name as its previous star-crossed product, but this new model is going to be far less divisive than the original. Of that, I am absolutely sure.</p><p>The idea behind the Steam Controller is that it allows you to interact with your PC while on your sofa or away from a desk with the accuracy of a mouse, without actually requiring one. This is, and always has been, a good idea. Where people differ is on whether the original manifestation of the Steam Controller, first released in 2015, was any good or not. </p><p>I never used it for long enough to get to grips with it—which was, in large part, the problem with it. Some here at PC Gamer own the controller, but rarely, if ever, used it. Others here actively despise it. I imagine that represents a pretty good cross section of the wider PC gaming community. But it's important to note that there remains a small number of people that argue that it was, in fact, a good controller. It even has a <a href="https://store.steampowered.com/app/353370/Steam_Controller/" target="_blank">'Mostly Positive' rating on Steam</a> to this day.</p><p>The original controller was discontinued around the time it became clear the Steam Machine dream was well and truly over, circa 2019. In its final death throes, it was put on sale for a frightfully low amount of money ($5/£4) and yet still failed to take off. The learning curve deemed too steep; the touchpads too weird; the thumbsticks too few.</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/06pDiCXFlBI" allowfullscreen></iframe></div></div><p>This is not a problem with the new Steam Controller. Valve has done the very sensible thing, placing two thumbsticks where you'd expect them to be. Or at the very least, where PlayStation gamers expect them to be, as they are symmetrically placed within equal reach of your thumbs. There's good reason for this, as beneath each thumbstick sits a touchpad.</p><p>The Steam Controller's two touchpads are nearly identical to the <a href="https://www.pcgamer.com/steam-deck-review/" target="_blank">Steam Deck's</a>, albeit rotated slightly for a more ergonomic design. This is, of course, not a coincidence. The whole idea behind this new version being it allows a user that is docking their Steam Deck to have complete input parity with the handheld. Every layout available to the Steam Deck, each custom control scheme, the Steam Controller can do it too.</p><p>"We wanted it to feel familiar, so we targeted input parity with Steam Deck," Steve Cardinali, an engineer at Valve who worked on the Steam Controller, tells me during my visit to Valve HQ to try it out.</p><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="AszbJKeMrYAQd96mWXE5" name="steam-controller-16" 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/AszbJKeMrYAQd96mWXE5.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 ><table><caption>Steam Controller specifications</caption><tbody><tr><td class="firstcol " ><p><strong>Compatibility</strong></p></td><td  ><p>Windows/Mac/Linux</p></td></tr><tr><td class="firstcol " ><p><strong>Thumbsticks</strong></p></td><td  ><p>Tunnel Magnetoresistance (TMR)</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Bluetooth, 2.4 GHz (via Puck or Steam Machine, up to four controllers at once), USB wired</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>35 hour+</p></td></tr><tr><td class="firstcol " ><p><strong>Extra features</strong></p></td><td  ><p>Gyro controls w/ grip sense, HD haptics, 2x trackpads, 4x rear grip buttons</p></td></tr><tr><td class="firstcol " ><p><strong>Release date</strong></p></td><td  ><p>2026</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>TBC</p></td></tr></tbody></table></div><p>"We know that our customers frequently dock their Decks, and they use it pretty much like a console. They just put it up on their big screen, but then they go to sit on their couch and they grab a controller, and all of a sudden they're lacking all those advanced inputs the Steam Deck has. And we knew that was a problem we needed to fix, and so that, combined with our Steam Controller learnings, led to this new Steam Controller."</p><p>It's a design that's been subject to debate for a while, both inside and outside of Valve. <a href="https://www.reddit.com/r/SteamDeck/comments/1nwh9lc/steam_controller_2_final_iteration/" target="_blank">Mock-ups posted to Reddit</a> of what a new Steam Controller might look like even got pretty close to the final design post-Steam Deck launch. I guess the writing was on the wall once the handheld improved upon the original idea and got it working for everyone.</p><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="gokbuqaWmL94WrqqnmSQ4" name="steam-controller-01" 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/gokbuqaWmL94WrqqnmSQ4.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>"We knew we needed to make this controller. We knew how we wanted to lay things out. It took a while to get there and then, as gamers and people who are constantly listening to our community, we also wanted to make sure we added some new features that would excite our customers and ourselves as gamers, and also maybe address some issues that we saw from the field."</p><p>Wireless connectivity is one new feature for the new Steam Controller: Bluetooth and a dedicated, low-latency 2.4 GHz connection via a 'Puck' included in the box. This Puck can connect to up to four Steam Controllers at any one time. It also doubles as a charging stand, connecting to the rear of the Steam Controller when you place it down. It can also be charged via the USB Type-C port on the rear.</p><div><blockquote><p>We targeted input parity with Steam Deck.</p><p>Steve Cardinali, Valve</p></blockquote></div><p>It's also designed to plug and play with Valve's latest creation: the <a href="https://www.pcgamer.com/hardware/gaming-pcs/steam-machine-specs-availability" target="_blank">Steam Machine</a>. History is truly repeating itself, as the original Controller also launched alongside the original Steam Machines. Though Valve appears in a much better spot to make its Linux-powered living room gaming dream a reality this time around. The Steam Machine features a dedicated antenna for connecting to up to four Steam Controllers, effectively replacing the need for the Puck.</p><p>The thing I'm most excited about is the use of Tunnel Magnetoresistance (TMR) thumbsticks. These reduce the risk of stick drift and reduce the required deadzone.</p><p>"They're super responsive, meaning that we're able to lower the default dead zone by more than half. And super reliable. They'll keep drift at bay much, much, much longer. These things are super great," Cardinali says.</p><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="xRWek9qLVuDZme3ZDMt23" name="steam-controller-03" 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/xRWek9qLVuDZme3ZDMt23.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>The touchpads have a gentle feedback when used, which is taken care of by the same motors found in the Steam Deck. So, again, that's the same for Steam Deck users. Though Valve has included even more powerful haptics in the grips here. Cardinali says the availability of more advanced haptic motors these days, able to respond to complex waveforms, helps produce a more immersive and finessed feedback.</p><p>Another feature headed to the Steam Controller is gyro aiming*—essentially using the entire controller to aim your mouse.</p><p>"So there's a whole community of gamers who really are into gyro aiming," Cardinali says. "And if you follow what they do, they do all these crazy things all over their controller to enable and disable gyro."</p><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="95zHorqZBfhG4xoe8VQU" name="steam-controller-17" 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/95zHorqZBfhG4xoe8VQU.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>The Steam Controller supports gyro natively. It even includes a feature to make the controls more usable in practice, essentially sensing when a user is gripping the controller and only enabling gyro controls when they are. It's a dead man's switch—when you place the controller on the ground or let it go, it disables the gyro to avoid any odd behaviour.</p><p>"So if you're using gyro and you want to quickly turn it off, you can just flick your fingers open, and then re-grab and you can recenter your gyro. It's also a full input. Using steam input, you can just map it to whatever you want to."</p><p>What's more, the story of how grip sensing came to be in the Steam Controller is what Cardinali calls a "typical Valve story."</p><p>"There's a guy at Valve who's super into gyro and the gyro aim community," Cardinali says. "And when he heard we were working on the controller, he came downstairs and was like, 'you guys got to add some kind of grip sense for gyro'. He came and moved his desk down by us and sat with us for like, six, eight months or something, and helped us figure out because he's really in that community. He helped us lay it all out, figure out how it could best help them, and then just recently, he helped do a bunch of software work to help optimise it for us."</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/guWkydLcz99iRXLWAV6P.jpg" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/o9UnqKRZM4WtrYgMhbm5Yo.jpg" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><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>I've used the new Steam Controller at Valve HQ and I'm glad to report all the buttons are in the right place. It feels comfortable, easy to use, and importantly, there's no learning curve. It's made from that same black plastic that anyone who has used modern Valve hardware will recognise. It doesn't feel cheap, certainly not as cheap as the original controller, but it doesn't feel high-end, either. I'm hopeful this means a reasonable price tag—$5 might be pushing it, but affordable to match the Deck nevertheless.</p><p>Even the gyro controls, which I was apprehensive about at first, are fairly easy to master. Or at the very least, use somewhat competently. I tried the controller out in Balatro, a game that works just as well via controller as it does a mouse, and you truly have the flexibility to use whichever input method feels right for you in the moment. They all work really rather well.</p><p>The Steam Controller will be available to buy sometime next year, for a price not yet disclosed. We do know, however, that it will be on sale anywhere you can officially buy a Steam Deck today, including countries in Asia, where it is available through official distributor Komodo.</p><p><strong>*Updated to note the original Steam Controller also had gyro functionality.</strong></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:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/VHK6WWHuYbRyFX3dSXbr3G.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></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[ Corsair announces a Hall effect stick-less fight controller with rapid trigger, in the hopes of button bashing faster than anyone else ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/corsair-announces-a-hall-effect-stick-less-fight-controller-with-rapid-trigger-in-the-hopes-of-button-bashing-faster-than-anyone-else/</link>
                                                                            <description>
                            <![CDATA[ Is it time to drop the joystick? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">cpZTgmAiELteTEbEebPgnZ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/92Cac4BB7mukwhLZt7bdn7-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 31 Oct 2025 17:32:54 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/SEb5dKTVfZ5EZF4fEcqdGR.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;James is a more recent PC gaming convert, often admiring graphics cards, cases, and motherboards from afar. It was not until 2019, after just finishing a degree in law and media, that they decided to throw out the last few years of education, build their PC, and start writing about gaming instead. In that time, he has covered the latest doodads, contraptions, and gismos, and loved every second of it. Hey, it’s better than writing case briefs.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/92Cac4BB7mukwhLZt7bdn7-1280-80.jpg">
                                                            <media:credit><![CDATA[Corsair]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Corsair&#039;s new hall effect wireless fight controller]]></media:description>                                                            <media:text><![CDATA[Corsair&#039;s new hall effect wireless fight controller]]></media:text>
                                <media:title type="plain"><![CDATA[Corsair&#039;s new hall effect wireless fight controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/92Cac4BB7mukwhLZt7bdn7-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I'm not great at fighting games. I have a main in Street Fighter (add Sakura to 6, please, Capcom) and don't often swoop to the lows of button bashing, but it doesn't take much panic to send me there. Well, luckily, Corsair has announced a new professional-looking fighter stick, and I can't wait to lose at my local tournament with it. </p><p>The <a href="https://www.corsair.com/newsroom/press-release/corsair-steps-into-the-ring-announces-novablade-pro-wireless-hall-effect-leverless-fight-controller" target="_blank">Novablade Pro Wireless</a> has Hall effect magnetic switches, which not only ensure a longer shelf life but also allow custom actuation on the board. Keys can be set from anywhere to 0.1mm to 4mm, which means you can make surrounding keys a little harder to press and important ones easier to hit. </p><p>Corsair says switches can be hit up to 150 million times, which is approximately three games for the average button basher. Speaking of button bashers, this fight controller has rapid trigger keys, which means they stop pressing the second you do. A more traditional switch starts and stops pressing at a certain actuation, which means you are losing milliseconds with each hit. That allows you to not only hit keys quicker, but also more often. </p><p>Being wireless, it can be connected via Bluetooth, or connected to your rig in 2.4 GHz mode, offering lower latency than the Bluetooth option. Or you could forgo the wireless and plug it in with a cable, of course.</p><p>Our Jacob had a chance to see the fight controller in person at Gamescom this year and got to talk to Corsair a little about it. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/rVwHEAWCwoN6ToCkSTuXoJ.jpg" alt="A picture of the Corsair Hall Effect leverless fight controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/i5v2jwPxz72DeKUTjFWxoJ.jpg" alt="A picture of the Corsair Hall Effect leverless fight controller" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>A Corsair rep told us that the fight controllers' use of keys and rapid trigger makes quarter-circle moves (and similar attacks) smoother than a traditional fight stick. Naturally, that will be down to the individual player, but this is supposedly why players have been opting for leverless pads as of late. </p><p>We also got a look at its swappable face plates and the RGB lighting around the controller. With 15 individual keys, they are all lit by RGB, but the controller also has storage for custom profiles and customizable keys. </p><p>Interestingly, this fight controller also comes with SOCD, for setting a key priority when you click multiple buttons at once. This has been <a href="https://www.pcgamer.com/games/fps/valve-says-weve-decided-to-draw-a-clear-line-and-bans-snap-tap-keyboard-automation-from-counter-strike-2/" target="_blank">banned in the likes of Counter-Strike 2</a>, but in the fighting game scene, SOCD is still a bit of an open question. You could always choose not to enable it, I suppose, but it'll be interesting to see if tournaments allow such a device to be used at all. </p><p>If you like to play fighting games on multiple devices, the Novablade Pro is compatible with PC, PS5, and PS4 straight out of the box. And, If you want to grab the Novablade Pro Wireless for yourself, it will set you back a pretty hefty <a href="https://www.corsair.com/us/en/p/leverless-controllers/CH-963B01G-WW/novablade-pro-wireless-hall-effect-leverless-fighting-game-controller-ch-963b01g-ww" target="_blank">$250 on the Corsair site</a>. All those features don't come cheap, do they?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
            </channel>
</rss>