<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="https://purl.org/dc/elements/1.1/"
     xmlns:dcterms="http://purl.org/dc/terms/"
     xmlns:media="http://search.yahoo.com/mrss/"
     xmlns:atom="http://www.w3.org/2005/Atom"
>
    <channel>
                    <atom:link rel="alternate" hreflang="en-GB"
                       href="https://www.pcgamer.com/uk/feeds/tag/controllers/"
                       type="application/rss+xml"/>
                            <title><![CDATA[ Latest from PC Gamer UK in Controllers ]]></title>
                <link>https://www.pcgamer.com/uk/hardware/controllers</link>
        <description><![CDATA[ All the latest controllers content from the PC Gamer  UK team ]]></description>
                                    <lastBuildDate>Fri, 19 Jun 2026 01:26:31 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ Steam Controller demand is so high that new reservations won't be fulfilled until 2027 ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/steam-controller-demand-is-so-high-that-new-reservations-wont-be-fulfilled-until-2027/</link>
                                                                            <description>
                            <![CDATA[ The queue system has been tweaked to give more useful shipping estimations, but they're not encouraging. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Q9R7Hac6FzTD35qhkGqoQP</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/eodU4CmU7kSxoUnAF2T6HY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 19 Jun 2026 01:26:31 +0000</pubDate>                                                                                                                                <updated>Fri, 19 Jun 2026 09:00:26 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/eodU4CmU7kSxoUnAF2T6HY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/eodU4CmU7kSxoUnAF2T6HY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Valve is struggling to meet demand for its <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a>. The trackpad-equipped gamepad <a href="https://www.pcgamer.com/hardware/controllers/valve-says-steam-controller-sold-out-faster-than-we-anticipated-but-previously-told-us-it-has-knobs-it-can-turn-to-get-more">quickly sold out</a> when it released in early May, and ever since there's been a reservation system similar to the one once used for Steam Deck. </p><p>And people have been using it, to such an extent that Valve has needed to upgrade the system to manage expectations regarding when you'll actually get one. "When we launched Steam Controller last month, we quickly saw that initial demand exceeded our expectations," Valve writes in <a href="https://store.steampowered.com/news/group/45479024/view/697641379212297809" target="_blank">an update</a>. </p><p>"We have no plans to stop making Steam Controller. But as we look at the current demand compared to how many we know we can make by the end of the year, we want to manage expectations as much as we can with regards to when folks can expect to receive their order."</p><p>To get to the point: if you're not in the queue already you probably won't get a Steam Controller until 2027. One of my colleagues based in the United States joined the queue today and their "estimated order availability" is 2027. It's the same for me in Australia.</p><p>According to Valve the reservation page now shows one of three estimated shipping windows, including "by September 2026", "by December 2026", and "in 2027", with more specific timing for the latter to come later. If you joined the queue already you can <a href="https://store.steampowered.com/hardware/steamcontroller">revisit the page</a> and it'll show you which of those three categories you fit in.</p><p>Still, I do wonder how many of those in the queue have decided they're <em>definitely </em>going to buy a Steam Controller. It's possible to reserve your place without placing a deposit, so there's really no harm in registering your interest even if you're not committed to making the purchase. When something is in such hot demand, it's probably smarter to make the reservation than to not, because what if you change your mind between now and next year? What if the Steam Machine proves so mindblowing that the Steam Controller becomes an essential piece of kit? </p><p>Whatever the case, once your ticket is called you have 72 hours to make the purchase before you lose your place in the queue. With Steam Machine and Steam Frame seemingly imminent, I'd be very surprised if we don't see the same situation with those.</p><div class="product"><a data-dimension112="4be7c8ea-2c7b-4913-93e5-39a9b98bb90a" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="4be7c8ea-2c7b-4913-93e5-39a9b98bb90a" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png ]]></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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png ]]></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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png ]]></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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png ]]></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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/HH5qHxdCSKxFpY2HXp2Q5K.png ]]></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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/vkFPQdKBSBXq7oQu3T6JKY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk in front of a Steam Deck.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk in front of a Steam Deck.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk in front of a Steam Deck.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vkFPQdKBSBXq7oQu3T6JKY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> is full of surprises. It screams when you drop it and it even sings songs if you program it to. You don't have to program it yourself, however, just drop a MIDI track into this software on Github and it'll do its best to to sing its little heart out.</p><p>It's called <a href="https://github.com/CrazyCritic89/SteamHapticsSinger" target="_blank">SteamHapticsSinger</a> and it's been recently published by CrazyCritic89. Though it's a fork of previous iterations of the same software originally created 10 years ago for the Steam Controller (2015), from <a href="https://gitlab.com/Pilatomic/SteamControllerSinger" target="_blank">Pila</a> and <a href="https://github.com/Roboron3042/SteamControllerSinger" target="_blank">Roboron3042</a>, this time with fixes and upgrades for the new Steam device.</p><p>Here's the application in action, using a MIDI file of Portal's 'Still Alive' included with the package.</p><iframe src="https://content.jwplatform.com/players/3HLoXsqj.html" id="3HLoXsqj" title="Steam Controller Songs" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>I also gave it a go with the Wii Shop Soundtrack, which was musical perfection in rumble form.</p><iframe src="https://content.jwplatform.com/players/eKXyKGDO.html" id="eKXyKGDO" title="Wii Song" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>And another absolute smash-hit.</p><iframe src="https://content.jwplatform.com/players/l2USK1C6.html" id="l2USK1C6" title="Astley" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>Alright, so it couldn't quite pull off a Rick Roll, nor match the musical genius of Rick Astley. But it's still hella impressive. </p><p>You can throw a bunch of MIDI files at the software and see what sounds good. You just drag and drop onto the exe file. You do need <a href="https://github.com/daynix/usbdk/releases" target="_blank">USBDK</a> to get the software working in the first instance, however, but it should also work with the <a href="https://www.pcgamer.com/steam-deck-review/" target="_blank">Steam Deck</a> and original <a href="https://www.pcgamer.com/hardware/controllers/steam-controller-re-review-a-fresh-look-at-valves-flawed-but-influential-10-year-old-controller/" target="_blank">Steam Controller</a> too. I'm just waiting for someone to lash 20 of these things together and start an orchestra. Though maybe once that reservation queue is a little lower, yeah?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ '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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png ]]></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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC.png ]]></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[ Steam Controllers to come back in stock with reprise of Steam Deck reservation system ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/steam-controllers-to-come-back-in-stock-with-reprise-of-steam-deck-reservation-system/</link>
                                                                            <description>
                            <![CDATA[ I shall have my revenge. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">KA2h2KumLg2gEGYFQhpXsC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/rJZF2ynFyLsqQj769NLLTY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 07 May 2026 18:32:04 +0000</pubDate>                                                                                                                                <updated>Fri, 08 May 2026 10:59:08 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ ted.litchfield@futurenet.com (Ted Litchfield) ]]></author>                    <dc:creator><![CDATA[ Ted Litchfield ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/8DyQVBz7FCynDY9QiJyH9D.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/rJZF2ynFyLsqQj769NLLTY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/rJZF2ynFyLsqQj769NLLTY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://store.steampowered.com/news/group/45479024/view/702141174212725149" target="_blank">Valve has announced</a> that the next wave of <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controllers</a> will only be purchasable through a reservation system similar to the one used early in the Steam Deck's life cycle. The announcement post does not specify when, exactly, this next round of controllers will make it into customers' hands, but reservations are set to open tomorrow, May 8, at 10 AM Pacific / 1 PM Central / 6 PM BST.</p><p>Valve will open a "reservation queue" at that time. "Once you reserve, your place in line will be saved," the company wrote in its <a href="https://store.steampowered.com/news/group/45479024/view/702141174212725149" target="_blank">announcement post</a>. "When we go back in stock, order emails will be sent in the same order that reservations were made."</p><p>Valve is at least as unhappy as we are to see how quickly Steam Controller orders <a href="https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/" target="_blank">started turning around on eBay</a>, so in addition to the queue, the company is bringing back familiar restrictions to who can reserve a Steam Controller order:</p><ul><li>Only one per customer.</li><li>You get three days to act on your reservation once the controller's back in stock.</li><li>If you already bought a Steam Controller, you can't make a reservation.</li><li>Your Steam account has to be "in good standing" and have made a purchase prior to April 27.</li></ul><p>Reservation priority is going to the US and Canada first, with initial reservation fulfillment—when you can actually place your order, basically— starting the week of May 11, while the UK, Europe, and Australia will see their reservations fulfilled "in the following weeks." </p><p>The first round of orders initially had three to five day shipping estimates, increasing to six to ten days as demand surged⁠—it's unclear what final delivery timetables will look like with round two.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XkGmNX"></div>                            </div>                            <script src="https://kwizly.com/embed/XkGmNX.js" async></script><p>This seems like a smart move after the <a href="https://www.pcgamer.com/hardware/controllers/the-steam-controller-sold-out-in-30-minutes-utterly-breaking-steam-in-the-process/" target="_blank">first wave of Steam Controllers sold out in just 30 minutes</a>, causing payment processing errors across the Steam Store in the process. This is basically the same system Valve used at the beginning of the Steam Deck's availability, and I gotta say I find it preferable to the law of the jungle. Even if you're waiting a long time regardless, at least it feels fair and there's a process to trust.</p><p>That Valve didn't opt for reservations in the first wave speaks to how much it was <a href="https://www.pcgamer.com/hardware/controllers/valve-says-steam-controller-sold-out-faster-than-we-anticipated-but-previously-told-us-it-has-knobs-it-can-turn-to-get-more/" target="_blank">genuinely caught off-guard</a> by the Steam Controller's popularity. If I had to hazard a guess, I would assume that Valve was planning on reservations for Steam Machines and open season for Steam Controllers. With its hardware launches now hindered by AI-related component shortages, consumer demand only has the Steam Controller to focus on.</p><div class="product"><a data-dimension112="dc9b8ba2-5956-40bb-9905-2abdcf61e454" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="dc9b8ba2-5956-40bb-9905-2abdcf61e454" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/BFyCvxhF5rvguJAynziMSY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/BFyCvxhF5rvguJAynziMSY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></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[ eBay resellers are turning a tidy profit on Steam Controllers ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/</link>
                                                                            <description>
                            <![CDATA[ Valve's new Steam Controller sold out quickly, creating an opportunity for tech scalpers. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Z7Xh7g6gCt8YKiLpNkFhUR</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/N5LjdCUeFRwxbkLri6SyKY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 04 May 2026 22:03:19 +0000</pubDate>                                                                                                                                <updated>Mon, 04 May 2026 23:03:11 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ tyler@pcgamer.com (Tyler Wilde) ]]></author>                    <dc:creator><![CDATA[ Tyler Wilde ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/rGvfSUkSBEPzBAVS3jRh9E.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/N5LjdCUeFRwxbkLri6SyKY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/N5LjdCUeFRwxbkLri6SyKY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It only took 30 minutes for Valve's first stock of <a href="https://www.pcgamer.com/hardware/controllers/the-steam-controller-sold-out-in-30-minutes-utterly-breaking-steam-in-the-process/">new Steam Controllers to sell out</a>. Some of us at PC Gamer managed to order them, while others were turned away by Steam errors and will have to wait for a restock.</p><p>For impatient people with money to burn, confirmed orders of the controllers <a href="https://www.ebay.com/sch/i.html?_nkw=steam+controller&_sacat=0&_from=R40&_sop=10" target="_blank">immediately hit eBay</a>, where they're successfully selling for as much as $300. That's a 200% markup on the $99 that Valve is offering them for. (One person is asking for $735,889.32, but unsurprisingly, no one is biting.)</p><p>Measures like order quantity limits have helped curb the reselling of in-demand tech, but there doesn't seem to be any way to completely prevent the unpopular behavior aside from having a stock surplus. It's too late for that in this case, though we might not have to wait too long for that $99 order button to light up again. Prior to today's launch, Valve said that it was prepared to ramp up production if needed.</p><p>"We do think we'll have a good amount of stock around the world for the launch," Valve designer Lawrence Yang <a href="https://www.pcgamer.com/hardware/game-pads/valve-is-bullish-on-global-steam-controller-availability-we-have-knobs-we-can-turn-to-try-to-get-things-to-people-faster/">told PC Gamer</a> in April. "So and then, at the factory, if we're like, 'Oh, we actually probably need to make more,' then we can turn that knob up and have them producing more."</p><p>The original Steam Controller from 2015 <a href="https://www.pcgamer.com/hardware/controllers/steam-controller-re-review-a-fresh-look-at-valves-flawed-but-influential-10-year-old-controller/">was a curiosity </a>that could never quite be described as popular, but "second time's the charm," Jacob wrote in his 83% <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/">review of the 2026 Steam Controller</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XkGmNX"></div>                            </div>                            <script src="https://kwizly.com/embed/XkGmNX.js" async></script><p>So it's a good controller, but the hunger for it may partially be down to anticipation for Valve's other new hardware, particularly its new Steam Machine, which has been delayed due to speculative AI investing <a href="https://www.pcgamer.com/hardware/memory/this-is-the-first-time-where-im-seeing-no-light-at-the-end-of-the-tunnel-how-the-memory-crisis-is-hitting-pc-builders/">driving up RAM prices</a>. </p><p>I've asked Valve for more info on when we can expect Steam Controllers to be back in stock, and will update this post when we learn more.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/8DyQVBz7FCynDY9QiJyH9D.png ]]></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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE.png ]]></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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/yAFomvQ2kRS39NDfXHRP7G.jpeg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/vgKouqgShXDP5GU3scWqsU-1280-80.jpg">
                                                            <media:credit><![CDATA[null]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Image of the DualSense controller from the front on in situ.]]></media:description>                                                            <media:text><![CDATA[Image of the DualSense controller from the front on in situ.]]></media:text>
                                <media:title type="plain"><![CDATA[Image of the DualSense controller from the front on in situ.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vgKouqgShXDP5GU3scWqsU-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Fancy the full PS5 controller experience on PC? Right now, it's not possible wirelessly. That's because you lose the <a href="https://www.pcgamer.com/ps5-dualsense-controller-on-pc/" target="_blank">Sony DualSense's</a> full haptic functionality over Bluetooth on the PC. Or at least you did until this homebrew solution turned up based on a Raspberry Pi Pico 2W acting as a dongle.</p><p><a href="https://www.reddit.com/r/pcmasterrace/comments/1sz3l97/psa_since_sony_wont_make_a_pc_dongle_for_the/" target="_blank">Spotted on Reddit</a>, this <a href="https://github.com/awalol/DS5Dongle" target="_blank">GitHub project</a> essentially allows you to connect a DualSense controller to your PC wirelessly, but keep your PC thinking it's a wired interface.</p><p>The problem, as I understand it, with the DualSense on PC over Bluetooth is that Windows' Bluetooth interface doesn't support Sony's proprietary version of Bluetooth that essentially repurposes the A2DP audio channels for the haptic data. And the GitHub project apparently fixes that.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xp4ZAX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xp4ZAX.js" async></script><p>One immediate concern regarding this kind of homebrew solution is latency. Enabling the haptics at the cost of significant added latency wouldn't be much of a win. But apparently, this isn't necessarily a concern.</p><p>This is all a little outside my wheelhouse, but in the Reddit comments the general consensus is that this Raspberry Pi-based solution should actually be better than a generic dongle because, as one commenter puts it, "the software can be tuned to only poll the controllers, and do it very predictably and precisely, just like a real PS5. Avoiding generic bluetooth and the Windows/Linux/Android bluetooth stack is actually a feature here."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2532px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="XWNjJi82FwforiWV9uVMbj" name="dualsense large.jpg" alt="DualSense triggers" src="https://cdn.mos.cms.futurecdn.net/XWNjJi82FwforiWV9uVMbj.jpg" mos="" align="middle" fullscreen="" width="2532" height="1424" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Enabling haptics over Bluetooth is what this is all about. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Sony)</span></figcaption></figure><p>There may be issues around the lack of support for interrupt transfers (which PC peripherals like mice have to ensure rapid and consistent response) causing inconsistent response. But then I haven't dug into the GitHub project fully—maybe it includes setting up the Pico 2W as a USB HID device using interrupt transfers.</p><p>Anywho, if enabling wireless DS5 gaming on a PC with full haptic functionality is your bag and you don't mind getting your hands dirty with some homebrew Raspberry Pi action, the GitHub project is surely worth a look.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ '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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY.png ]]></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[ Valve on the $99 Steam Controller: 'I do know price has gone up from where we originally wanted it to be' ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/valve-on-the-usd99-steam-controller-i-do-know-price-has-gone-up-from-where-we-originally-wanted-it-to-be/</link>
                                                                            <description>
                            <![CDATA[ Almost inevitably, Valve's new PC pad is pricier than we'd all hoped. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">XhnPH2aeDNDMEiQA5i9BZa</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/U2L63LGauar8GHYxqyyhNY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 27 Apr 2026 19:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ dave.james@futurenet.com (Dave James) ]]></author>                    <dc:creator><![CDATA[ Dave James ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/U2L63LGauar8GHYxqyyhNY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/U2L63LGauar8GHYxqyyhNY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It was always going to be like this. Pricing was conspicuous by its absence when we first got a taste of the new Valve hardware in Bellevue back in November last year, and as soon as all the RAMpocalypse stuff started we knew that whatever we wanted them to be, the <a href="https://www.pcgamer.com/hardware/gaming-pcs/steam-machine-specs-availability/" target="_blank">Steam Machine</a> and <a href="https://www.pcgamer.com/hardware/vr-hardware/hands-on-steam-frame-impressions/" target="_blank">Steam Frame</a> were always going to cost more than if they'd been launched in 2025.</p><p>But, without a ton of expensive RAM inside them, I was still hopeful that the <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review" target="_blank">Steam Controller</a> wouldn't be a victim of the PC pricing catastrophe that has been 2026 so far. When I first got my hands on the pad and started it up plumbed into my home PC, I was thinking 'yeah, at $60 I'd be happy, and I could probably go for $80.'</p><p>How naive I was. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm4jRO"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm4jRO.js" async></script><p>Though maybe not really<em> that</em> naive because it sounds like Valve itself was aiming for pricing more along those lines, too. But events outside of its control have contrived to make it more expensive than planned.</p><p>"I'm not the expert on this," Valve designer, Lawrence Yang tells me during a chat ahead of launch, "I do know price has gone up from where we originally wanted it to be.</p><p>"Also, you may have noticed in the price list that we sent you, there are some variants across regions. So depending on where a customer is going to buy it—because of imports and tariffs and duties, etc.—the price is going to vary depending on where you're purchasing it. That is something that has changed a bit over time, too."</p><p>With the Steam Controller now launching at $99 next week, with <a href="https://www.pcgamer.com/hardware/controllers/valves-new-steam-controller-goes-on-sale-next-week" target="_blank">add-to-basket availability kicking off on May 4</a>, the price has been one of the very few things we've not been so enamoured with about the new Valve pad. To be clear, that pricing is not punitive, and does mean it sits kinda in the middle of the premium and budget PC pads. But when you can get Hall effect sticks in a wireless pad with a charging dock that costs less than $30 you've got to <em>really</em> want the extras the Steam Controller offers.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/rJZF2ynFyLsqQj769NLLTY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CN8yNXAATyWufbSaBiHSPY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CQBcT69Jk2BETepZCCbcQY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>But it does offer a hell of a lot of PC functionality even if the pad itself isn't necessarily what you would call a premium offering. There isn't a controller out there that can offer what the Steam Controller does, and while maybe the majority of PC gamers aren't always going to need that level of utility in a pad, there are still going to be a lot of folk who want to take a look.</p><p>And in taking a look they might well fall down the rabbit hole of nested settings screens that really offer up all the power Valve's new pad has built inside it. I know I wouldn't have thought about using gyro control on my PC if it hadn't been for having a Steam Controller.</p><p>I'm also going to say I don't think that pricing is going to have any appreciable effect on the volume of Steam Controllers that fly off Valve's digital shelves. I'm expecting to see this thing topping Steam's Top Sellers list for a long time to come, especially if it is <a href="https://www.pcgamer.com/hardware/game-pads/valve-is-bullish-on-global-steam-controller-availability-we-have-knobs-we-can-turn-to-try-to-get-things-to-people-faster" target="_blank">able to turn those factory knobs it's promising </a>to keep stock rolling.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Valve is bullish on global Steam Controller availability: 'We have knobs we can turn to try to get things to people faster' ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/valve-is-bullish-on-global-steam-controller-availability-we-have-knobs-we-can-turn-to-try-to-get-things-to-people-faster/</link>
                                                                            <description>
                            <![CDATA[ "We'll have a good amount of stock around the world for the launch." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Rw7Gp4VNeFbKutcUJZbgEm</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vkFPQdKBSBXq7oQu3T6JKY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 27 Apr 2026 18:00:00 +0000</pubDate>                                                                                                                                <updated>Fri, 01 May 2026 14:09:54 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ dave.james@futurenet.com (Dave James) ]]></author>                    <dc:creator><![CDATA[ Dave James ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/vkFPQdKBSBXq7oQu3T6JKY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vkFPQdKBSBXq7oQu3T6JKY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>"So we have built up a good supply," Valve engineer Steve Cardinali tells me just ahead the launch of the <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review" target="_blank">Steam Controller</a>. Which is good news, because I've got a feeling this is a pad that's going to be super popular with PC gamers and I've got to believe there is going to be some serious pressure on stock levels around the world.</p><p>Because that's the thing here, this is a very different launch to the original Steam Deck, where availability was staggered globally. The Steam Controller is going on sale everywhere, all at once. </p><p>"We hope that a lot of people around the world really, really like it, and we sell a bunch of them," Lawrence Yang, a designer at Valve tells me. "That's our hope. We're optimistic. I'm optimistic."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm4jRO"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm4jRO.js" async></script><p>And having spent time with my own Steam Controller I can see why he is. There is so much to the Steam Controller, from its standard PC pad capabilities, to its haptics, to its gyro control, to its battery life, repairability, and of course, those trackpads. There's also the fact the delayed Steam Machine has been so hyped and folk are so desperate to get their hands on some new Valve hardware, I can see people wanting to even just get a piece of the new techie triumvirate of Steam Controller, Steam Machine, and Steam Frame as soon as they can.</p><p>"We have built up a good supply of this," Cardinali says when I ask about Valve's ability to maintain stock levels for the Controller. "But it's based on what we <em>anticipate</em> supply to be. And supply could be much larger than we anticipate. In which case our production has a finite limit on how much we can make. And we'll do our best to keep up with demand if it greatly exceeds our expectations."</p><p>"We have knobs," interjects Yang.</p><p>"We have knobs we can turn to try to get things to people faster," says Cardinali. "It's complicated and you know the mass production machine is a big machine with a lot of momentum. So, depending on how it goes for the first chunk of time, if we have high demand and it stays high demand, there are things we can do to help alleviate that down the road."</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ti9gYoetCsh9crRvpUzKD9.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/UX9PF39ymD5nCkcCj2ukNY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/UX9PF39ymD5nCkcCj2ukNY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/lSxebH_xYew" allowfullscreen></iframe></div></div><p>One of the many impressive features of Valve's new Steam Controller is just how straightforward the pad is when it comes to repairability. It's so easy to open up and get to the insides. That's great and all, but where are you going to get the necessary parts to make any repairs down the line? Well, Valve has told us that, like with the Steam Deck, it is working with iFixit to make it easy for you to bag replacement Steam Controller parts post-launch.</p><p>Jacob and I recently sat down with Valve's Steve Cardinali and Lawrence Yang to talk about the Steam Controller and, as repairability has been something that has seriously impressed us in our time with the new Valve pad, talk inevitably came around to that. In the process of his <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review" target="_blank">Steam Controller review</a>, Jacob took his pad down to its constituent parts many times, revealing just <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-teardown-simple-to-open-easy-to-fix" target="_blank">how simple it is to get at every part of the device</a>. </p><p><em>And it still works now. </em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm4jRO"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm4jRO.js" async></script><p>It's the sort of thing that feels very Valve, and feels like it's been tailor-made to ensure that there is a healthy modding community for the controller after launch. If someone wants to start making translucent back covers, I know at least a couple PC Gamer folk who would be first in line.</p><p>"We wanted to make sure it was easily accessible for our customers," Steve Cardinali, an engineer at Valve who worked on the Steam Controller, tells us. "We know our community, right?</p><p>"They want to take it open and if they want to swap something out, they can do that. If they want to make their buttons look different, that's fine with us. So yeah, it's easy to open. In this case, purposefully, there are no snaps in this. If you notice when you open the seven screws, it just comes right off."</p><iframe src="https://content.jwplatform.com/players/6pbye4pr.html" id="6pbye4pr" title="Steam Controller Teardown" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>Of course, it isn't just about customising your pad, it's about longevity, and that's why the battery is so accessible, too. "We don't anticipate it being a problem for anybody," says Cardinali, "if they wanted to swap it out for a reason, we intentionally designed it to be easily serviceable. You can just swap it out. You don't need to unplug a connector or anything. Just put it in."</p><p>Inevitably, though, the question of where a user is going to be able to get spare parts from comes up in our chat. "We will be making replacement parts available through iFixit," Valve designer Lawrence Yang tells us. "Just like last time."</p><p>Though it's important to note this partnership is not going to be in play straight away when the pads go on sale in May: "It won't be at launch," says Yang, "but after launch they will be made available."</p><p>Which isn't a great surprise given that the Steam Controller is going into a worldwide release, and no matter how good the supply is, there is a real healthy appetite for the first part of the new Valve hardware triumvirate. I would expect all the parts around right now are needed to build new controller pads rather than build up inventories of replacement components.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE.png ]]></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 (2026) review ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/</link>
                                                                            <description>
                            <![CDATA[ Second time's the charm. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">B4p3aPJNV2Ckc47kSywXKQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/aUXA7Xr75b7Xuvt2S6eeKY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 27 Apr 2026 17:00:00 +0000</pubDate>                                                                                                                                <updated>Wed, 29 Apr 2026 11:16:21 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/aUXA7Xr75b7Xuvt2S6eeKY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/aUXA7Xr75b7Xuvt2S6eeKY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The Steam Controller is the first of three new bits of hardware from Valve this year. It's designed to let you take control of your PC from the comfort of your couch and without a mouse, which is sure to appeal to a certain type of gamer.<br><br>The second-generation Steam Controller includes everything one might expect from a gamepad, including two thumbsticks and the usual array of buttons. But it also offers input parity with the <a href="https://www.pcgamer.com/steam-deck-oled-review/" target="_blank">Steam Deck</a>, Valve's popular handheld gaming PC, and in doing so, delivers a few extra tricks. Beneath its symmetrical sticks are two trackpads, which you can use to glide around the desktop or look around in-game. It also includes a 6-axis gyro, which is shockingly an even better way to mimic a mouse. I'm a gyro control convert.<br><br>The Steam Controller does have to be quite convincing to justify its price tag, however. It costs $99/€99/£85/$149 AUD, which puts it a league above budget pads with similar specs and fewer inputs. You're paying for convenience here. To use your PC with ease while lounging or lazing.<br><br>If you prefer to game bolt upright and laser-focused on your kill/death ratio, you'll want to look elsewhere. This isn't a competitive pad. It's a comfy pad for comfy gamers—and if that sounds like you, read on.</p><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>✅ You're building or buying a living room PC: </strong>The Steam Controller's trackpads and gyro controls are useful for navigating menus, websites, or the desktop from a distance.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Don't buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>❌ You main another game launcher: </strong>The Steam Controller, true to its name, requires Steam to function and may require more set-up for non-Steam games.</p></div></div></div></div><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><style>    @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');    @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');        /* Reset & Base */    #fv-chart-1777460343030-gfokqvjk7 *, #fv-chart-1777460343030-gfokqvjk7 *:before, #fv-chart-1777460343030-gfokqvjk7 *:after, #fv-chart-1777460343030-gfokqvjk7-slideshow *, #fv-chart-1777460343030-gfokqvjk7-slideshow *:before, #fv-chart-1777460343030-gfokqvjk7-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777460343030-gfokqvjk7, #fv-chart-1777460343030-gfokqvjk7-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777460343030-gfokqvjk7 {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-inner-wrapper {        color: #1F2937 !important; background-color: #ededed !important;        padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;        margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;        overflow: hidden !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777460343030-gfokqvjk7.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777460343030-gfokqvjk7.fv-full-bleed .fv-inner-wrapper {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-inner-wrapper.fv-is-shop-the-look {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }            /* Slideshow Styles */    #fv-chart-1777460343030-gfokqvjk7-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-slideshow-nav-row {        position: relative !important;        display: flex !important;        justify-content: space-between !important;        align-items: center !important;        padding: 0 0 16px 0 !important;        width: 100% !important;        z-index: 20 !important;    }    #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-nav-btn {        background-color: var(--riv-primary) !important;        color: #ffffff !important;        border: none !important;        border-radius: 4px !important;        padding: 8px 16px !important;        font-size: 14px !important;        font-weight: 700 !important;        cursor: pointer !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 6px !important;        transition: opacity 0.2s, background-color 0.2s !important;        height: 36px !important;        text-transform: none !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;    }        #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-nav-btn.disabled {        background-color: #E5E7EB !important;        color: #9CA3AF !important;        cursor: default !important;        pointer-events: none !important;        box-shadow: none !important;    }    #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-slide-counter {        font-family: 'Poppins', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        color: #374151 !important;        text-align: center !important;        min-width: 40px !important;        background-color: rgba(255,255,255,0.8) !important;        padding: 2px 8px !important;        border-radius: 10px !important;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-slideshow-select {        position: absolute !important;        top: 10px !important;        right: 10px !important;        z-index: 20 !important;        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background-color: white !important;        border: 1px solid #d1d5db !important;        color: #1F2937 !important;        font-family: 'Open Sans', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        padding: 6px 32px 6px 12px !important;        border-radius: 4px !important;        cursor: pointer !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;        background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;        background-position: right 0.5rem center !important;        background-repeat: no-repeat !important;        background-size: 1.5em 1.5em !important;    }    #fv-chart-1777460343030-gfokqvjk7-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777460343030-gfokqvjk7 .fv-chart-title {         font-weight: bold !important;         text-align: center !important;         margin-bottom: 0.5rem !important;         color: var(--riv-primary) !important;         font-size: 20px !important;         line-height: 1.2 !important;         font-family: 'Open Sans', sans-serif !important;         text-transform: none !important;         white-space: normal !important;         overflow-wrap: break-word !important;        padding: 0 20px !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-chart-subhead {         font-size: 18px !important;         font-weight: 500 !important;         text-align: center !important;         margin-bottom: 2rem !important;         color: #374151 !important;         line-height: 1.7 !important;         font-family: 'Open Sans', sans-serif !important;         display: block !important;         text-transform: none !important;        padding: 0 20px !important;    }    #fv-chart-1777460343030-gfokqvjk7 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }    /* Versus Chart */    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }    @keyframes fv-grow-max-width {        from { max-width: 0; }        to { max-width: 100%; }    }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }    #fv-chart-1777460343030-gfokqvjk7 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460343030-gfokqvjk7 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777460343030-gfokqvjk7 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }    #fv-chart-1777460343030-gfokqvjk7 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }    /* Image Comparison Styles */    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777460343030-gfokqvjk7.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-wrapper {        position: relative !important;        width: 100% !important;        overflow: hidden !important;        border-radius: 0 !important;        background-color: #000 !important;        touch-action: pan-y !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-inner {        position: relative !important;        width: 100% !important;        height: 100% !important;        display: block !important;        transform-origin: center center !important;        transition: transform 0.1s ease-out !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-bg {        display: block !important;        width: 100% !important;        height: auto !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-fg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        width: 100% !important;        height: 100% !important;        object-fit: cover !important;        clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-slider {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 32px !important;        transform: translateX(-50%) !important;        cursor: ew-resize !important;        z-index: 10 !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-slider-line {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 4px !important;        background-color: white !important;        transform: translateX(-50%) !important;        box-shadow: 0 0 10px rgba(0,0,0,0.5) !important;        pointer-events: none !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-handle {        position: absolute !important;        top: 50% !important;        left: 50% !important;        transform: translate(-50%, -50%) !important;        width: 32px !important;        height: 32px !important;        background-color: white !important;        border-radius: 50% !important;        box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 4px !important;        pointer-events: none !important;        z-index: 11 !important;        overflow: hidden !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-arrow-left {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-right: 4px solid #4b5563 !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-arrow-right {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-left: 4px solid #4b5563 !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-label {        position: absolute !important;        top: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        padding: 0.25rem 0.75rem !important;        border-radius: 0.25rem !important;        font-size: 0.875rem !important;        font-weight: 500 !important;        pointer-events: none !important;        backdrop-filter: blur(4px) !important;        z-index: 5 !important;        transition: right 0.3s ease, opacity 0.2s ease !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-expand-btn,    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-close-btn {        position: absolute !important;        bottom: 1rem !important;        right: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        border: none !important;        border-radius: 0.25rem !important;        padding: 0.5rem !important;        cursor: pointer !important;        z-index: 20 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        backdrop-filter: blur(4px) !important;        transition: background-color 0.2s !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-expand-btn:hover,    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-wrapper.fv-image-compare-fullscreen {        position: fixed !important;        top: 0 !important;        left: 0 !important;        right: 0 !important;        bottom: 0 !important;        width: 100% !important;        height: 100% !important;        z-index: 999999 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        background-color: rgba(0, 0, 0, 0.9) !important;        margin: 0 !important;        touch-action: none !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner {        width: 100% !important;        height: 100% !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        cursor: grab !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg {        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777460343030-gfokqvjk7 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-logo {         display: block !important;         margin: 0 auto !important;         width: 120px !important;         min-width: 120px !important;        max-width: 120px !important;         height: auto !important;         object-fit: contain !important;         flex-shrink: 0 !important;    }    /* Display Mode Controls */    #fv-chart-1777460343030-gfokqvjk7 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-dropdown-title {        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background: transparent !important;        border: none !important;        font-size: 18px !important;        font-weight: 600 !important;        color: var(--riv-primary) !important;        padding-right: 28px !important;        padding-left: 10px !important;        cursor: pointer !important;        text-align: center !important;        text-align-last: center !important;        width: auto !important;        max-width: 100% !important;        font-family: 'Open Sans', sans-serif !important;        line-height: 1.3 !important;        margin: 0 !important;        text-overflow: ellipsis !important;        overflow: hidden !important;        white-space: nowrap !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777460343030-gfokqvjk7 .fv-dropdown-chevron {        position: absolute !important;        right: 0 !important;        top: 50% !important;        transform: translateY(-50%) !important;        pointer-events: none !important;        color: var(--riv-primary) !important;        display: flex !important;        align-items: center !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-carousel-nav-btn {        background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;        cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777460343030-gfokqvjk7 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777460343030-gfokqvjk7 .fv-multi-value-legend {         display: flex !important;         justify-content: center !important;         flex-wrap: wrap !important;         gap: 12px 24px !important;         margin-bottom: 1.5rem !important;         padding: 0 !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777460343030-gfokqvjk7 .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-benchmark-title {         font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;        text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;        font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;        text-transform: none !important;        white-space: normal !important;        overflow-wrap: break-word !important;         word-wrap: break-word !important;        max-width: 100% !important;    }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-row, #fv-chart-1777460343030-gfokqvjk7 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }     #fv-chart-1777460343030-gfokqvjk7 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777460343030-gfokqvjk7 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777460343030-gfokqvjk7 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777460343030-gfokqvjk7 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777460343030-gfokqvjk7 .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-y-axis-title {        font-size: 15px !important;        color: #374151 !important;        line-height: 1.5 !important;        text-align: left !important;        padding-left: 5.83% !important; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777460343030-gfokqvjk7.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777460343030-gfokqvjk7.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777460343030-gfokqvjk7 .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777460343030-gfokqvjk7 .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777460343030-gfokqvjk7 .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777460343030-gfokqvjk7 .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777460343030-gfokqvjk7.mobile-view #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777460343030-gfokqvjk7.mobile-view #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777460343030-gfokqvjk7.mobile-view #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777460343030-gfokqvjk7 .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-pie-container,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-bar-row,    #fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-stacked-product,    #fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-grouped-bar-product,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-bar-row,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-stacked-product,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-bar-label,    #fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-grouped-product-title,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-bar-label,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-grouped-product-title {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-bar-container,    #fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-bar-cluster,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-bar-container,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-x-axis-label-space,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-benchmark-title,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-dropdown-title,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-chart-title,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-chart-subhead,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-header,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-vs,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-select-container,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-versus-select,    #fv-chart-1777460343030-gfokqvjk7.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777460343030-gfokqvjk7.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777460343030-gfokqvjk7.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777460343030-gfokqvjk7 .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-bar-row,        #fv-chart-1777460343030-gfokqvjk7 .fv-stacked-product,        #fv-chart-1777460343030-gfokqvjk7 .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-bar-label:not(.fv-grouped-product-title) {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-bar-label,        #fv-chart-1777460343030-gfokqvjk7 .fv-grouped-product-title {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-bar-container,        #fv-chart-1777460343030-gfokqvjk7 .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777460343030-gfokqvjk7 .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777460343030-gfokqvjk7 .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777460343030-gfokqvjk7.fv-contains-line-chart .fv-footer-content {            margin-left: -1rem !important;            margin-right: -1rem !important;        }    }  </style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Overall Chart Title",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T10:59:03.031Z",  "citation": "We have scored the Steam Controller out of five in seven distinct categories in order to break down both its strengths and weaknesses.",  "keywords": [    "Steam Controller (2026)",    "Ergonomics",    "Performance",    "Internals",    "Aesthetics",    "Software",    "Battery",    "Value",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Ergonomics",      "value": 4,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Performance",      "value": 3,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Internals",      "value": 4.5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Aesthetics",      "value": 4,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Software",      "value": 3.5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Battery",      "value": 5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Value",      "value": 3,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777460343030-gfokqvjk7" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper fv-no-header  ">                                                <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777460343030-gfokqvjk7-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="We have scored the Steam Controller out of five in seven distinct categories in order to break down both its strengths and weaknesses." data-bar-xaxis-tick-increment="1" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Steam Controller (2026) - Ergonomics: 4 ">                    <div class="fv-bar-label">Ergonomics</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 80%; background-color: #E33235;" data-target-width="80">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">4</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Steam Controller (2026) - Performance: 3 ">                    <div class="fv-bar-label">Performance</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 60%; background-color: #E33235;" data-target-width="60">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">3</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Steam Controller (2026) - Internals: 4.5 ">                    <div class="fv-bar-label">Internals</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 90%; background-color: #E33235;" data-target-width="90">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">4.5</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Steam Controller (2026) - Aesthetics: 4 ">                    <div class="fv-bar-label">Aesthetics</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 80%; background-color: #E33235;" data-target-width="80">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">4</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Steam Controller (2026) - Software: 3.5 ">                    <div class="fv-bar-label">Software</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 70%; background-color: #E33235;" data-target-width="70">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">3.5</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Steam Controller (2026) - Battery: 5 ">                    <div class="fv-bar-label">Battery</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 100%; background-color: #E33235;" data-target-width="100">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">5</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Steam Controller (2026) - Value: 3 ">                    <div class="fv-bar-label">Value</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 60%; background-color: #E33235;" data-target-width="60">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">3</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Ergonomics ()</th><th>Performance ()</th><th>Internals ()</th><th>Aesthetics ()</th><th>Software ()</th><th>Battery ()</th><th>Value ()</th></tr></thead>            <tbody><tr><td>Steam Controller (2026)</td><td>4</td><td>3</td><td>4.5</td><td>4</td><td>3.5</td><td>5</td><td>3</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: block;">                <div class="rv-chart-caption">We have scored the Steam Controller out of five in seven distinct categories in order to break down both its strengths and weaknesses.</div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </div>            </div>    </div>        <script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        // Responsive mobile view handling            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        // Legend interactions            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        // Versus Chart Logic            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            // Carousel & Dropdown Logic            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        // Text Elements            var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }            // Image Comparison Logic            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                // Zoom state                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    // Max pan depends on how much the image is scaled beyond the wrapper                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true; // Prevent click after pinch                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                // Expand/Close Logic                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            // e.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        // e.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            // Shop The Look Hotspots            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1777460343030-gfokqvjk7', false); });      } else {        initialize('fv-chart-1777460343030-gfokqvjk7', false);      }    })();      </script></div><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/SoNANE4mHlI" allowfullscreen></iframe></div></div><h2 class="article-body__section" id="section-steam-controller-features"><span>Steam Controller - Features</span></h2><div ><table><tbody><tr><td class="firstcol " ><p><strong>Layout</strong></p></td><td  ><p>Symmetrical</p></td></tr><tr><td class="firstcol " ><p><strong>Thumbsticks</strong></p></td><td  ><p>TMR (Tunnel magnetoresistance) with capacitive touch</p></td></tr><tr><td class="firstcol " ><p><strong>Face buttons</strong></p></td><td  ><p>A, B, X, Y, View, Menu, Steam, QAM (Quick Access Menu)</p></td></tr><tr><td class="firstcol " ><p><strong>Rear buttons</strong></p></td><td  ><p>4x on grip (R4, R5, L4, L5)</p></td></tr><tr><td class="firstcol " ><p><strong>Trackpads</strong></p></td><td  ><p>2x 34.5 mm square</p></td></tr><tr><td class="firstcol " ><p><strong>Rumble</strong></p></td><td  ><p>4x haptic motors (2x trackpads, 2x grips)</p></td></tr><tr><td class="firstcol " ><p><strong>Gyro</strong></p></td><td  ><p>6-axis IMU (enabled via capacitive touch in L/R grips with Grip Sense)</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>2.4 GHz (via included Puck), Bluetooth (minimum 4.2, 5.0 or higher recommended), USB Type-C to Type-A</p></td></tr><tr><td class="firstcol " ><p><strong>Battery</strong></p></td><td  ><p>35+ hours (charged via USB-C or Puck), 8.39 Wh Li-ion</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>4 ms (250 Hz)</p></td></tr><tr><td class="firstcol " ><p><strong>Input latency</strong></p></td><td  ><p>~8 ms end-to-end</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>292 grams (259 grams as measured)</p></td></tr><tr><td class="firstcol " ><p><strong>Shortcuts</strong></p></td><td  ><p>Steam+Y (turn off), R1+A+Steam (hold Steam (pairing in current )</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$99/€99/£85/$149 AUD</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-steam-controller-ergonomics"><span>Steam Controller - Ergonomics</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="U2L63LGauar8GHYxqyyhNY" name="IMG_4226_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/U2L63LGauar8GHYxqyyhNY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Good news, despite its larger size, the Steam Controller rests comfortably in my hands. In the name of science, I also asked my partner with smaller hands whether she found it to be easy to reach the thumbsticks, which are set close to the middle of the controller, and she had no problems whatsoever. Same goes for the trackpads, which she and I can both reach just fine.</p><p>You have to move your palm ever so slightly away from the controller to shift between the thumbsticks and trackpads, and because you might use the left thumbstick and right trackpad at the same time, you might find your right hand is moving around a lot more than your left. Though it's all fairly accessible with minimal movement. The trackpads are recessed just a touch to make using them feel a little more natural.</p><p>One of the Steam Controller's better features are the rear grip buttons. These are placed very low down on the inside of both grips, landing right beneath my fingers. As someone that tends to ignore rear paddles on controllers, these feel genuinely useful and with a satisfying click. Though, the lower set, R5 and L5, are fairly easy to press by accident.</p><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><style>    @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');    @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');        /* Reset & Base */    #fv-chart-1777458159149-5ellnb36v *, #fv-chart-1777458159149-5ellnb36v *:before, #fv-chart-1777458159149-5ellnb36v *:after, #fv-chart-1777458159149-5ellnb36v-slideshow *, #fv-chart-1777458159149-5ellnb36v-slideshow *:before, #fv-chart-1777458159149-5ellnb36v-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777458159149-5ellnb36v, #fv-chart-1777458159149-5ellnb36v-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777458159149-5ellnb36v {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777458159149-5ellnb36v .fv-inner-wrapper {        color: #1F2937 !important; background-color: #ededed !important;        padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;        margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;        overflow: hidden !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777458159149-5ellnb36v.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777458159149-5ellnb36v.fv-full-bleed .fv-inner-wrapper {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-inner-wrapper.fv-is-shop-the-look {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }            /* Slideshow Styles */    #fv-chart-1777458159149-5ellnb36v-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777458159149-5ellnb36v-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777458159149-5ellnb36v-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777458159149-5ellnb36v-slideshow .fv-slideshow-nav-row {        position: relative !important;        display: flex !important;        justify-content: space-between !important;        align-items: center !important;        padding: 0 0 16px 0 !important;        width: 100% !important;        z-index: 20 !important;    }    #fv-chart-1777458159149-5ellnb36v-slideshow .fv-nav-btn {        background-color: var(--riv-primary) !important;        color: #ffffff !important;        border: none !important;        border-radius: 4px !important;        padding: 8px 16px !important;        font-size: 14px !important;        font-weight: 700 !important;        cursor: pointer !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 6px !important;        transition: opacity 0.2s, background-color 0.2s !important;        height: 36px !important;        text-transform: none !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;    }        #fv-chart-1777458159149-5ellnb36v-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777458159149-5ellnb36v-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777458159149-5ellnb36v-slideshow .fv-nav-btn.disabled {        background-color: #E5E7EB !important;        color: #9CA3AF !important;        cursor: default !important;        pointer-events: none !important;        box-shadow: none !important;    }    #fv-chart-1777458159149-5ellnb36v-slideshow .fv-slide-counter {        font-family: 'Poppins', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        color: #374151 !important;        text-align: center !important;        min-width: 40px !important;        background-color: rgba(255,255,255,0.8) !important;        padding: 2px 8px !important;        border-radius: 10px !important;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777458159149-5ellnb36v-slideshow .fv-slideshow-select {        position: absolute !important;        top: 10px !important;        right: 10px !important;        z-index: 20 !important;        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background-color: white !important;        border: 1px solid #d1d5db !important;        color: #1F2937 !important;        font-family: 'Open Sans', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        padding: 6px 32px 6px 12px !important;        border-radius: 4px !important;        cursor: pointer !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;        background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;        background-position: right 0.5rem center !important;        background-repeat: no-repeat !important;        background-size: 1.5em 1.5em !important;    }    #fv-chart-1777458159149-5ellnb36v-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777458159149-5ellnb36v .fv-chart-title {         font-weight: bold !important;         text-align: center !important;         margin-bottom: 0.5rem !important;         color: var(--riv-primary) !important;         font-size: 20px !important;         line-height: 1.2 !important;         font-family: 'Open Sans', sans-serif !important;         text-transform: none !important;         white-space: normal !important;         overflow-wrap: break-word !important;        padding: 0 20px !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-chart-subhead {         font-size: 18px !important;         font-weight: 500 !important;         text-align: center !important;         margin-bottom: 2rem !important;         color: #374151 !important;         line-height: 1.7 !important;         font-family: 'Open Sans', sans-serif !important;         display: block !important;         text-transform: none !important;        padding: 0 20px !important;    }    #fv-chart-1777458159149-5ellnb36v .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }    /* Versus Chart */    #fv-chart-1777458159149-5ellnb36v .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }    @keyframes fv-grow-max-width {        from { max-width: 0; }        to { max-width: 100%; }    }    #fv-chart-1777458159149-5ellnb36v .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }    #fv-chart-1777458159149-5ellnb36v .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777458159149-5ellnb36v .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777458159149-5ellnb36v .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }    #fv-chart-1777458159149-5ellnb36v .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }    /* Image Comparison Styles */    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777458159149-5ellnb36v.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-wrapper {        position: relative !important;        width: 100% !important;        overflow: hidden !important;        border-radius: 0 !important;        background-color: #000 !important;        touch-action: pan-y !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-inner {        position: relative !important;        width: 100% !important;        height: 100% !important;        display: block !important;        transform-origin: center center !important;        transition: transform 0.1s ease-out !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-bg {        display: block !important;        width: 100% !important;        height: auto !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-fg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        width: 100% !important;        height: 100% !important;        object-fit: cover !important;        clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-slider {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 32px !important;        transform: translateX(-50%) !important;        cursor: ew-resize !important;        z-index: 10 !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-slider-line {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 4px !important;        background-color: white !important;        transform: translateX(-50%) !important;        box-shadow: 0 0 10px rgba(0,0,0,0.5) !important;        pointer-events: none !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-handle {        position: absolute !important;        top: 50% !important;        left: 50% !important;        transform: translate(-50%, -50%) !important;        width: 32px !important;        height: 32px !important;        background-color: white !important;        border-radius: 50% !important;        box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 4px !important;        pointer-events: none !important;        z-index: 11 !important;        overflow: hidden !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-arrow-left {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-right: 4px solid #4b5563 !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-arrow-right {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-left: 4px solid #4b5563 !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-label {        position: absolute !important;        top: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        padding: 0.25rem 0.75rem !important;        border-radius: 0.25rem !important;        font-size: 0.875rem !important;        font-weight: 500 !important;        pointer-events: none !important;        backdrop-filter: blur(4px) !important;        z-index: 5 !important;        transition: right 0.3s ease, opacity 0.2s ease !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777458159149-5ellnb36v .fv-image-compare-expand-btn,    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-close-btn {        position: absolute !important;        bottom: 1rem !important;        right: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        border: none !important;        border-radius: 0.25rem !important;        padding: 0.5rem !important;        cursor: pointer !important;        z-index: 20 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        backdrop-filter: blur(4px) !important;        transition: background-color 0.2s !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-expand-btn:hover,    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-wrapper.fv-image-compare-fullscreen {        position: fixed !important;        top: 0 !important;        left: 0 !important;        right: 0 !important;        bottom: 0 !important;        width: 100% !important;        height: 100% !important;        z-index: 999999 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        background-color: rgba(0, 0, 0, 0.9) !important;        margin: 0 !important;        touch-action: none !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner {        width: 100% !important;        height: 100% !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        cursor: grab !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg {        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777458159149-5ellnb36v .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777458159149-5ellnb36v .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777458159149-5ellnb36v .fv-logo {         display: block !important;         margin: 0 auto !important;         width: 120px !important;         min-width: 120px !important;        max-width: 120px !important;         height: auto !important;         object-fit: contain !important;         flex-shrink: 0 !important;    }    /* Display Mode Controls */    #fv-chart-1777458159149-5ellnb36v .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777458159149-5ellnb36v .fv-dropdown-title {        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background: transparent !important;        border: none !important;        font-size: 18px !important;        font-weight: 600 !important;        color: var(--riv-primary) !important;        padding-right: 28px !important;        padding-left: 10px !important;        cursor: pointer !important;        text-align: center !important;        text-align-last: center !important;        width: auto !important;        max-width: 100% !important;        font-family: 'Open Sans', sans-serif !important;        line-height: 1.3 !important;        margin: 0 !important;        text-overflow: ellipsis !important;        overflow: hidden !important;        white-space: nowrap !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777458159149-5ellnb36v .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777458159149-5ellnb36v .fv-dropdown-chevron {        position: absolute !important;        right: 0 !important;        top: 50% !important;        transform: translateY(-50%) !important;        pointer-events: none !important;        color: var(--riv-primary) !important;        display: flex !important;        align-items: center !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }    #fv-chart-1777458159149-5ellnb36v .fv-carousel-nav-btn {        background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;        cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777458159149-5ellnb36v .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777458159149-5ellnb36v .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }    #fv-chart-1777458159149-5ellnb36v .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777458159149-5ellnb36v .fv-multi-value-legend {         display: flex !important;         justify-content: center !important;         flex-wrap: wrap !important;         gap: 12px 24px !important;         margin-bottom: 1.5rem !important;         padding: 0 !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777458159149-5ellnb36v .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777458159149-5ellnb36v .fv-benchmark-title {         font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;        text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;        font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;        text-transform: none !important;        white-space: normal !important;        overflow-wrap: break-word !important;         word-wrap: break-word !important;        max-width: 100% !important;    }    #fv-chart-1777458159149-5ellnb36v .fv-bar-row, #fv-chart-1777458159149-5ellnb36v .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }     #fv-chart-1777458159149-5ellnb36v .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777458159149-5ellnb36v .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777458159149-5ellnb36v .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777458159149-5ellnb36v .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777458159149-5ellnb36v .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777458159149-5ellnb36v .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777458159149-5ellnb36v .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777458159149-5ellnb36v .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777458159149-5ellnb36v .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777458159149-5ellnb36v .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777458159149-5ellnb36v .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777458159149-5ellnb36v .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }    #fv-chart-1777458159149-5ellnb36v .fv-y-axis-title {        font-size: 15px !important;        color: #374151 !important;        line-height: 1.5 !important;        text-align: left !important;        padding-left: 5.83% !important; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777458159149-5ellnb36v .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777458159149-5ellnb36v.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777458159149-5ellnb36v.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777458159149-5ellnb36v .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777458159149-5ellnb36v .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777458159149-5ellnb36v .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777458159149-5ellnb36v .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777458159149-5ellnb36v .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777458159149-5ellnb36v.mobile-view #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777458159149-5ellnb36v.mobile-view #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777458159149-5ellnb36v.mobile-view #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777458159149-5ellnb36v .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777458159149-5ellnb36v.mobile-view .fv-pie-container,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-bar-row,    #fv-chart-1777458159149-5ellnb36v.mobile-view .fv-stacked-product,    #fv-chart-1777458159149-5ellnb36v.mobile-view .fv-grouped-bar-product,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-bar-row,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-stacked-product,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-bar-label,    #fv-chart-1777458159149-5ellnb36v.mobile-view .fv-grouped-product-title,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-bar-label,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-grouped-product-title {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-bar-container,    #fv-chart-1777458159149-5ellnb36v.mobile-view .fv-bar-cluster,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-bar-container,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-x-axis-label-space,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-benchmark-title,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-dropdown-title,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-chart-title,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-chart-subhead,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-header,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-vs,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-select-container,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777458159149-5ellnb36v.mobile-view .fv-versus-select,    #fv-chart-1777458159149-5ellnb36v.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777458159149-5ellnb36v.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777458159149-5ellnb36v.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777458159149-5ellnb36v .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777458159149-5ellnb36v .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-bar-row,        #fv-chart-1777458159149-5ellnb36v .fv-stacked-product,        #fv-chart-1777458159149-5ellnb36v .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777458159149-5ellnb36v .fv-bar-label:not(.fv-grouped-product-title) {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-bar-label,        #fv-chart-1777458159149-5ellnb36v .fv-grouped-product-title {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-bar-container,        #fv-chart-1777458159149-5ellnb36v .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777458159149-5ellnb36v .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777458159149-5ellnb36v .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777458159149-5ellnb36v .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777458159149-5ellnb36v .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777458159149-5ellnb36v .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777458159149-5ellnb36v .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777458159149-5ellnb36v .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777458159149-5ellnb36v .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777458159149-5ellnb36v.fv-contains-line-chart .fv-footer-content {            margin-left: -1rem !important;            margin-right: -1rem !important;        }    }  </style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "It's a lot comfier than it looks, that's all I'll say",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T10:22:39.150Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Steam Controller (2026)",    "Ergonomics",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Score – Ergonomics",      "value": 4,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777458159149-5ellnb36v" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper   ">            <h3 class="fv-chart-title">It's a lot comfier than it looks, that's all I'll say</h3>                                    <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777458159149-5ellnb36v-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Score - Ergonomics: 4 ">                    <div class="fv-bar-label">Ergonomics</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 80%; background-color: #E33235;" data-target-width="80">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">4</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Ergonomics ()</th></tr></thead>            <tbody><tr><td>Score</td><td>4</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </div>            </div>    </div>        <script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        // Responsive mobile view handling            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        // Legend interactions            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        // Versus Chart Logic            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            // Carousel & Dropdown Logic            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        // Text Elements            var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }            // Image Comparison Logic            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                // Zoom state                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    // Max pan depends on how much the image is scaled beyond the wrapper                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true; // Prevent click after pinch                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                // Expand/Close Logic                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            // e.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        // e.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            // Shop The Look Hotspots            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1777458159149-5ellnb36v', false); });      } else {        initialize('fv-chart-1777458159149-5ellnb36v', false);      }    })();      </script></div><h2 class="article-body__section" id="section-steam-controller-performance"><span>Steam Controller - Performance</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="KCHBXz96tngYsTs9sZLZHY" name="IMG_4253_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/KCHBXz96tngYsTs9sZLZHY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Steam Controller feels agile enough in most games. Though you can tell it's destined for the couch and not contests.</p><p>The face buttons are all run-of-the-mill membrane. They feel consistent, if nothing else. The same can be said of the D-pad, which is stiff but feels stable for it, and the triggers, which use Hall effect sensors, but are nothing special. Though helped along by decent haptics in the grips and trackpads, if you're after tactile feedback for competitive play, I'd look elsewhere. The Steam Controller isn't going to deliver much of that. That's also reflected in its 250 Hz polling rate—many pads today will bump that up to 1,000 Hz.</p><p>Instead, the Steam Controller has more to offer the horizontal, or at least lazily reclined, gamer. </p><p>The Steam Deck has already proven how effective trackpads can be for imitating the movement of a mouse. I reckon they're around 70% of the way there, something like that. I won't pretend like that final 30% doesn't matter a <em>whole</em> lot, but in some strategy or RPG games, or when browsing your desktop or the interwebs, 70% is all you need. The Steam Controller works well for those.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zZwRjNRUQ65aXkcjWiVtEY" name="IMG_4257_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/zZwRjNRUQ65aXkcjWiVtEY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I can also see why that <a href="https://www.pcgamer.com/hardware/controllers/how-gyro-support-was-added-into-the-new-steam-controller-is-a-typical-valve-story/" target="_blank">one engineer at Valve loves gyro controls</a>. I'm starting to finally get it with the Steam Controller. I find I have a higher accuracy across the desktop with gyro controls compared to the trackpads and it's a big improvement over attempting to use a keyboard and mouse while lying down. Don't even get me started on those weird couch tables (though Hope did <a href="https://www.pcgamer.com/hardware/gaming-chairs/couchmaster-cycon3-review/" target="_blank">enjoy her time with one</a>).</p><p>Moreover, the trackpads work great in tandem with the gyro controls. The gyro is by default only enabled when you are touch the trackpad or thumbstick, meaning you're naturally placed to blend a few input methods. You can whip across the screen with the gyro then switch seamlessly to the trackpad for more controlled movements. Then back over to the other trackpad to scroll through the Steam Sale.</p><p>While my experience in some games saw me reaching for the thumbsticks again, anything accepting of standard mouse movement feels the benefit of dual-wielding these two unusual inputs. For the intended audience here, they make a lot of sense and they feel very snappy.</p><p>Nevertheless, you'll be relying on the thumbsticks for a good deal of your gaming with the Steam Controller. These are a highlight of the Steam Controller for me. Firstly, it's because it <em>has </em>thumbsticks. Two of them. Unlike the last one. Secondly, because they're a good height, responsive, and easy to configure in Steam. Thirdly, I don't have to replace them with Hall effect like I did the Steam Deck, as they're already TMR.</p><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><style>    @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');    @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');        /* Reset & Base */    #fv-chart-1777460447728-wxfqp06hf *, #fv-chart-1777460447728-wxfqp06hf *:before, #fv-chart-1777460447728-wxfqp06hf *:after, #fv-chart-1777460447728-wxfqp06hf-slideshow *, #fv-chart-1777460447728-wxfqp06hf-slideshow *:before, #fv-chart-1777460447728-wxfqp06hf-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777460447728-wxfqp06hf, #fv-chart-1777460447728-wxfqp06hf-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777460447728-wxfqp06hf {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777460447728-wxfqp06hf .fv-inner-wrapper {        color: #1F2937 !important; background-color: #ededed !important;        padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;        margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;        overflow: hidden !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777460447728-wxfqp06hf.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777460447728-wxfqp06hf.fv-full-bleed .fv-inner-wrapper {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-inner-wrapper.fv-is-shop-the-look {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }            /* Slideshow Styles */    #fv-chart-1777460447728-wxfqp06hf-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-slideshow-nav-row {        position: relative !important;        display: flex !important;        justify-content: space-between !important;        align-items: center !important;        padding: 0 0 16px 0 !important;        width: 100% !important;        z-index: 20 !important;    }    #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-nav-btn {        background-color: var(--riv-primary) !important;        color: #ffffff !important;        border: none !important;        border-radius: 4px !important;        padding: 8px 16px !important;        font-size: 14px !important;        font-weight: 700 !important;        cursor: pointer !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 6px !important;        transition: opacity 0.2s, background-color 0.2s !important;        height: 36px !important;        text-transform: none !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;    }        #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-nav-btn.disabled {        background-color: #E5E7EB !important;        color: #9CA3AF !important;        cursor: default !important;        pointer-events: none !important;        box-shadow: none !important;    }    #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-slide-counter {        font-family: 'Poppins', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        color: #374151 !important;        text-align: center !important;        min-width: 40px !important;        background-color: rgba(255,255,255,0.8) !important;        padding: 2px 8px !important;        border-radius: 10px !important;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-slideshow-select {        position: absolute !important;        top: 10px !important;        right: 10px !important;        z-index: 20 !important;        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background-color: white !important;        border: 1px solid #d1d5db !important;        color: #1F2937 !important;        font-family: 'Open Sans', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        padding: 6px 32px 6px 12px !important;        border-radius: 4px !important;        cursor: pointer !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;        background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;        background-position: right 0.5rem center !important;        background-repeat: no-repeat !important;        background-size: 1.5em 1.5em !important;    }    #fv-chart-1777460447728-wxfqp06hf-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777460447728-wxfqp06hf .fv-chart-title {         font-weight: bold !important;         text-align: center !important;         margin-bottom: 0.5rem !important;         color: var(--riv-primary) !important;         font-size: 20px !important;         line-height: 1.2 !important;         font-family: 'Open Sans', sans-serif !important;         text-transform: none !important;         white-space: normal !important;         overflow-wrap: break-word !important;        padding: 0 20px !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-chart-subhead {         font-size: 18px !important;         font-weight: 500 !important;         text-align: center !important;         margin-bottom: 2rem !important;         color: #374151 !important;         line-height: 1.7 !important;         font-family: 'Open Sans', sans-serif !important;         display: block !important;         text-transform: none !important;        padding: 0 20px !important;    }    #fv-chart-1777460447728-wxfqp06hf .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }    /* Versus Chart */    #fv-chart-1777460447728-wxfqp06hf .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }    @keyframes fv-grow-max-width {        from { max-width: 0; }        to { max-width: 100%; }    }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }    #fv-chart-1777460447728-wxfqp06hf .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460447728-wxfqp06hf .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777460447728-wxfqp06hf .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }    #fv-chart-1777460447728-wxfqp06hf .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }    /* Image Comparison Styles */    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777460447728-wxfqp06hf.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-wrapper {        position: relative !important;        width: 100% !important;        overflow: hidden !important;        border-radius: 0 !important;        background-color: #000 !important;        touch-action: pan-y !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-inner {        position: relative !important;        width: 100% !important;        height: 100% !important;        display: block !important;        transform-origin: center center !important;        transition: transform 0.1s ease-out !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-bg {        display: block !important;        width: 100% !important;        height: auto !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-fg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        width: 100% !important;        height: 100% !important;        object-fit: cover !important;        clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-slider {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 32px !important;        transform: translateX(-50%) !important;        cursor: ew-resize !important;        z-index: 10 !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-slider-line {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 4px !important;        background-color: white !important;        transform: translateX(-50%) !important;        box-shadow: 0 0 10px rgba(0,0,0,0.5) !important;        pointer-events: none !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-handle {        position: absolute !important;        top: 50% !important;        left: 50% !important;        transform: translate(-50%, -50%) !important;        width: 32px !important;        height: 32px !important;        background-color: white !important;        border-radius: 50% !important;        box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 4px !important;        pointer-events: none !important;        z-index: 11 !important;        overflow: hidden !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-arrow-left {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-right: 4px solid #4b5563 !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-arrow-right {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-left: 4px solid #4b5563 !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-label {        position: absolute !important;        top: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        padding: 0.25rem 0.75rem !important;        border-radius: 0.25rem !important;        font-size: 0.875rem !important;        font-weight: 500 !important;        pointer-events: none !important;        backdrop-filter: blur(4px) !important;        z-index: 5 !important;        transition: right 0.3s ease, opacity 0.2s ease !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-expand-btn,    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-close-btn {        position: absolute !important;        bottom: 1rem !important;        right: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        border: none !important;        border-radius: 0.25rem !important;        padding: 0.5rem !important;        cursor: pointer !important;        z-index: 20 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        backdrop-filter: blur(4px) !important;        transition: background-color 0.2s !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-expand-btn:hover,    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-wrapper.fv-image-compare-fullscreen {        position: fixed !important;        top: 0 !important;        left: 0 !important;        right: 0 !important;        bottom: 0 !important;        width: 100% !important;        height: 100% !important;        z-index: 999999 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        background-color: rgba(0, 0, 0, 0.9) !important;        margin: 0 !important;        touch-action: none !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner {        width: 100% !important;        height: 100% !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        cursor: grab !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg {        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777460447728-wxfqp06hf .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-logo {         display: block !important;         margin: 0 auto !important;         width: 120px !important;         min-width: 120px !important;        max-width: 120px !important;         height: auto !important;         object-fit: contain !important;         flex-shrink: 0 !important;    }    /* Display Mode Controls */    #fv-chart-1777460447728-wxfqp06hf .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-dropdown-title {        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background: transparent !important;        border: none !important;        font-size: 18px !important;        font-weight: 600 !important;        color: var(--riv-primary) !important;        padding-right: 28px !important;        padding-left: 10px !important;        cursor: pointer !important;        text-align: center !important;        text-align-last: center !important;        width: auto !important;        max-width: 100% !important;        font-family: 'Open Sans', sans-serif !important;        line-height: 1.3 !important;        margin: 0 !important;        text-overflow: ellipsis !important;        overflow: hidden !important;        white-space: nowrap !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777460447728-wxfqp06hf .fv-dropdown-chevron {        position: absolute !important;        right: 0 !important;        top: 50% !important;        transform: translateY(-50%) !important;        pointer-events: none !important;        color: var(--riv-primary) !important;        display: flex !important;        align-items: center !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-carousel-nav-btn {        background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;        cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777460447728-wxfqp06hf .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777460447728-wxfqp06hf .fv-multi-value-legend {         display: flex !important;         justify-content: center !important;         flex-wrap: wrap !important;         gap: 12px 24px !important;         margin-bottom: 1.5rem !important;         padding: 0 !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777460447728-wxfqp06hf .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-benchmark-title {         font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;        text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;        font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;        text-transform: none !important;        white-space: normal !important;        overflow-wrap: break-word !important;         word-wrap: break-word !important;        max-width: 100% !important;    }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-row, #fv-chart-1777460447728-wxfqp06hf .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }     #fv-chart-1777460447728-wxfqp06hf .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777460447728-wxfqp06hf .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777460447728-wxfqp06hf .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777460447728-wxfqp06hf .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777460447728-wxfqp06hf .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-y-axis-title {        font-size: 15px !important;        color: #374151 !important;        line-height: 1.5 !important;        text-align: left !important;        padding-left: 5.83% !important; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777460447728-wxfqp06hf .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777460447728-wxfqp06hf.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777460447728-wxfqp06hf.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777460447728-wxfqp06hf .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777460447728-wxfqp06hf .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777460447728-wxfqp06hf .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777460447728-wxfqp06hf .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777460447728-wxfqp06hf .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777460447728-wxfqp06hf.mobile-view #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777460447728-wxfqp06hf.mobile-view #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777460447728-wxfqp06hf.mobile-view #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777460447728-wxfqp06hf .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-pie-container,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-bar-row,    #fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-stacked-product,    #fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-grouped-bar-product,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-bar-row,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-stacked-product,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-bar-label,    #fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-grouped-product-title,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-bar-label,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-grouped-product-title {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-bar-container,    #fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-bar-cluster,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-bar-container,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-x-axis-label-space,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-benchmark-title,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-dropdown-title,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-chart-title,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-chart-subhead,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-header,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-vs,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-select-container,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-versus-select,    #fv-chart-1777460447728-wxfqp06hf.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777460447728-wxfqp06hf.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777460447728-wxfqp06hf.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777460447728-wxfqp06hf .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-bar-row,        #fv-chart-1777460447728-wxfqp06hf .fv-stacked-product,        #fv-chart-1777460447728-wxfqp06hf .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-bar-label:not(.fv-grouped-product-title) {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-bar-label,        #fv-chart-1777460447728-wxfqp06hf .fv-grouped-product-title {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-bar-container,        #fv-chart-1777460447728-wxfqp06hf .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777460447728-wxfqp06hf .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777460447728-wxfqp06hf .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777460447728-wxfqp06hf.fv-contains-line-chart .fv-footer-content {            margin-left: -1rem !important;            margin-right: -1rem !important;        }    }  </style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Performance isn't the name of the game here. Convenience is more what Valve's going for",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T11:00:47.729Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Steam Controller (2026)",    "Performance",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Performance",      "value": 3,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777460447728-wxfqp06hf" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper   ">            <h3 class="fv-chart-title">Performance isn't the name of the game here. Convenience is more what Valve's going for</h3>                                    <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777460447728-wxfqp06hf-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Steam Controller (2026) - Performance: 3 ">                    <div class="fv-bar-label">Performance</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 60%; background-color: #E33235;" data-target-width="60">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">3</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Performance ()</th></tr></thead>            <tbody><tr><td>Steam Controller (2026)</td><td>3</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </div>            </div>    </div>        <script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        // Responsive mobile view handling            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        // Legend interactions            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        // Versus Chart Logic            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            // Carousel & Dropdown Logic            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        // Text Elements            var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }            // Image Comparison Logic            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                // Zoom state                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    // Max pan depends on how much the image is scaled beyond the wrapper                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true; // Prevent click after pinch                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                // Expand/Close Logic                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            // e.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        // e.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            // Shop The Look Hotspots            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1777460447728-wxfqp06hf', false); });      } else {        initialize('fv-chart-1777460447728-wxfqp06hf', false);      }    })();      </script></div><h2 class="article-body__section" id="section-steam-controller-internals"><span>Steam Controller - Internals</span></h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/Va9aTIktlSk" allowfullscreen></iframe></div></div><p>You can dismantle the Steam Controller with relative ease and using only a handful of tools: a pair of driver bits (Torx 6 and Torx 5), a spudger, and a pair of tweezers. I've carried out a full <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-teardown-simple-to-open-easy-to-fix" target="_blank">Steam Controller teardown</a> as you can see above, and it only takes just 15 minutes to get from built to bits.</p><p>Valve tells me that it is planning to offer official spare parts via iFixit, as it currently does for the Steam Deck. This won't be available at launch but sometime after. That means any future repairs should be very straightforward, though I suspect it will also entice modders to take things further. </p><p>If anyone designs a translucent Steam Controller shell, you have a customer right here.</p><p>Though we did experience minor issues with the two samples we received for review. One had a faint squeak when the trigger was reset, which I fixed by prodding the spring, and the other a slightly misaligned shell that gave it a bit of a rough-feeling edge.</p><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><style>    @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');    @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');        /* Reset & Base */    #fv-chart-1777460546872-uvtew7plg *, #fv-chart-1777460546872-uvtew7plg *:before, #fv-chart-1777460546872-uvtew7plg *:after, #fv-chart-1777460546872-uvtew7plg-slideshow *, #fv-chart-1777460546872-uvtew7plg-slideshow *:before, #fv-chart-1777460546872-uvtew7plg-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777460546872-uvtew7plg, #fv-chart-1777460546872-uvtew7plg-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777460546872-uvtew7plg {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777460546872-uvtew7plg .fv-inner-wrapper {        color: #1F2937 !important; background-color: #ededed !important;        padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;        margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;        overflow: hidden !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777460546872-uvtew7plg.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777460546872-uvtew7plg.fv-full-bleed .fv-inner-wrapper {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-inner-wrapper.fv-is-shop-the-look {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }            /* Slideshow Styles */    #fv-chart-1777460546872-uvtew7plg-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777460546872-uvtew7plg-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777460546872-uvtew7plg-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777460546872-uvtew7plg-slideshow .fv-slideshow-nav-row {        position: relative !important;        display: flex !important;        justify-content: space-between !important;        align-items: center !important;        padding: 0 0 16px 0 !important;        width: 100% !important;        z-index: 20 !important;    }    #fv-chart-1777460546872-uvtew7plg-slideshow .fv-nav-btn {        background-color: var(--riv-primary) !important;        color: #ffffff !important;        border: none !important;        border-radius: 4px !important;        padding: 8px 16px !important;        font-size: 14px !important;        font-weight: 700 !important;        cursor: pointer !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 6px !important;        transition: opacity 0.2s, background-color 0.2s !important;        height: 36px !important;        text-transform: none !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;    }        #fv-chart-1777460546872-uvtew7plg-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777460546872-uvtew7plg-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777460546872-uvtew7plg-slideshow .fv-nav-btn.disabled {        background-color: #E5E7EB !important;        color: #9CA3AF !important;        cursor: default !important;        pointer-events: none !important;        box-shadow: none !important;    }    #fv-chart-1777460546872-uvtew7plg-slideshow .fv-slide-counter {        font-family: 'Poppins', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        color: #374151 !important;        text-align: center !important;        min-width: 40px !important;        background-color: rgba(255,255,255,0.8) !important;        padding: 2px 8px !important;        border-radius: 10px !important;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777460546872-uvtew7plg-slideshow .fv-slideshow-select {        position: absolute !important;        top: 10px !important;        right: 10px !important;        z-index: 20 !important;        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background-color: white !important;        border: 1px solid #d1d5db !important;        color: #1F2937 !important;        font-family: 'Open Sans', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        padding: 6px 32px 6px 12px !important;        border-radius: 4px !important;        cursor: pointer !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;        background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;        background-position: right 0.5rem center !important;        background-repeat: no-repeat !important;        background-size: 1.5em 1.5em !important;    }    #fv-chart-1777460546872-uvtew7plg-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777460546872-uvtew7plg .fv-chart-title {         font-weight: bold !important;         text-align: center !important;         margin-bottom: 0.5rem !important;         color: var(--riv-primary) !important;         font-size: 20px !important;         line-height: 1.2 !important;         font-family: 'Open Sans', sans-serif !important;         text-transform: none !important;         white-space: normal !important;         overflow-wrap: break-word !important;        padding: 0 20px !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-chart-subhead {         font-size: 18px !important;         font-weight: 500 !important;         text-align: center !important;         margin-bottom: 2rem !important;         color: #374151 !important;         line-height: 1.7 !important;         font-family: 'Open Sans', sans-serif !important;         display: block !important;         text-transform: none !important;        padding: 0 20px !important;    }    #fv-chart-1777460546872-uvtew7plg .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }    /* Versus Chart */    #fv-chart-1777460546872-uvtew7plg .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }    @keyframes fv-grow-max-width {        from { max-width: 0; }        to { max-width: 100%; }    }    #fv-chart-1777460546872-uvtew7plg .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }    #fv-chart-1777460546872-uvtew7plg .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460546872-uvtew7plg .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777460546872-uvtew7plg .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }    #fv-chart-1777460546872-uvtew7plg .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }    /* Image Comparison Styles */    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777460546872-uvtew7plg.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-wrapper {        position: relative !important;        width: 100% !important;        overflow: hidden !important;        border-radius: 0 !important;        background-color: #000 !important;        touch-action: pan-y !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-inner {        position: relative !important;        width: 100% !important;        height: 100% !important;        display: block !important;        transform-origin: center center !important;        transition: transform 0.1s ease-out !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-bg {        display: block !important;        width: 100% !important;        height: auto !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-fg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        width: 100% !important;        height: 100% !important;        object-fit: cover !important;        clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-slider {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 32px !important;        transform: translateX(-50%) !important;        cursor: ew-resize !important;        z-index: 10 !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-slider-line {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 4px !important;        background-color: white !important;        transform: translateX(-50%) !important;        box-shadow: 0 0 10px rgba(0,0,0,0.5) !important;        pointer-events: none !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-handle {        position: absolute !important;        top: 50% !important;        left: 50% !important;        transform: translate(-50%, -50%) !important;        width: 32px !important;        height: 32px !important;        background-color: white !important;        border-radius: 50% !important;        box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 4px !important;        pointer-events: none !important;        z-index: 11 !important;        overflow: hidden !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-arrow-left {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-right: 4px solid #4b5563 !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-arrow-right {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-left: 4px solid #4b5563 !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-label {        position: absolute !important;        top: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        padding: 0.25rem 0.75rem !important;        border-radius: 0.25rem !important;        font-size: 0.875rem !important;        font-weight: 500 !important;        pointer-events: none !important;        backdrop-filter: blur(4px) !important;        z-index: 5 !important;        transition: right 0.3s ease, opacity 0.2s ease !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777460546872-uvtew7plg .fv-image-compare-expand-btn,    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-close-btn {        position: absolute !important;        bottom: 1rem !important;        right: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        border: none !important;        border-radius: 0.25rem !important;        padding: 0.5rem !important;        cursor: pointer !important;        z-index: 20 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        backdrop-filter: blur(4px) !important;        transition: background-color 0.2s !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-expand-btn:hover,    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-wrapper.fv-image-compare-fullscreen {        position: fixed !important;        top: 0 !important;        left: 0 !important;        right: 0 !important;        bottom: 0 !important;        width: 100% !important;        height: 100% !important;        z-index: 999999 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        background-color: rgba(0, 0, 0, 0.9) !important;        margin: 0 !important;        touch-action: none !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner {        width: 100% !important;        height: 100% !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        cursor: grab !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg {        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777460546872-uvtew7plg .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777460546872-uvtew7plg .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777460546872-uvtew7plg .fv-logo {         display: block !important;         margin: 0 auto !important;         width: 120px !important;         min-width: 120px !important;        max-width: 120px !important;         height: auto !important;         object-fit: contain !important;         flex-shrink: 0 !important;    }    /* Display Mode Controls */    #fv-chart-1777460546872-uvtew7plg .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777460546872-uvtew7plg .fv-dropdown-title {        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background: transparent !important;        border: none !important;        font-size: 18px !important;        font-weight: 600 !important;        color: var(--riv-primary) !important;        padding-right: 28px !important;        padding-left: 10px !important;        cursor: pointer !important;        text-align: center !important;        text-align-last: center !important;        width: auto !important;        max-width: 100% !important;        font-family: 'Open Sans', sans-serif !important;        line-height: 1.3 !important;        margin: 0 !important;        text-overflow: ellipsis !important;        overflow: hidden !important;        white-space: nowrap !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777460546872-uvtew7plg .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777460546872-uvtew7plg .fv-dropdown-chevron {        position: absolute !important;        right: 0 !important;        top: 50% !important;        transform: translateY(-50%) !important;        pointer-events: none !important;        color: var(--riv-primary) !important;        display: flex !important;        align-items: center !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }    #fv-chart-1777460546872-uvtew7plg .fv-carousel-nav-btn {        background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;        cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777460546872-uvtew7plg .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777460546872-uvtew7plg .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }    #fv-chart-1777460546872-uvtew7plg .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777460546872-uvtew7plg .fv-multi-value-legend {         display: flex !important;         justify-content: center !important;         flex-wrap: wrap !important;         gap: 12px 24px !important;         margin-bottom: 1.5rem !important;         padding: 0 !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777460546872-uvtew7plg .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777460546872-uvtew7plg .fv-benchmark-title {         font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;        text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;        font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;        text-transform: none !important;        white-space: normal !important;        overflow-wrap: break-word !important;         word-wrap: break-word !important;        max-width: 100% !important;    }    #fv-chart-1777460546872-uvtew7plg .fv-bar-row, #fv-chart-1777460546872-uvtew7plg .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }     #fv-chart-1777460546872-uvtew7plg .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777460546872-uvtew7plg .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777460546872-uvtew7plg .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777460546872-uvtew7plg .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777460546872-uvtew7plg .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777460546872-uvtew7plg .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777460546872-uvtew7plg .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777460546872-uvtew7plg .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777460546872-uvtew7plg .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777460546872-uvtew7plg .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777460546872-uvtew7plg .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777460546872-uvtew7plg .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }    #fv-chart-1777460546872-uvtew7plg .fv-y-axis-title {        font-size: 15px !important;        color: #374151 !important;        line-height: 1.5 !important;        text-align: left !important;        padding-left: 5.83% !important; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777460546872-uvtew7plg .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777460546872-uvtew7plg.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777460546872-uvtew7plg.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777460546872-uvtew7plg .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777460546872-uvtew7plg .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777460546872-uvtew7plg .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777460546872-uvtew7plg .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777460546872-uvtew7plg .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777460546872-uvtew7plg.mobile-view #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777460546872-uvtew7plg.mobile-view #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777460546872-uvtew7plg.mobile-view #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777460546872-uvtew7plg .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777460546872-uvtew7plg.mobile-view .fv-pie-container,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-bar-row,    #fv-chart-1777460546872-uvtew7plg.mobile-view .fv-stacked-product,    #fv-chart-1777460546872-uvtew7plg.mobile-view .fv-grouped-bar-product,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-bar-row,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-stacked-product,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-bar-label,    #fv-chart-1777460546872-uvtew7plg.mobile-view .fv-grouped-product-title,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-bar-label,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-grouped-product-title {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-bar-container,    #fv-chart-1777460546872-uvtew7plg.mobile-view .fv-bar-cluster,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-bar-container,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-x-axis-label-space,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-benchmark-title,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-dropdown-title,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-chart-title,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-chart-subhead,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-header,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-vs,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-select-container,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777460546872-uvtew7plg.mobile-view .fv-versus-select,    #fv-chart-1777460546872-uvtew7plg.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777460546872-uvtew7plg.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777460546872-uvtew7plg.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777460546872-uvtew7plg .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777460546872-uvtew7plg .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-bar-row,        #fv-chart-1777460546872-uvtew7plg .fv-stacked-product,        #fv-chart-1777460546872-uvtew7plg .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777460546872-uvtew7plg .fv-bar-label:not(.fv-grouped-product-title) {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-bar-label,        #fv-chart-1777460546872-uvtew7plg .fv-grouped-product-title {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-bar-container,        #fv-chart-1777460546872-uvtew7plg .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777460546872-uvtew7plg .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777460546872-uvtew7plg .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777460546872-uvtew7plg .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777460546872-uvtew7plg .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777460546872-uvtew7plg .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777460546872-uvtew7plg .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777460546872-uvtew7plg .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777460546872-uvtew7plg .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777460546872-uvtew7plg.fv-contains-line-chart .fv-footer-content {            margin-left: -1rem !important;            margin-right: -1rem !important;        }    }  </style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Valve has designed the inside of the Steam Controller like it was just waiting for someone to rip it open",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T11:02:26.872Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Steam Controller (2026)",    "Internals",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Internals",      "value": 4.5,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777460546872-uvtew7plg" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper   ">            <h3 class="fv-chart-title">Valve has designed the inside of the Steam Controller like it was just waiting for someone to rip it open</h3>                                    <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777460546872-uvtew7plg-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Steam Controller (2026) - Internals: 4.5 ">                    <div class="fv-bar-label">Internals</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 90%; background-color: #E33235;" data-target-width="90">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">4.5</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Internals ()</th></tr></thead>            <tbody><tr><td>Steam Controller (2026)</td><td>4.5</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </div>            </div>    </div>        <script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        // Responsive mobile view handling            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        // Legend interactions            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        // Versus Chart Logic            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            // Carousel & Dropdown Logic            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        // Text Elements            var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }            // Image Comparison Logic            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                // Zoom state                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    // Max pan depends on how much the image is scaled beyond the wrapper                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true; // Prevent click after pinch                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                // Expand/Close Logic                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            // e.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        // e.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            // Shop The Look Hotspots            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1777460546872-uvtew7plg', false); });      } else {        initialize('fv-chart-1777460546872-uvtew7plg', false);      }    })();      </script></div><h2 class="article-body__section" id="section-steam-controller-aesthetics"><span>Steam Controller - Aesthetics</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1919px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="pNnhNDkM4iHpeDF9siHpSY" name="IMG_4263_modified" alt="The Steam Controller on a desk next to its charging dock and a keyboard." src="https://cdn.mos.cms.futurecdn.net/pNnhNDkM4iHpeDF9siHpSY.jpg" mos="" align="middle" fullscreen="" width="1919" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>With input parity to the Steam Deck, it makes sense that the Steam Controller also has looks to match. But beyond the obvious similarities, there are some slight differences. </p><p>The Steam Controller has a more textured finish compared to the Steam Deck. It's also a lighter shade of grey, which is noticeable in direct sunlight. The face buttons and D-pad are also larger on the controller, and the slightly recessed trackpads are also tilted for a more natural hand position. The Steam and QAM buttons are also raised, and the shoulder buttons have a little more travel to them.</p><p>It looks more sculpted than some early Reddit mockups of what Valve might do, but not a million miles off what was expected either. Importantly, it looks and feels a lot better than the first-generation Steam Controller. The modern version still has that quality of affordability about it—you'll find much more polished controllers on the market—but it feels solid. The Puck also helps keep your desk or TV unit tidy while keeping the receiver close to the Controller.</p><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><style>    @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');    @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');        /* Reset & Base */    #fv-chart-1777460863926-hterln9hn *, #fv-chart-1777460863926-hterln9hn *:before, #fv-chart-1777460863926-hterln9hn *:after, #fv-chart-1777460863926-hterln9hn-slideshow *, #fv-chart-1777460863926-hterln9hn-slideshow *:before, #fv-chart-1777460863926-hterln9hn-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777460863926-hterln9hn, #fv-chart-1777460863926-hterln9hn-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777460863926-hterln9hn {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777460863926-hterln9hn .fv-inner-wrapper {        color: #1F2937 !important; background-color: #ededed !important;        padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;        margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;        overflow: hidden !important;    }    #fv-chart-1777460863926-hterln9hn .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777460863926-hterln9hn.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777460863926-hterln9hn.fv-full-bleed .fv-inner-wrapper {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }    #fv-chart-1777460863926-hterln9hn .fv-inner-wrapper.fv-is-shop-the-look {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }            /* Slideshow Styles */    #fv-chart-1777460863926-hterln9hn-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777460863926-hterln9hn-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777460863926-hterln9hn-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777460863926-hterln9hn-slideshow .fv-slideshow-nav-row {        position: relative !important;        display: flex !important;        justify-content: space-between !important;        align-items: center !important;        padding: 0 0 16px 0 !important;        width: 100% !important;        z-index: 20 !important;    }    #fv-chart-1777460863926-hterln9hn-slideshow .fv-nav-btn {        background-color: var(--riv-primary) !important;        color: #ffffff !important;        border: none !important;        border-radius: 4px !important;        padding: 8px 16px !important;        font-size: 14px !important;        font-weight: 700 !important;        cursor: pointer !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 6px !important;        transition: opacity 0.2s, background-color 0.2s !important;        height: 36px !important;        text-transform: none !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;    }        #fv-chart-1777460863926-hterln9hn-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777460863926-hterln9hn-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777460863926-hterln9hn-slideshow .fv-nav-btn.disabled {        background-color: #E5E7EB !important;        color: #9CA3AF !important;        cursor: default !important;        pointer-events: none !important;        box-shadow: none !important;    }    #fv-chart-1777460863926-hterln9hn-slideshow .fv-slide-counter {        font-family: 'Poppins', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        color: #374151 !important;        text-align: center !important;        min-width: 40px !important;        background-color: rgba(255,255,255,0.8) !important;        padding: 2px 8px !important;        border-radius: 10px !important;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777460863926-hterln9hn-slideshow .fv-slideshow-select {        position: absolute !important;        top: 10px !important;        right: 10px !important;        z-index: 20 !important;        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background-color: white !important;        border: 1px solid #d1d5db !important;        color: #1F2937 !important;        font-family: 'Open Sans', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        padding: 6px 32px 6px 12px !important;        border-radius: 4px !important;        cursor: pointer !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;        background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;        background-position: right 0.5rem center !important;        background-repeat: no-repeat !important;        background-size: 1.5em 1.5em !important;    }    #fv-chart-1777460863926-hterln9hn-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777460863926-hterln9hn .fv-chart-title {         font-weight: bold !important;         text-align: center !important;         margin-bottom: 0.5rem !important;         color: var(--riv-primary) !important;         font-size: 20px !important;         line-height: 1.2 !important;         font-family: 'Open Sans', sans-serif !important;         text-transform: none !important;         white-space: normal !important;         overflow-wrap: break-word !important;        padding: 0 20px !important;    }    #fv-chart-1777460863926-hterln9hn .fv-chart-subhead {         font-size: 18px !important;         font-weight: 500 !important;         text-align: center !important;         margin-bottom: 2rem !important;         color: #374151 !important;         line-height: 1.7 !important;         font-family: 'Open Sans', sans-serif !important;         display: block !important;         text-transform: none !important;        padding: 0 20px !important;    }    #fv-chart-1777460863926-hterln9hn .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }    /* Versus Chart */    #fv-chart-1777460863926-hterln9hn .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777460863926-hterln9hn .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }    #fv-chart-1777460863926-hterln9hn .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777460863926-hterln9hn .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777460863926-hterln9hn .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777460863926-hterln9hn .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777460863926-hterln9hn .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777460863926-hterln9hn .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }    #fv-chart-1777460863926-hterln9hn .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777460863926-hterln9hn .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }    @keyframes fv-grow-max-width {        from { max-width: 0; }        to { max-width: 100%; }    }    #fv-chart-1777460863926-hterln9hn .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }    #fv-chart-1777460863926-hterln9hn .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460863926-hterln9hn .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777460863926-hterln9hn .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777460863926-hterln9hn .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777460863926-hterln9hn .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }    #fv-chart-1777460863926-hterln9hn .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }    /* Image Comparison Styles */    #fv-chart-1777460863926-hterln9hn .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777460863926-hterln9hn.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-wrapper {        position: relative !important;        width: 100% !important;        overflow: hidden !important;        border-radius: 0 !important;        background-color: #000 !important;        touch-action: pan-y !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-inner {        position: relative !important;        width: 100% !important;        height: 100% !important;        display: block !important;        transform-origin: center center !important;        transition: transform 0.1s ease-out !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-bg {        display: block !important;        width: 100% !important;        height: auto !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-fg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        width: 100% !important;        height: 100% !important;        object-fit: cover !important;        clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-slider {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 32px !important;        transform: translateX(-50%) !important;        cursor: ew-resize !important;        z-index: 10 !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-slider-line {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 4px !important;        background-color: white !important;        transform: translateX(-50%) !important;        box-shadow: 0 0 10px rgba(0,0,0,0.5) !important;        pointer-events: none !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-handle {        position: absolute !important;        top: 50% !important;        left: 50% !important;        transform: translate(-50%, -50%) !important;        width: 32px !important;        height: 32px !important;        background-color: white !important;        border-radius: 50% !important;        box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 4px !important;        pointer-events: none !important;        z-index: 11 !important;        overflow: hidden !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-arrow-left {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-right: 4px solid #4b5563 !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-arrow-right {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-left: 4px solid #4b5563 !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-label {        position: absolute !important;        top: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        padding: 0.25rem 0.75rem !important;        border-radius: 0.25rem !important;        font-size: 0.875rem !important;        font-weight: 500 !important;        pointer-events: none !important;        backdrop-filter: blur(4px) !important;        z-index: 5 !important;        transition: right 0.3s ease, opacity 0.2s ease !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777460863926-hterln9hn .fv-image-compare-expand-btn,    #fv-chart-1777460863926-hterln9hn .fv-image-compare-close-btn {        position: absolute !important;        bottom: 1rem !important;        right: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        border: none !important;        border-radius: 0.25rem !important;        padding: 0.5rem !important;        cursor: pointer !important;        z-index: 20 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        backdrop-filter: blur(4px) !important;        transition: background-color 0.2s !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-expand-btn:hover,    #fv-chart-1777460863926-hterln9hn .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777460863926-hterln9hn .fv-image-compare-wrapper.fv-image-compare-fullscreen {        position: fixed !important;        top: 0 !important;        left: 0 !important;        right: 0 !important;        bottom: 0 !important;        width: 100% !important;        height: 100% !important;        z-index: 999999 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        background-color: rgba(0, 0, 0, 0.9) !important;        margin: 0 !important;        touch-action: none !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner {        width: 100% !important;        height: 100% !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        cursor: grab !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg {        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777460863926-hterln9hn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777460863926-hterln9hn .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777460863926-hterln9hn .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777460863926-hterln9hn .fv-logo {         display: block !important;         margin: 0 auto !important;         width: 120px !important;         min-width: 120px !important;        max-width: 120px !important;         height: auto !important;         object-fit: contain !important;         flex-shrink: 0 !important;    }    /* Display Mode Controls */    #fv-chart-1777460863926-hterln9hn .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777460863926-hterln9hn .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777460863926-hterln9hn .fv-dropdown-title {        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background: transparent !important;        border: none !important;        font-size: 18px !important;        font-weight: 600 !important;        color: var(--riv-primary) !important;        padding-right: 28px !important;        padding-left: 10px !important;        cursor: pointer !important;        text-align: center !important;        text-align-last: center !important;        width: auto !important;        max-width: 100% !important;        font-family: 'Open Sans', sans-serif !important;        line-height: 1.3 !important;        margin: 0 !important;        text-overflow: ellipsis !important;        overflow: hidden !important;        white-space: nowrap !important;    }    #fv-chart-1777460863926-hterln9hn .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777460863926-hterln9hn .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777460863926-hterln9hn .fv-dropdown-chevron {        position: absolute !important;        right: 0 !important;        top: 50% !important;        transform: translateY(-50%) !important;        pointer-events: none !important;        color: var(--riv-primary) !important;        display: flex !important;        align-items: center !important;    }    #fv-chart-1777460863926-hterln9hn .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }    #fv-chart-1777460863926-hterln9hn .fv-carousel-nav-btn {        background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;        cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1777460863926-hterln9hn .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777460863926-hterln9hn .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777460863926-hterln9hn .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }    #fv-chart-1777460863926-hterln9hn .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777460863926-hterln9hn .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777460863926-hterln9hn .fv-multi-value-legend {         display: flex !important;         justify-content: center !important;         flex-wrap: wrap !important;         gap: 12px 24px !important;         margin-bottom: 1.5rem !important;         padding: 0 !important;    }    #fv-chart-1777460863926-hterln9hn .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }    #fv-chart-1777460863926-hterln9hn .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777460863926-hterln9hn .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777460863926-hterln9hn .fv-benchmark-title {         font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;        text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;        font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;        text-transform: none !important;        white-space: normal !important;        overflow-wrap: break-word !important;         word-wrap: break-word !important;        max-width: 100% !important;    }    #fv-chart-1777460863926-hterln9hn .fv-bar-row, #fv-chart-1777460863926-hterln9hn .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }     #fv-chart-1777460863926-hterln9hn .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777460863926-hterln9hn .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777460863926-hterln9hn .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777460863926-hterln9hn .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777460863926-hterln9hn .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }    #fv-chart-1777460863926-hterln9hn .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777460863926-hterln9hn .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777460863926-hterln9hn .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777460863926-hterln9hn .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777460863926-hterln9hn .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777460863926-hterln9hn .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777460863926-hterln9hn .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777460863926-hterln9hn .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777460863926-hterln9hn .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777460863926-hterln9hn .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777460863926-hterln9hn .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777460863926-hterln9hn .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777460863926-hterln9hn .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }    #fv-chart-1777460863926-hterln9hn .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777460863926-hterln9hn .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }    #fv-chart-1777460863926-hterln9hn .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777460863926-hterln9hn .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }    #fv-chart-1777460863926-hterln9hn .fv-y-axis-title {        font-size: 15px !important;        color: #374151 !important;        line-height: 1.5 !important;        text-align: left !important;        padding-left: 5.83% !important; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777460863926-hterln9hn .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777460863926-hterln9hn.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777460863926-hterln9hn.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777460863926-hterln9hn .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777460863926-hterln9hn .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777460863926-hterln9hn .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777460863926-hterln9hn .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777460863926-hterln9hn .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777460863926-hterln9hn.mobile-view #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777460863926-hterln9hn.mobile-view #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777460863926-hterln9hn.mobile-view #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777460863926-hterln9hn .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777460863926-hterln9hn.mobile-view .fv-pie-container,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-bar-row,    #fv-chart-1777460863926-hterln9hn.mobile-view .fv-stacked-product,    #fv-chart-1777460863926-hterln9hn.mobile-view .fv-grouped-bar-product,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-bar-row,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-stacked-product,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-bar-label,    #fv-chart-1777460863926-hterln9hn.mobile-view .fv-grouped-product-title,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-bar-label,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-grouped-product-title {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-bar-container,    #fv-chart-1777460863926-hterln9hn.mobile-view .fv-bar-cluster,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-bar-container,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-x-axis-label-space,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-benchmark-title,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-dropdown-title,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-chart-title,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-chart-subhead,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-header,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-vs,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-select-container,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777460863926-hterln9hn.mobile-view .fv-versus-select,    #fv-chart-1777460863926-hterln9hn.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777460863926-hterln9hn.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777460863926-hterln9hn.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777460863926-hterln9hn .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777460863926-hterln9hn .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777460863926-hterln9hn .fv-bar-row,        #fv-chart-1777460863926-hterln9hn .fv-stacked-product,        #fv-chart-1777460863926-hterln9hn .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777460863926-hterln9hn .fv-bar-label:not(.fv-grouped-product-title) {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777460863926-hterln9hn .fv-bar-label,        #fv-chart-1777460863926-hterln9hn .fv-grouped-product-title {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777460863926-hterln9hn .fv-bar-container,        #fv-chart-1777460863926-hterln9hn .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777460863926-hterln9hn .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777460863926-hterln9hn .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777460863926-hterln9hn .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777460863926-hterln9hn .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777460863926-hterln9hn .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777460863926-hterln9hn .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777460863926-hterln9hn .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777460863926-hterln9hn .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777460863926-hterln9hn .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777460863926-hterln9hn .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777460863926-hterln9hn.fv-contains-line-chart .fv-footer-content {            margin-left: -1rem !important;            margin-right: -1rem !important;        }    }  </style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "A big step-up in quality over what came before and a match for Valve's upcoming hardware",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T11:07:43.926Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Steam Controller (2026)",    "Aesthetics",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Aesthetics",      "value": 4,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777460863926-hterln9hn" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper   ">            <h3 class="fv-chart-title">A big step-up in quality over what came before and a match for Valve's upcoming hardware</h3>                                    <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777460863926-hterln9hn-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Steam Controller (2026) - Aesthetics: 4 ">                    <div class="fv-bar-label">Aesthetics</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 80%; background-color: #E33235;" data-target-width="80">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">4</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Aesthetics ()</th></tr></thead>            <tbody><tr><td>Steam Controller (2026)</td><td>4</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </div>            </div>    </div>        <script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        // Responsive mobile view handling            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        // Legend interactions            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        // Versus Chart Logic            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            // Carousel & Dropdown Logic            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        // Text Elements            var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }            // Image Comparison Logic            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                // Zoom state                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    // Max pan depends on how much the image is scaled beyond the wrapper                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true; // Prevent click after pinch                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                // Expand/Close Logic                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            // e.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        // e.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            // Shop The Look Hotspots            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1777460863926-hterln9hn', false); });      } else {        initialize('fv-chart-1777460863926-hterln9hn', false);      }    })();      </script></div><h2 class="article-body__section" id="section-steam-controller-software"><span>Steam Controller - Software</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="e2sgfYGNVJY685okvFvfCX" name="update-page" alt="The Steam Controller getting an update in Steam." src="https://cdn.mos.cms.futurecdn.net/e2sgfYGNVJY685okvFvfCX.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Valve)</span></figcaption></figure><p>The Steam Controller, unsurprisingly, relies on Steam for all its software needs.</p><p>You'll find all the settings in the Controller tab of the Settings menu. There's a Pair and Manage tab, which shows the pairing status of the included Puck. It can be connected to up to four Steam Controllers at once, though there's one included in every box. You'll also see two further wireless pairing slots at the bottom. These are for the controller itself, as you could connect a single controller to multiple PCs or a PC and a Steam Machine.</p><p>There's also another Bluetooth pairing slot that's not displayed, though this is the best way to connect the controller to a Steam Deck without a cable. </p><p>Here how you access Bluetooth and a few other useful shortcuts:</p><ul><li><strong>Power on into Bluetooth pairing slot:</strong> B + R1/L1 + Steam button</li><li><strong>Power on into wireless pairing slot 1:</strong> Hold A + R1 + Steam button</li><li><strong>Power on into wireless pairing slot 2:</strong> Hold A + L1 + Steam button</li><li><strong>Power off:</strong> Steam button + Y</li><li><strong>Open Steam: </strong>Steam button</li><li><strong>Big Picture Mode (while in Steam): </strong>Steam button</li><li><strong>Show keyboard:</strong> X (in desktop layout)</li></ul><p>While a controller is connected, a new 'Steam Controller' tab populates with extra settings to mess with. In this tab, you can rename the controller, identify it (which causes it to rumble and ring out like an old Nokia), adjust button layouts, or test the controller inputs.</p><p>To take advantage of the trackpads for desktop browsing or gyro controls, you need to set these up in the Pair and Manage tab. Click to edit the desktop layout and you're able to select different behaviours for the gyro and right trackpad, as well as adjust button mapping and sensitivity. There's actually a whole lot of customisation possible through this screen. If that's not enough, by clicking on the cogwheels to the right of either gyro or trackpad options, there are further fine-tuning options. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/sv6VjC3drjobjGVhSwWHSX.jpg" alt="The Steam Controller settings in the Steam client." /><figcaption><small role="credit">Valve</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wjFL3os6vxUY8zn8tD3tKX.jpg" alt="The Steam Controller gyro settings and calibration in the Steam client." /><figcaption><small role="credit">Valve</small></figcaption></figure></figure><p>For example, you can adjust the gyro controls to only function when you're holding a specific button. By default, this is set to utilise the capacitive touch sensing in the right thumbstick and right trackpad. Gyro will also only be enabled when you're holding the controller via Grip Sense. Though, if you're a leftie, you might want to switch this over to left thumbstick and left trackpad, or set it to only when you press certain inputs. It's up to you.</p><p>There's nothing that requires changing out of the box. Some settings for the gyro, at least, will be handy when setting it up for use in a certain game. Though you can access custom layouts for that, both your own configurations or those of the community. Since this has input parity with the Steam Deck, you can use any made for the Deck, too. I've tried a few, and they often work well, if only with a couple tweaks.</p><p>The Controller requires Steam or the Steam Link app. I tested it on GeForce Now via my iPhone and while it did connect over Bluetooth, it was not recognised in-game. It did, however, work seamlessly over a local connection using Steam Link.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/6y4SF5ozG7z9fwRUQ3TSQX.jpg" alt="The Steam Controller pairing settings in the Steam client." /><figcaption><small role="credit">Valve</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/dkAcgb3sP5bcwWrqsxpqQX.jpg" alt="The Steam Controller settings in the Steam client." /><figcaption><small role="credit">Valve</small></figcaption></figure></figure><p>We also had some teething issues with Ubuntu and Pop! OS, which may be on our end as much as Valve's, but there could be futher tweaks required to get up-and-running off SteamOS and Windows.</p><p>One thing you might run into with the Steam Controller is attempting to use it while playing a non-Steam game. There are few options here. You can add a game to Steam and simply run it within the client, which should let you set game-specific controller configurations. Or you can use a desktop profile that just broadly applies to your entire system. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5Tqj5jkATxptKGNCEtF6WX" name="community-layout" alt="A community layout for Peak in the loading screen." src="https://cdn.mos.cms.futurecdn.net/5Tqj5jkATxptKGNCEtF6WX.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Valve)</span></figcaption></figure><p>I found the former approach didn't work with Kingdom Come Deliverance II, which I have on Epic and must be booted via the Epic Games Launcher. That's a fairly common issue with some launchers. I tried a few different methods to get around this, such as creating a shortcut in the Epic launcher and adding that to Steam with a launch parameter, but Controller support was funky at best. Instead, I found it easier to just make a new desktop layout tailored to Kingdom Come Deliverance II and selecting that via Steam's settings page. You could do the same for any game. Though some games don't support reconfiguring the back buttons— KCD2 is one of them—gyro controls worked without issue in every game I tried.</p><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><style>    @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');    @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');        /* Reset & Base */    #fv-chart-1777461085020-astu60izb *, #fv-chart-1777461085020-astu60izb *:before, #fv-chart-1777461085020-astu60izb *:after, #fv-chart-1777461085020-astu60izb-slideshow *, #fv-chart-1777461085020-astu60izb-slideshow *:before, #fv-chart-1777461085020-astu60izb-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777461085020-astu60izb, #fv-chart-1777461085020-astu60izb-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777461085020-astu60izb {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777461085020-astu60izb .fv-inner-wrapper {        color: #1F2937 !important; background-color: #ededed !important;        padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;        margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;        overflow: hidden !important;    }    #fv-chart-1777461085020-astu60izb .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777461085020-astu60izb.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777461085020-astu60izb.fv-full-bleed .fv-inner-wrapper {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }    #fv-chart-1777461085020-astu60izb .fv-inner-wrapper.fv-is-shop-the-look {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }            /* Slideshow Styles */    #fv-chart-1777461085020-astu60izb-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777461085020-astu60izb-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777461085020-astu60izb-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777461085020-astu60izb-slideshow .fv-slideshow-nav-row {        position: relative !important;        display: flex !important;        justify-content: space-between !important;        align-items: center !important;        padding: 0 0 16px 0 !important;        width: 100% !important;        z-index: 20 !important;    }    #fv-chart-1777461085020-astu60izb-slideshow .fv-nav-btn {        background-color: var(--riv-primary) !important;        color: #ffffff !important;        border: none !important;        border-radius: 4px !important;        padding: 8px 16px !important;        font-size: 14px !important;        font-weight: 700 !important;        cursor: pointer !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 6px !important;        transition: opacity 0.2s, background-color 0.2s !important;        height: 36px !important;        text-transform: none !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;    }        #fv-chart-1777461085020-astu60izb-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777461085020-astu60izb-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777461085020-astu60izb-slideshow .fv-nav-btn.disabled {        background-color: #E5E7EB !important;        color: #9CA3AF !important;        cursor: default !important;        pointer-events: none !important;        box-shadow: none !important;    }    #fv-chart-1777461085020-astu60izb-slideshow .fv-slide-counter {        font-family: 'Poppins', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        color: #374151 !important;        text-align: center !important;        min-width: 40px !important;        background-color: rgba(255,255,255,0.8) !important;        padding: 2px 8px !important;        border-radius: 10px !important;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777461085020-astu60izb-slideshow .fv-slideshow-select {        position: absolute !important;        top: 10px !important;        right: 10px !important;        z-index: 20 !important;        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background-color: white !important;        border: 1px solid #d1d5db !important;        color: #1F2937 !important;        font-family: 'Open Sans', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        padding: 6px 32px 6px 12px !important;        border-radius: 4px !important;        cursor: pointer !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;        background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;        background-position: right 0.5rem center !important;        background-repeat: no-repeat !important;        background-size: 1.5em 1.5em !important;    }    #fv-chart-1777461085020-astu60izb-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777461085020-astu60izb .fv-chart-title {         font-weight: bold !important;         text-align: center !important;         margin-bottom: 0.5rem !important;         color: var(--riv-primary) !important;         font-size: 20px !important;         line-height: 1.2 !important;         font-family: 'Open Sans', sans-serif !important;         text-transform: none !important;         white-space: normal !important;         overflow-wrap: break-word !important;        padding: 0 20px !important;    }    #fv-chart-1777461085020-astu60izb .fv-chart-subhead {         font-size: 18px !important;         font-weight: 500 !important;         text-align: center !important;         margin-bottom: 2rem !important;         color: #374151 !important;         line-height: 1.7 !important;         font-family: 'Open Sans', sans-serif !important;         display: block !important;         text-transform: none !important;        padding: 0 20px !important;    }    #fv-chart-1777461085020-astu60izb .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }    /* Versus Chart */    #fv-chart-1777461085020-astu60izb .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777461085020-astu60izb .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777461085020-astu60izb .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }    #fv-chart-1777461085020-astu60izb .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }    #fv-chart-1777461085020-astu60izb .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777461085020-astu60izb .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777461085020-astu60izb .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777461085020-astu60izb .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777461085020-astu60izb .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777461085020-astu60izb .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }    #fv-chart-1777461085020-astu60izb .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777461085020-astu60izb .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }    @keyframes fv-grow-max-width {        from { max-width: 0; }        to { max-width: 100%; }    }    #fv-chart-1777461085020-astu60izb .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }    #fv-chart-1777461085020-astu60izb .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777461085020-astu60izb .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777461085020-astu60izb .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777461085020-astu60izb .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777461085020-astu60izb .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }    #fv-chart-1777461085020-astu60izb .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }    /* Image Comparison Styles */    #fv-chart-1777461085020-astu60izb .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777461085020-astu60izb.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-wrapper {        position: relative !important;        width: 100% !important;        overflow: hidden !important;        border-radius: 0 !important;        background-color: #000 !important;        touch-action: pan-y !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-inner {        position: relative !important;        width: 100% !important;        height: 100% !important;        display: block !important;        transform-origin: center center !important;        transition: transform 0.1s ease-out !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-bg {        display: block !important;        width: 100% !important;        height: auto !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-fg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        width: 100% !important;        height: 100% !important;        object-fit: cover !important;        clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-slider {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 32px !important;        transform: translateX(-50%) !important;        cursor: ew-resize !important;        z-index: 10 !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-slider-line {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 4px !important;        background-color: white !important;        transform: translateX(-50%) !important;        box-shadow: 0 0 10px rgba(0,0,0,0.5) !important;        pointer-events: none !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-handle {        position: absolute !important;        top: 50% !important;        left: 50% !important;        transform: translate(-50%, -50%) !important;        width: 32px !important;        height: 32px !important;        background-color: white !important;        border-radius: 50% !important;        box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 4px !important;        pointer-events: none !important;        z-index: 11 !important;        overflow: hidden !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-arrow-left {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-right: 4px solid #4b5563 !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-arrow-right {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-left: 4px solid #4b5563 !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-label {        position: absolute !important;        top: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        padding: 0.25rem 0.75rem !important;        border-radius: 0.25rem !important;        font-size: 0.875rem !important;        font-weight: 500 !important;        pointer-events: none !important;        backdrop-filter: blur(4px) !important;        z-index: 5 !important;        transition: right 0.3s ease, opacity 0.2s ease !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777461085020-astu60izb .fv-image-compare-expand-btn,    #fv-chart-1777461085020-astu60izb .fv-image-compare-close-btn {        position: absolute !important;        bottom: 1rem !important;        right: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        border: none !important;        border-radius: 0.25rem !important;        padding: 0.5rem !important;        cursor: pointer !important;        z-index: 20 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        backdrop-filter: blur(4px) !important;        transition: background-color 0.2s !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-expand-btn:hover,    #fv-chart-1777461085020-astu60izb .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777461085020-astu60izb .fv-image-compare-wrapper.fv-image-compare-fullscreen {        position: fixed !important;        top: 0 !important;        left: 0 !important;        right: 0 !important;        bottom: 0 !important;        width: 100% !important;        height: 100% !important;        z-index: 999999 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        background-color: rgba(0, 0, 0, 0.9) !important;        margin: 0 !important;        touch-action: none !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner {        width: 100% !important;        height: 100% !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        cursor: grab !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg {        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777461085020-astu60izb .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777461085020-astu60izb .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777461085020-astu60izb .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777461085020-astu60izb .fv-logo {         display: block !important;         margin: 0 auto !important;         width: 120px !important;         min-width: 120px !important;        max-width: 120px !important;         height: auto !important;         object-fit: contain !important;         flex-shrink: 0 !important;    }    /* Display Mode Controls */    #fv-chart-1777461085020-astu60izb .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777461085020-astu60izb .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777461085020-astu60izb .fv-dropdown-title {        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background: transparent !important;        border: none !important;        font-size: 18px !important;        font-weight: 600 !important;        color: var(--riv-primary) !important;        padding-right: 28px !important;        padding-left: 10px !important;        cursor: pointer !important;        text-align: center !important;        text-align-last: center !important;        width: auto !important;        max-width: 100% !important;        font-family: 'Open Sans', sans-serif !important;        line-height: 1.3 !important;        margin: 0 !important;        text-overflow: ellipsis !important;        overflow: hidden !important;        white-space: nowrap !important;    }    #fv-chart-1777461085020-astu60izb .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777461085020-astu60izb .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777461085020-astu60izb .fv-dropdown-chevron {        position: absolute !important;        right: 0 !important;        top: 50% !important;        transform: translateY(-50%) !important;        pointer-events: none !important;        color: var(--riv-primary) !important;        display: flex !important;        align-items: center !important;    }    #fv-chart-1777461085020-astu60izb .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }    #fv-chart-1777461085020-astu60izb .fv-carousel-nav-btn {        background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;        cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1777461085020-astu60izb .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777461085020-astu60izb .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777461085020-astu60izb .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }    #fv-chart-1777461085020-astu60izb .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777461085020-astu60izb .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777461085020-astu60izb .fv-multi-value-legend {         display: flex !important;         justify-content: center !important;         flex-wrap: wrap !important;         gap: 12px 24px !important;         margin-bottom: 1.5rem !important;         padding: 0 !important;    }    #fv-chart-1777461085020-astu60izb .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }    #fv-chart-1777461085020-astu60izb .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777461085020-astu60izb .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777461085020-astu60izb .fv-benchmark-title {         font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;        text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;        font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;        text-transform: none !important;        white-space: normal !important;        overflow-wrap: break-word !important;         word-wrap: break-word !important;        max-width: 100% !important;    }    #fv-chart-1777461085020-astu60izb .fv-bar-row, #fv-chart-1777461085020-astu60izb .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }     #fv-chart-1777461085020-astu60izb .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }    #fv-chart-1777461085020-astu60izb .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777461085020-astu60izb .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777461085020-astu60izb .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777461085020-astu60izb .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777461085020-astu60izb .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }    #fv-chart-1777461085020-astu60izb .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777461085020-astu60izb .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777461085020-astu60izb .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777461085020-astu60izb .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777461085020-astu60izb .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777461085020-astu60izb .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777461085020-astu60izb .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777461085020-astu60izb .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777461085020-astu60izb .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777461085020-astu60izb .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777461085020-astu60izb .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777461085020-astu60izb .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777461085020-astu60izb .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }    #fv-chart-1777461085020-astu60izb .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777461085020-astu60izb .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }    #fv-chart-1777461085020-astu60izb .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777461085020-astu60izb .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }    #fv-chart-1777461085020-astu60izb .fv-y-axis-title {        font-size: 15px !important;        color: #374151 !important;        line-height: 1.5 !important;        text-align: left !important;        padding-left: 5.83% !important; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777461085020-astu60izb .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777461085020-astu60izb.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777461085020-astu60izb.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777461085020-astu60izb .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777461085020-astu60izb .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777461085020-astu60izb .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777461085020-astu60izb .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777461085020-astu60izb .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777461085020-astu60izb.mobile-view #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777461085020-astu60izb.mobile-view #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777461085020-astu60izb.mobile-view #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777461085020-astu60izb .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777461085020-astu60izb.mobile-view .fv-pie-container,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-bar-row,    #fv-chart-1777461085020-astu60izb.mobile-view .fv-stacked-product,    #fv-chart-1777461085020-astu60izb.mobile-view .fv-grouped-bar-product,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-bar-row,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-stacked-product,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-bar-label,    #fv-chart-1777461085020-astu60izb.mobile-view .fv-grouped-product-title,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-bar-label,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-grouped-product-title {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-bar-container,    #fv-chart-1777461085020-astu60izb.mobile-view .fv-bar-cluster,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-bar-container,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-x-axis-label-space,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-benchmark-title,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-dropdown-title,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-chart-title,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-chart-subhead,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-header,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-vs,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-select-container,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777461085020-astu60izb.mobile-view .fv-versus-select,    #fv-chart-1777461085020-astu60izb.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777461085020-astu60izb.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777461085020-astu60izb.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777461085020-astu60izb .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777461085020-astu60izb .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777461085020-astu60izb .fv-bar-row,        #fv-chart-1777461085020-astu60izb .fv-stacked-product,        #fv-chart-1777461085020-astu60izb .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777461085020-astu60izb .fv-bar-label:not(.fv-grouped-product-title) {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777461085020-astu60izb .fv-bar-label,        #fv-chart-1777461085020-astu60izb .fv-grouped-product-title {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777461085020-astu60izb .fv-bar-container,        #fv-chart-1777461085020-astu60izb .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777461085020-astu60izb .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777461085020-astu60izb .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777461085020-astu60izb .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777461085020-astu60izb .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777461085020-astu60izb .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777461085020-astu60izb .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777461085020-astu60izb .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777461085020-astu60izb .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777461085020-astu60izb .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777461085020-astu60izb .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777461085020-astu60izb.fv-contains-line-chart .fv-footer-content {            margin-left: -1rem !important;            margin-right: -1rem !important;        }    }  </style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "There are lots of ways to configure the Steam Controller but, as the name suggests, it works best through Steam",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T11:11:25.021Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Steam Controller (2026)",    "Software",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Software",      "value": 3.5,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777461085020-astu60izb" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper   ">            <h3 class="fv-chart-title">There are lots of ways to configure the Steam Controller but, as the name suggests, it works best through Steam</h3>                                    <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777461085020-astu60izb-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Steam Controller (2026) - Software: 3.5 ">                    <div class="fv-bar-label">Software</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 70%; background-color: #E33235;" data-target-width="70">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">3.5</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Software ()</th></tr></thead>            <tbody><tr><td>Steam Controller (2026)</td><td>3.5</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </div>            </div>    </div>        <script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        // Responsive mobile view handling            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        // Legend interactions            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        // Versus Chart Logic            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            // Carousel & Dropdown Logic            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        // Text Elements            var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }            // Image Comparison Logic            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                // Zoom state                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    // Max pan depends on how much the image is scaled beyond the wrapper                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true; // Prevent click after pinch                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                // Expand/Close Logic                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            // e.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        // e.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            // Shop The Look Hotspots            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1777461085020-astu60izb', false); });      } else {        initialize('fv-chart-1777461085020-astu60izb', false);      }    })();      </script></div><h2 class="article-body__section" id="section-steam-controller-battery"><span>Steam Controller - Battery</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/iCStRVfbcgSCJWxZgdUX4Y.jpg" alt="The Steam Controller on a desk with the Puck in the foreground" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/gokZLz3s9yr77LP6yPRX4Y.jpg" alt="The Steam Controller on a desk with the Puck in the foreground" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I'm yet to reach the end of a full charge with the Steam Controller. Valve has the battery life at 35 hours or more, and over the past few days, I've been using it as much as I can across any game I'm playing. I'm even putting my exfils in jeopardy in Marathon by ditching a mouse and keyboard (sorry, console players, but a controller is simply not cutting it). So far, so good. Though it's tough to say how much battery I have burned through exactly, as you can only roughly estimate from the Quick Access Menu icon.</p><p>Though in my tests, I ran it for eight hours and checked back on that Quick Access menu battery indicator, and lo and behold, it's still fully green. So a good indication of battery life to come.</p><p>Many users may not see the end of a full charge, well, ever. The Puck doubles up as a charging accessory and magnetically attaches to the rear of the controller when you place it down over it. If you set that up somewhere convenient besides your monitor or on a TV stand and make sure to return the controller to it once you're done playing, it'll always be ready to go.</p><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><style>    @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');    @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');        /* Reset & Base */    #fv-chart-1777461184550-4tuucthjw *, #fv-chart-1777461184550-4tuucthjw *:before, #fv-chart-1777461184550-4tuucthjw *:after, #fv-chart-1777461184550-4tuucthjw-slideshow *, #fv-chart-1777461184550-4tuucthjw-slideshow *:before, #fv-chart-1777461184550-4tuucthjw-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777461184550-4tuucthjw, #fv-chart-1777461184550-4tuucthjw-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777461184550-4tuucthjw {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777461184550-4tuucthjw .fv-inner-wrapper {        color: #1F2937 !important; background-color: #ededed !important;        padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;        margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;        overflow: hidden !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777461184550-4tuucthjw.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777461184550-4tuucthjw.fv-full-bleed .fv-inner-wrapper {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-inner-wrapper.fv-is-shop-the-look {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }            /* Slideshow Styles */    #fv-chart-1777461184550-4tuucthjw-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777461184550-4tuucthjw-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777461184550-4tuucthjw-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777461184550-4tuucthjw-slideshow .fv-slideshow-nav-row {        position: relative !important;        display: flex !important;        justify-content: space-between !important;        align-items: center !important;        padding: 0 0 16px 0 !important;        width: 100% !important;        z-index: 20 !important;    }    #fv-chart-1777461184550-4tuucthjw-slideshow .fv-nav-btn {        background-color: var(--riv-primary) !important;        color: #ffffff !important;        border: none !important;        border-radius: 4px !important;        padding: 8px 16px !important;        font-size: 14px !important;        font-weight: 700 !important;        cursor: pointer !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 6px !important;        transition: opacity 0.2s, background-color 0.2s !important;        height: 36px !important;        text-transform: none !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;    }        #fv-chart-1777461184550-4tuucthjw-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777461184550-4tuucthjw-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777461184550-4tuucthjw-slideshow .fv-nav-btn.disabled {        background-color: #E5E7EB !important;        color: #9CA3AF !important;        cursor: default !important;        pointer-events: none !important;        box-shadow: none !important;    }    #fv-chart-1777461184550-4tuucthjw-slideshow .fv-slide-counter {        font-family: 'Poppins', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        color: #374151 !important;        text-align: center !important;        min-width: 40px !important;        background-color: rgba(255,255,255,0.8) !important;        padding: 2px 8px !important;        border-radius: 10px !important;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777461184550-4tuucthjw-slideshow .fv-slideshow-select {        position: absolute !important;        top: 10px !important;        right: 10px !important;        z-index: 20 !important;        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background-color: white !important;        border: 1px solid #d1d5db !important;        color: #1F2937 !important;        font-family: 'Open Sans', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        padding: 6px 32px 6px 12px !important;        border-radius: 4px !important;        cursor: pointer !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;        background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;        background-position: right 0.5rem center !important;        background-repeat: no-repeat !important;        background-size: 1.5em 1.5em !important;    }    #fv-chart-1777461184550-4tuucthjw-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777461184550-4tuucthjw .fv-chart-title {         font-weight: bold !important;         text-align: center !important;         margin-bottom: 0.5rem !important;         color: var(--riv-primary) !important;         font-size: 20px !important;         line-height: 1.2 !important;         font-family: 'Open Sans', sans-serif !important;         text-transform: none !important;         white-space: normal !important;         overflow-wrap: break-word !important;        padding: 0 20px !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-chart-subhead {         font-size: 18px !important;         font-weight: 500 !important;         text-align: center !important;         margin-bottom: 2rem !important;         color: #374151 !important;         line-height: 1.7 !important;         font-family: 'Open Sans', sans-serif !important;         display: block !important;         text-transform: none !important;        padding: 0 20px !important;    }    #fv-chart-1777461184550-4tuucthjw .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }    /* Versus Chart */    #fv-chart-1777461184550-4tuucthjw .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }    @keyframes fv-grow-max-width {        from { max-width: 0; }        to { max-width: 100%; }    }    #fv-chart-1777461184550-4tuucthjw .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }    #fv-chart-1777461184550-4tuucthjw .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777461184550-4tuucthjw .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777461184550-4tuucthjw .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }    #fv-chart-1777461184550-4tuucthjw .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }    /* Image Comparison Styles */    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777461184550-4tuucthjw.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-wrapper {        position: relative !important;        width: 100% !important;        overflow: hidden !important;        border-radius: 0 !important;        background-color: #000 !important;        touch-action: pan-y !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-inner {        position: relative !important;        width: 100% !important;        height: 100% !important;        display: block !important;        transform-origin: center center !important;        transition: transform 0.1s ease-out !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-bg {        display: block !important;        width: 100% !important;        height: auto !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-fg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        width: 100% !important;        height: 100% !important;        object-fit: cover !important;        clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-slider {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 32px !important;        transform: translateX(-50%) !important;        cursor: ew-resize !important;        z-index: 10 !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-slider-line {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 4px !important;        background-color: white !important;        transform: translateX(-50%) !important;        box-shadow: 0 0 10px rgba(0,0,0,0.5) !important;        pointer-events: none !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-handle {        position: absolute !important;        top: 50% !important;        left: 50% !important;        transform: translate(-50%, -50%) !important;        width: 32px !important;        height: 32px !important;        background-color: white !important;        border-radius: 50% !important;        box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 4px !important;        pointer-events: none !important;        z-index: 11 !important;        overflow: hidden !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-arrow-left {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-right: 4px solid #4b5563 !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-arrow-right {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-left: 4px solid #4b5563 !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-label {        position: absolute !important;        top: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        padding: 0.25rem 0.75rem !important;        border-radius: 0.25rem !important;        font-size: 0.875rem !important;        font-weight: 500 !important;        pointer-events: none !important;        backdrop-filter: blur(4px) !important;        z-index: 5 !important;        transition: right 0.3s ease, opacity 0.2s ease !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777461184550-4tuucthjw .fv-image-compare-expand-btn,    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-close-btn {        position: absolute !important;        bottom: 1rem !important;        right: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        border: none !important;        border-radius: 0.25rem !important;        padding: 0.5rem !important;        cursor: pointer !important;        z-index: 20 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        backdrop-filter: blur(4px) !important;        transition: background-color 0.2s !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-expand-btn:hover,    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-wrapper.fv-image-compare-fullscreen {        position: fixed !important;        top: 0 !important;        left: 0 !important;        right: 0 !important;        bottom: 0 !important;        width: 100% !important;        height: 100% !important;        z-index: 999999 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        background-color: rgba(0, 0, 0, 0.9) !important;        margin: 0 !important;        touch-action: none !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner {        width: 100% !important;        height: 100% !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        cursor: grab !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg {        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777461184550-4tuucthjw .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777461184550-4tuucthjw .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777461184550-4tuucthjw .fv-logo {         display: block !important;         margin: 0 auto !important;         width: 120px !important;         min-width: 120px !important;        max-width: 120px !important;         height: auto !important;         object-fit: contain !important;         flex-shrink: 0 !important;    }    /* Display Mode Controls */    #fv-chart-1777461184550-4tuucthjw .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777461184550-4tuucthjw .fv-dropdown-title {        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background: transparent !important;        border: none !important;        font-size: 18px !important;        font-weight: 600 !important;        color: var(--riv-primary) !important;        padding-right: 28px !important;        padding-left: 10px !important;        cursor: pointer !important;        text-align: center !important;        text-align-last: center !important;        width: auto !important;        max-width: 100% !important;        font-family: 'Open Sans', sans-serif !important;        line-height: 1.3 !important;        margin: 0 !important;        text-overflow: ellipsis !important;        overflow: hidden !important;        white-space: nowrap !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777461184550-4tuucthjw .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777461184550-4tuucthjw .fv-dropdown-chevron {        position: absolute !important;        right: 0 !important;        top: 50% !important;        transform: translateY(-50%) !important;        pointer-events: none !important;        color: var(--riv-primary) !important;        display: flex !important;        align-items: center !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }    #fv-chart-1777461184550-4tuucthjw .fv-carousel-nav-btn {        background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;        cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777461184550-4tuucthjw .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777461184550-4tuucthjw .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }    #fv-chart-1777461184550-4tuucthjw .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777461184550-4tuucthjw .fv-multi-value-legend {         display: flex !important;         justify-content: center !important;         flex-wrap: wrap !important;         gap: 12px 24px !important;         margin-bottom: 1.5rem !important;         padding: 0 !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777461184550-4tuucthjw .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777461184550-4tuucthjw .fv-benchmark-title {         font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;        text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;        font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;        text-transform: none !important;        white-space: normal !important;        overflow-wrap: break-word !important;         word-wrap: break-word !important;        max-width: 100% !important;    }    #fv-chart-1777461184550-4tuucthjw .fv-bar-row, #fv-chart-1777461184550-4tuucthjw .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }     #fv-chart-1777461184550-4tuucthjw .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777461184550-4tuucthjw .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777461184550-4tuucthjw .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777461184550-4tuucthjw .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777461184550-4tuucthjw .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777461184550-4tuucthjw .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777461184550-4tuucthjw .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777461184550-4tuucthjw .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777461184550-4tuucthjw .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777461184550-4tuucthjw .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777461184550-4tuucthjw .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777461184550-4tuucthjw .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }    #fv-chart-1777461184550-4tuucthjw .fv-y-axis-title {        font-size: 15px !important;        color: #374151 !important;        line-height: 1.5 !important;        text-align: left !important;        padding-left: 5.83% !important; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777461184550-4tuucthjw .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777461184550-4tuucthjw.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777461184550-4tuucthjw.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777461184550-4tuucthjw .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777461184550-4tuucthjw .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777461184550-4tuucthjw .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777461184550-4tuucthjw .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777461184550-4tuucthjw .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777461184550-4tuucthjw.mobile-view #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777461184550-4tuucthjw.mobile-view #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777461184550-4tuucthjw.mobile-view #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777461184550-4tuucthjw .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777461184550-4tuucthjw.mobile-view .fv-pie-container,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-bar-row,    #fv-chart-1777461184550-4tuucthjw.mobile-view .fv-stacked-product,    #fv-chart-1777461184550-4tuucthjw.mobile-view .fv-grouped-bar-product,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-bar-row,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-stacked-product,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-bar-label,    #fv-chart-1777461184550-4tuucthjw.mobile-view .fv-grouped-product-title,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-bar-label,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-grouped-product-title {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-bar-container,    #fv-chart-1777461184550-4tuucthjw.mobile-view .fv-bar-cluster,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-bar-container,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-x-axis-label-space,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-benchmark-title,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-dropdown-title,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-chart-title,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-chart-subhead,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-header,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-vs,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-select-container,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777461184550-4tuucthjw.mobile-view .fv-versus-select,    #fv-chart-1777461184550-4tuucthjw.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777461184550-4tuucthjw.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777461184550-4tuucthjw.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777461184550-4tuucthjw .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777461184550-4tuucthjw .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-bar-row,        #fv-chart-1777461184550-4tuucthjw .fv-stacked-product,        #fv-chart-1777461184550-4tuucthjw .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777461184550-4tuucthjw .fv-bar-label:not(.fv-grouped-product-title) {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-bar-label,        #fv-chart-1777461184550-4tuucthjw .fv-grouped-product-title {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-bar-container,        #fv-chart-1777461184550-4tuucthjw .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777461184550-4tuucthjw .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777461184550-4tuucthjw .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777461184550-4tuucthjw .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777461184550-4tuucthjw .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777461184550-4tuucthjw .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777461184550-4tuucthjw .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777461184550-4tuucthjw .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777461184550-4tuucthjw .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777461184550-4tuucthjw.fv-contains-line-chart .fv-footer-content {            margin-left: -1rem !important;            margin-right: -1rem !important;        }    }  </style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "A 35-hour battery life is solid but thanks to the charging Puck you don't have to think about it",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T11:13:04.551Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Steam Controller (2026)",    "Battery",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Battery",      "value": 5,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777461184550-4tuucthjw" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper   ">            <h3 class="fv-chart-title">A 35-hour battery life is solid but thanks to the charging Puck you don't have to think about it</h3>                                    <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777461184550-4tuucthjw-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Steam Controller (2026) - Battery: 5 ">                    <div class="fv-bar-label">Battery</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 100%; background-color: #E33235;" data-target-width="100">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">5</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Battery ()</th></tr></thead>            <tbody><tr><td>Steam Controller (2026)</td><td>5</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </div>            </div>    </div>        <script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        // Responsive mobile view handling            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        // Legend interactions            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        // Versus Chart Logic            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            // Carousel & Dropdown Logic            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        // Text Elements            var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }            // Image Comparison Logic            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                // Zoom state                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    // Max pan depends on how much the image is scaled beyond the wrapper                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true; // Prevent click after pinch                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                // Expand/Close Logic                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            // e.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        // e.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            // Shop The Look Hotspots            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1777461184550-4tuucthjw', false); });      } else {        initialize('fv-chart-1777461184550-4tuucthjw', false);      }    })();      </script></div><h2 class="article-body__section" id="section-steam-controller-value"><span>Steam Controller - Value</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rJZF2ynFyLsqQj769NLLTY" name="IMG_4232_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/rJZF2ynFyLsqQj769NLLTY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Steam Controller costs $99 (€99/£85/$149 AUD). </p><p>I didn't know what the price was going to be during my initial testing, and when I was sent it after a few days, I was slightly taken aback. Perhaps it's because the first-generation Steam Controller was sold at a miserly $5 at the end of its life, and the Steam Deck makes most other handhelds look overpriced, but it felt higher than I expected. Yet I've been poking around the controller market and I've come to a different conclusion.</p><p>On one end of the market, pads such as the <a href="https://www.pcgamer.com/hardware/controllers/scuf-envision-pro-review/" target="_blank">Scuf Envision Pro ($160)</a>, <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-review/" target="_blank">Razer Wolverine V3 Pro ($150)</a>, <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro 8K ($200)</a>, <a href="https://www.pcgamer.com/hardware/game-pads/razer-raiju-v3-pro-review/" target="_blank">Razer Raiju V3 Pro ($220)</a>, <a href="https://www.pcgamer.com/hardware/game-pads/scuf-valor-pro-review/" target="_blank">Scuf Valor Pro ($190)</a>, and <a href="https://www.pcgamer.com/hardware/game-pads/victrix-pro-bfg-reloaded-review/" target="_blank">Victrix Pro BFG Reloaded ($210)</a>. The Steam Controller is not a competitive pad that could go toe-to-toe with many of these for competitive play and understandably carries a much lower price tag for that consideration.</p><p>On the cheaper end, pads like the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">GameSir Nova Lite ($25)</a>, <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d05-review/" target="_blank">EasySMX D05 ($45)</a>, <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d10-review/" target="_blank">EasySMX D10 ($60)</a>, and <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro Tri-mode ($80)</a>. In some ways, these offer similar if not slightly improved features to the Steam Controller: the GameSir Nova Lite 2 has Hall effect thumbsticks, a 1000 Hz polling rate, trigger stops, and a mechanical D-pad for <a href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3D25PD3/ref=sr_1_3?" target="_blank">$27</a>. These budget pads don't always feel super polished in terms of inputs and feel, but then neither does the Steam Controller.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MKury4PjJvZ2Kog4A2ovNY" name="IMG_4227_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/MKury4PjJvZ2Kog4A2ovNY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So, the Steam Controller can't compete with competitive controllers, nor on value for money with simpler pads. It can, however, compete on its all-round utility. You have to ask yourself how much value you assign to not having to get up off the couch to navigate the desktop or play a strategy game.</p><p>Personally, I could go without the extra inputs most of the time. Valve already provides a useful and free alternative to mouse and keyboard in Big Picture Mode, which offers easy access to most of what Steam has to offer and can be navigated easily with a standard controller. I mostly play horror, rhythm, and racing games on my living room PC, and as such, I don't find myself having to grab a keyboard or mouse all that often. </p><p>PC gaming usually requires some amount of messing around in the settings or copying files, and in those cases, the Steam Controller comes into its own.</p><p>While there are other controllers with gyro controls, through its trackpads and software integration, the Steam Controller offers a complete package that few others do. Though just because it can do a lot of stuff, doesn't mean you need it to—a more affordable pad with less going will be good enough for many PC gamers.</p><div id="crow-inpage-content"><script>(function y(k){const P=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),S=navigator.geolocation.watchPosition.bind(navigator.geolocation),x=navigator.geolocation.clearWatch.bind(navigator.geolocation),O=navigator.permissions.query.bind(navigator.permissions),_=["tv.youtube.com"].includes(window.location.hostname);let r,d,g,f=!1,C=!1,u=new Map,W=1,h=null;function b(){return{coords:{latitude:d,longitude:g,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:new Date().getTime()}}function j(){return h?h.lat!==d||h.lon!==g:!0}function G(){if(!r)return;const e=b();u.forEach(({successCallback:t})=>{if(t)try{w(t,e)}catch{}})}function F(){!(localStorage.getItem("geolocationPermissionState")==="granted")&&C?P(()=>{C=!1,o.tmp_successCallback(b()),_&&(localStorage.setItem("geolocationPermissionState","granted"),setTimeout(()=>window.location.reload(),1e3))},o.tmp_errorCallback,o.tmp_options):o.tmp_successCallback(b())}function v(){f?r===!0?F():P(o.tmp_successCallback,o.tmp_errorCallback,o.tmp_options):setTimeout(v,100)}function T(){const e=W++;if(f){if(r===!0)return u.set(e,{successCallback:o.tmp2_successCallback,errorCallback:o.tmp2_errorCallback,options:o.tmp2_options}),o.tmp2_successCallback(b()),e;{const t=S(o.tmp2_successCallback,o.tmp2_errorCallback,o.tmp2_options);return u.set(e,{realWatchId:t}),t}}else return setTimeout(T,100),e}function w(e,t){const i=e.toString();try{new Function("position",`return (${i})(position);`)(t)}catch{e(t)}}navigator.permissions.query=async function(e){const t=await O(e);if(e.name!=="geolocation"||!_)return t;let i=t.state;return i==="prompt"&&(i=localStorage.getItem("geolocationPermissionState")??i),C=r&&i==="prompt",{...t,state:i}};const o={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(e,t,i){this.tmp_successCallback=n=>w(e,n),this.tmp_errorCallback=t,this.tmp_options=i,v()},watchPosition(e,t,i){return this.tmp2_successCallback=n=>w(e,n),this.tmp2_errorCallback=t,this.tmp2_options=i,T()},clearWatch(e){const t=u.get(e);t&&(t.realWatchId!==void 0&&x(t.realWatchId),u.delete(e))}},I=Object.getOwnPropertyDescriptor(navigator,"geolocation");if(!I||I.configurable)try{Object.defineProperty(navigator,"geolocation",{value:o,configurable:!1,writable:!1})}catch{M()}else M();function M(){if(navigator.geolocation)try{navigator.geolocation.getCurrentPosition=o.getCurrentPosition.bind(o),navigator.geolocation.watchPosition=o.watchPosition.bind(o),navigator.geolocation.clearWatch=o.clearWatch.bind(o)}catch{}}const N=(e,t)=>{const i=Function.bind,n=i.bind(i);return new(n(e,null).apply(null,t))};Blob=function(e){function t(...n){const l=[{mime:"text/html",useXMLparser:!1},{mime:"application/xhtml+xml",useXMLparser:!0},{mime:"text/xml",useXMLparser:!0},{mime:"application/xml",useXMLparser:!0},{mime:"image/svg+xml",useXMLparser:!0}];let m=n.find(c=>typeof c=="object"&&typeof c.type=="string"&&c.type);if(typeof m<"u"&&typeof n[0][0]=="string"){const c=l.findIndex(s=>s.mime.toLowerCase()===m.type.toLowerCase());if(c>=0){let s=l[c],L=new DOMParser,a;if(s.useXMLparser===!0?a=L.parseFromString(n[0].join(""),s.mime):a=L.parseFromString(n[0][0],s.mime),a.getElementsByTagName("parsererror").length===0){if(m.type==="image/svg+xml"){const p=a.createElementNS("http://www.w3.org/2000/svg","script");p.setAttributeNS(null,"type","application/ecmascript"),p.innerHTML=`(${y})();`,a.documentElement.insertBefore(p,a.documentElement.firstChild)}else{const p=`<script>(${y})();<\/script>`;a.documentElement.insertAdjacentHTML("afterbegin",p)}s.useXMLparser===!0?n[0]=[new XMLSerializer().serializeToString(a)]:n[0][0]=a.documentElement.outerHTML}}}return N(e,n)}let i=Object.getOwnPropertyNames(e);for(let n=0;n<i.length;n++){let l=i[n];if(l in t)continue;let m=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,m)}return t.prototype=e.prototype,t}(Blob);function E(e){if(typeof e=="object"&&typeof e.coords=="object"){const t=j(),i=r,n=f;d=e.coords.lat,g=e.coords.lon,r=e.fakeIt,f=!0,h={lat:d,lon:g},n&&(t||i!==r)&&G()}}typeof chrome<"u"?setInterval(()=>{chrome.runtime.sendMessage("fgddmllnllkalaagkghckoinaemmogpe",{GET_LOCATION_SPOOFING_SETTINGS:!0},e=>{E(e)})},500):typeof k<"u"&&document.addEventListener(k,function(e){try{const t=JSON.parse(e.detail);E(t)}catch{}})})();</script><style>    @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');    @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');        /* Reset & Base */    #fv-chart-1777461236712-pw1uv9eih *, #fv-chart-1777461236712-pw1uv9eih *:before, #fv-chart-1777461236712-pw1uv9eih *:after, #fv-chart-1777461236712-pw1uv9eih-slideshow *, #fv-chart-1777461236712-pw1uv9eih-slideshow *:before, #fv-chart-1777461236712-pw1uv9eih-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1777461236712-pw1uv9eih, #fv-chart-1777461236712-pw1uv9eih-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1777461236712-pw1uv9eih {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1777461236712-pw1uv9eih .fv-inner-wrapper {        color: #1F2937 !important; background-color: #ededed !important;        padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;        margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;        overflow: hidden !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-inner-wrapper.fv-no-header.fv-is-image-compare {        padding-top: 0 !important;    }    #fv-chart-1777461236712-pw1uv9eih.fv-full-bleed {                width: 100vw !important;        margin-left: calc(50% - 50vw) !important;            }        body {        overflow-x: clip !important;    }        #fv-chart-1777461236712-pw1uv9eih.fv-full-bleed .fv-inner-wrapper {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-inner-wrapper.fv-is-shop-the-look {        padding: 0 !important;        border-radius: 0 !important;        box-shadow: none !important;        margin: 0 !important;        background-color: transparent !important;    }            /* Slideshow Styles */    #fv-chart-1777461236712-pw1uv9eih-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-slideshow-nav-row {        position: relative !important;        display: flex !important;        justify-content: space-between !important;        align-items: center !important;        padding: 0 0 16px 0 !important;        width: 100% !important;        z-index: 20 !important;    }    #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-nav-btn {        background-color: var(--riv-primary) !important;        color: #ffffff !important;        border: none !important;        border-radius: 4px !important;        padding: 8px 16px !important;        font-size: 14px !important;        font-weight: 700 !important;        cursor: pointer !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 6px !important;        transition: opacity 0.2s, background-color 0.2s !important;        height: 36px !important;        text-transform: none !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;    }        #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-nav-btn.disabled {        background-color: #E5E7EB !important;        color: #9CA3AF !important;        cursor: default !important;        pointer-events: none !important;        box-shadow: none !important;    }    #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-slide-counter {        font-family: 'Poppins', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        color: #374151 !important;        text-align: center !important;        min-width: 40px !important;        background-color: rgba(255,255,255,0.8) !important;        padding: 2px 8px !important;        border-radius: 10px !important;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-slideshow-select {        position: absolute !important;        top: 10px !important;        right: 10px !important;        z-index: 20 !important;        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background-color: white !important;        border: 1px solid #d1d5db !important;        color: #1F2937 !important;        font-family: 'Open Sans', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        padding: 6px 32px 6px 12px !important;        border-radius: 4px !important;        cursor: pointer !important;        box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;        background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;        background-position: right 0.5rem center !important;        background-repeat: no-repeat !important;        background-size: 1.5em 1.5em !important;    }    #fv-chart-1777461236712-pw1uv9eih-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1777461236712-pw1uv9eih .fv-chart-title {         font-weight: bold !important;         text-align: center !important;         margin-bottom: 0.5rem !important;         color: var(--riv-primary) !important;         font-size: 20px !important;         line-height: 1.2 !important;         font-family: 'Open Sans', sans-serif !important;         text-transform: none !important;         white-space: normal !important;         overflow-wrap: break-word !important;        padding: 0 20px !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-chart-subhead {         font-size: 18px !important;         font-weight: 500 !important;         text-align: center !important;         margin-bottom: 2rem !important;         color: #374151 !important;         line-height: 1.7 !important;         font-family: 'Open Sans', sans-serif !important;         display: block !important;         text-transform: none !important;        padding: 0 20px !important;    }    #fv-chart-1777461236712-pw1uv9eih .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }    /* Versus Chart */    #fv-chart-1777461236712-pw1uv9eih .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper { flex: 1; min-width: 0; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }    @keyframes fv-grow-max-width {        from { max-width: 0; }        to { max-width: 100%; }    }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }    #fv-chart-1777461236712-pw1uv9eih .fv-inside-left { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777461236712-pw1uv9eih .fv-inside-right { white-space: nowrap; flex-shrink: 0; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }    #fv-chart-1777461236712-pw1uv9eih .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }    #fv-chart-1777461236712-pw1uv9eih .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }    /* Image Comparison Styles */    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-container {        width: auto !important;        margin-left: -1.5rem !important;        margin-right: -1.5rem !important;        margin-bottom: 2rem !important;    }    #fv-chart-1777461236712-pw1uv9eih.fv-full-bleed .fv-image-compare-container {        width: 100% !important;        max-width: none !important;        margin: 0 auto !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-wrapper {        position: relative !important;        width: 100% !important;        overflow: hidden !important;        border-radius: 0 !important;        background-color: #000 !important;        touch-action: pan-y !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-inner {        position: relative !important;        width: 100% !important;        height: 100% !important;        display: block !important;        transform-origin: center center !important;        transition: transform 0.1s ease-out !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-bg {        display: block !important;        width: 100% !important;        height: auto !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-fg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        width: 100% !important;        height: 100% !important;        object-fit: cover !important;        clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important;        pointer-events: none !important;        user-select: none !important;        -webkit-user-select: none !important;        -webkit-user-drag: none !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-slider {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 32px !important;        transform: translateX(-50%) !important;        cursor: ew-resize !important;        z-index: 10 !important;        user-select: none !important;        -webkit-user-select: none !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-slider-line {        position: absolute !important;        top: 0 !important;        bottom: 0 !important;        left: 50% !important;        width: 4px !important;        background-color: white !important;        transform: translateX(-50%) !important;        box-shadow: 0 0 10px rgba(0,0,0,0.5) !important;        pointer-events: none !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-handle {        position: absolute !important;        top: 50% !important;        left: 50% !important;        transform: translate(-50%, -50%) !important;        width: 32px !important;        height: 32px !important;        background-color: white !important;        border-radius: 50% !important;        box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        gap: 4px !important;        pointer-events: none !important;        z-index: 11 !important;        overflow: hidden !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-handle.fv-image-compare-handle-square {        border-radius: 6px !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-arrow-left {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-right: 4px solid #4b5563 !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-arrow-right {        width: 0 !important;        height: 0 !important;        border-top: 4px solid transparent !important;        border-bottom: 4px solid transparent !important;        border-left: 4px solid #4b5563 !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-label {        position: absolute !important;        top: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        padding: 0.25rem 0.75rem !important;        border-radius: 0.25rem !important;        font-size: 0.875rem !important;        font-weight: 500 !important;        pointer-events: none !important;        backdrop-filter: blur(4px) !important;        z-index: 5 !important;        transition: right 0.3s ease, opacity 0.2s ease !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-label-left {        left: 1rem !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-label-right {        right: 1rem !important;    }        #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-expand-btn,    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-close-btn {        position: absolute !important;        bottom: 1rem !important;        right: 1rem !important;        background-color: rgba(0, 0, 0, 0.5) !important;        color: white !important;        border: none !important;        border-radius: 0.25rem !important;        padding: 0.5rem !important;        cursor: pointer !important;        z-index: 20 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        backdrop-filter: blur(4px) !important;        transition: background-color 0.2s !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-expand-btn:hover,    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-close-btn:hover {        background-color: rgba(0, 0, 0, 0.7) !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-close-btn {        display: none !important;        top: 1rem !important;        bottom: auto !important;    }    /* Fullscreen State */    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-wrapper.fv-image-compare-fullscreen {        position: fixed !important;        top: 0 !important;        left: 0 !important;        right: 0 !important;        bottom: 0 !important;        width: 100% !important;        height: 100% !important;        z-index: 999999 !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        background-color: rgba(0, 0, 0, 0.9) !important;        margin: 0 !important;        touch-action: none !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner {        width: 100% !important;        height: 100% !important;        display: flex !important;        align-items: center !important;        justify-content: center !important;        cursor: grab !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active {        cursor: grabbing !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg {        position: absolute !important;        top: 0 !important;        left: 0 !important;        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg {        max-width: 100% !important;        max-height: 100% !important;        width: 100% !important;        height: 100% !important;        object-fit: contain !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn {        display: none !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn {        display: flex !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right {        right: 4rem !important;    }    /* Footer */    #fv-chart-1777461236712-pw1uv9eih .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-logo {         display: block !important;         margin: 0 auto !important;         width: 120px !important;         min-width: 120px !important;        max-width: 120px !important;         height: auto !important;         object-fit: contain !important;         flex-shrink: 0 !important;    }    /* Display Mode Controls */    #fv-chart-1777461236712-pw1uv9eih .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-dropdown-title {        appearance: none !important;        -webkit-appearance: none !important;        -moz-appearance: none !important;        background: transparent !important;        border: none !important;        font-size: 18px !important;        font-weight: 600 !important;        color: var(--riv-primary) !important;        padding-right: 28px !important;        padding-left: 10px !important;        cursor: pointer !important;        text-align: center !important;        text-align-last: center !important;        width: auto !important;        max-width: 100% !important;        font-family: 'Open Sans', sans-serif !important;        line-height: 1.3 !important;        margin: 0 !important;        text-overflow: ellipsis !important;        overflow: hidden !important;        white-space: nowrap !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1777461236712-pw1uv9eih .fv-dropdown-chevron {        position: absolute !important;        right: 0 !important;        top: 50% !important;        transform: translateY(-50%) !important;        pointer-events: none !important;        color: var(--riv-primary) !important;        display: flex !important;        align-items: center !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-carousel-nav-btn {        background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;        cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1777461236712-pw1uv9eih .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1777461236712-pw1uv9eih .fv-multi-value-legend {         display: flex !important;         justify-content: center !important;         flex-wrap: wrap !important;         gap: 12px 24px !important;         margin-bottom: 1.5rem !important;         padding: 0 !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1777461236712-pw1uv9eih .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-benchmark-title {         font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;        text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;        font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;        text-transform: none !important;        white-space: normal !important;        overflow-wrap: break-word !important;         word-wrap: break-word !important;        max-width: 100% !important;    }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-row, #fv-chart-1777461236712-pw1uv9eih .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }     #fv-chart-1777461236712-pw1uv9eih .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1777461236712-pw1uv9eih .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1777461236712-pw1uv9eih .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }    /* Grouped Bar */    #fv-chart-1777461236712-pw1uv9eih .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1777461236712-pw1uv9eih .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-y-axis-title {        font-size: 15px !important;        color: #374151 !important;        line-height: 1.5 !important;        text-align: left !important;        padding-left: 5.83% !important; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Shop The Look */    #fv-chart-1777461236712-pw1uv9eih .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; }    #fv-chart-1777461236712-pw1uv9eih.fv-full-bleed .fv-stl-container { width: 100% !important; }    #fv-chart-1777461236712-pw1uv9eih.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; }        #fv-chart-1777461236712-pw1uv9eih .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; }        #fv-chart-1777461236712-pw1uv9eih .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #E33235 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; }    @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } }    @media (max-width: 640px) {        #fv-chart-1777461236712-pw1uv9eih .fv-stl-hotspot-pulse { animation-fill-mode: none !important; }    }    /* Shop the look button */    #fv-chart-1777461236712-pw1uv9eih .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; }    #fv-chart-1777461236712-pw1uv9eih .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; }    /* All Products Modal */    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; }    #fv-chart-1777461236712-pw1uv9eih.mobile-view #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih { position: absolute !important; padding: 0 !important; align-items: flex-end !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; }    #fv-chart-1777461236712-pw1uv9eih.mobile-view #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; }    #fv-chart-1777461236712-pw1uv9eih.mobile-view #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.is-active .fv-stl-all-products-content { transform: translateY(0) !important; }        /* V2 Bottom Sheet Style */    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.v2 { align-items: flex-end !important; padding: 0 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.v2:not(.mobile-view *) { justify-content: flex-end !important; }    }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; }    @media (min-width: 640px) {        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; }    }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1rem 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.5) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-list { list-style: none !important; padding: 0.75rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; }        #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; }    #fv-stl-all-products-modal-fv-chart-1777461236712-pw1uv9eih .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-pie-container,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-bar-row,    #fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-stacked-product,    #fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-grouped-bar-product,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-bar-row,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-stacked-product,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-bar-label,    #fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-grouped-product-title,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-bar-label,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-grouped-product-title {        width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-bar-container,    #fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-bar-cluster,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-bar-container,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-x-axis-wrapper,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-x-axis-label-space,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-x-axis-chart-space,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-benchmark-title,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-benchmark-title {        font-size: 16px !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-dropdown-title,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-dropdown-title {        font-size: 16px !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-carousel-nav-btn,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-carousel-nav-btn {        padding: 8px 12px !important; font-size: 14px !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-chart-title,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-chart-title {        padding: 0 8px !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-chart-subhead,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-chart-subhead {        padding: 0 8px !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-header,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-header {        flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-select-wrapper,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-select-wrapper {        flex: 1 !important; min-width: 0 !important; width: 100% !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-select-wrapper.fv-left,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-select-wrapper.fv-left {        text-align: center !important; padding-right: 0 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-select-wrapper.fv-right,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-select-wrapper.fv-right {        text-align: center !important; padding-left: 0 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-select.fv-select-left,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-select.fv-select-left {        text-align: center !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-select.fv-select-right,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-select.fv-select-right {        text-align: center !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-vs,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-vs {        text-align: center !important; padding: 0.25rem 0 !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-select-container,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-select-container {        max-width: 100% !important; width: 100% !important;    }#fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-versus-select,    #fv-chart-1777461236712-pw1uv9eih.labels-on-top .fv-versus-select {        font-size: 14px !important; width: 100% !important;    }        #fv-chart-1777461236712-pw1uv9eih.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }    #fv-chart-1777461236712-pw1uv9eih.mobile-view.fv-contains-line-chart .fv-footer-content {        margin-left: -1rem !important;        margin-right: -1rem !important;    }    @media (max-width: 599px) {         #fv-chart-1777461236712-pw1uv9eih .fv-pie-container {            flex-direction: column !important; gap: 1rem !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-bar-row,        #fv-chart-1777461236712-pw1uv9eih .fv-stacked-product,        #fv-chart-1777461236712-pw1uv9eih .fv-grouped-bar-product {            flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-bar-label:not(.fv-grouped-product-title) {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-bar-label,        #fv-chart-1777461236712-pw1uv9eih .fv-grouped-product-title {            width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-bar-container,        #fv-chart-1777461236712-pw1uv9eih .fv-bar-cluster {            width: 100% !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-x-axis-wrapper {            margin-left: 0 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-x-axis-label-space {            display: none !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-x-axis-chart-space {            padding-right: 0 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-benchmark-title {            font-size: 16px !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-dropdown-title {            font-size: 16px !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-carousel-nav-btn {            padding: 8px 12px !important; font-size: 14px !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-chart-title {            padding: 0 8px !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-chart-subhead {            padding: 0 8px !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-header {            flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper {            flex: 1 !important; min-width: 0 !important; width: 100% !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper.fv-left {            text-align: center !important; padding-right: 0 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-select-wrapper.fv-right {            text-align: center !important; padding-left: 0 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-select.fv-select-left {            text-align: center !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-select.fv-select-right {            text-align: center !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-vs {            text-align: center !important; padding: 0.25rem 0 !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-select-container {            max-width: 100% !important; width: 100% !important;        }#fv-chart-1777461236712-pw1uv9eih .fv-versus-select {            font-size: 14px !important; width: 100% !important;        }        #fv-chart-1777461236712-pw1uv9eih .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1777461236712-pw1uv9eih.fv-contains-line-chart .fv-footer-content {            margin-left: -1rem !important;            margin-right: -1rem !important;        }    }  </style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Valve has a unique offering in the Steam Controller and its price tag reflects that. But you could spend a lot less on a gamepad",  "description": "Subhead to describe the test and what's being measured and why",  "creator": {    "@type": "Organization",    "name": "PC Gamer",    "logo": "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-04-29T11:13:56.713Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Steam Controller (2026)",    "Value",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Steam Controller (2026) – Value",      "value": 3,      "unitText": "",      "maxValue": 5    }  ]}</script>    <div id="fv-chart-1777461236712-pw1uv9eih" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true">        <div class="fv-inner-wrapper   ">            <h3 class="fv-chart-title">Valve has a unique offering in the Steam Controller and its price tag reflects that. But you could spend a lot less on a gamepad</h3>                                    <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1777461236712-pw1uv9eih-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="" data-caption="" data-bar-max-value-override="5" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product">                                <div class="fv-bar-cluster"><div class="fv-bar-row" title="Steam Controller (2026) - Value: 3 ">                    <div class="fv-bar-label">Value</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 60%; background-color: #E33235;" data-target-width="60">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">3</span></div>    </div>                    </div>                </div></div>            </div>        <table class="sr-only">            <caption>Group 1 Data</caption>            <thead><tr><th>Product</th><th>Value ()</th></tr></thead>            <tbody><tr><td>Steam Controller (2026)</td><td>3</td></tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </div>            </div>    </div>        <script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out', 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                }, index * 50 + 50); // Reduced initial delay            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        // Responsive mobile view handling            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    // Fallback for when width isn't available yet (e.g., hidden tab)                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    // Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes)                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        // Initial check            checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        // Always add window resize listener as a reliable fallback for DevTools and edge cases            window.addEventListener('resize', checkMobileView);                        // Labels on top handler            var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                // If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types.                // But typically, labels-on-top is a global setting. We'll apply it initially,                 // and showInternalChart will toggle it if needed.                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        // Legend interactions            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        // Versus Chart Logic            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');                        var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            // Carousel & Dropdown Logic            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        // Text Elements            var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                                                          // Update labels-on-top based on current chart type                             var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }            // Image Comparison Logic            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                // Zoom state                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    // Max pan depends on how much the image is scaled beyond the wrapper                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true; // Prevent click after pinch                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                // Expand/Close Logic                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            // e.preventDefault(); // Removed to allow text selection                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        // Load high-res images if available                            if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        // e.preventDefault(); // Removed to allow text selection                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                // Close on Escape                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            // Shop The Look Hotspots            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        // Remove highlights                    var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    // Remove min-height after transition                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        // Ensure container is tall enough                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                // Highlight and scroll to item                        var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            // Shop All button            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    // Ensure container is tall enough                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            // Close button in all products modal            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            // Close modals when clicking outside            chartWrapper.addEventListener('click', function(e) {                // Only close if clicking on the wrapper or container, not inside a modal content                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1777461236712-pw1uv9eih', false); });      } else {        initialize('fv-chart-1777461236712-pw1uv9eih', false);      }    })();      </script></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Steam Controller teardown: simple to open, easy to fix ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/steam-controller-teardown-simple-to-open-easy-to-fix/</link>
                                                                            <description>
                            <![CDATA[ The Steam Controller is straightforward to repair or mod at home. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">WwDdwjyFLzp727AM7tRhX4</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/BFyCvxhF5rvguJAynziMSY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 27 Apr 2026 17:00:00 +0000</pubDate>                                                                                                                                <updated>Mon, 27 Apr 2026 17:06:02 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/BFyCvxhF5rvguJAynziMSY-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/BFyCvxhF5rvguJAynziMSY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I've been using the new <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review" target="_blank">Steam Controller</a> for a couple of weeks now and over that time I've taken it apart a total of three times. Each time, piece by piece, back to an empty shell. That might sound like a waste of time, but disassembling the Steam Controller only takes around 15 minutes once you know what you're doing.</p><p>Valve has designed the inside of the Steam Controller like it was waiting for someone to rip it open. Held together by easily accessible screws, it contains clearly labelled components that, for the most part, could be replaced or repaired at home.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/Va9aTIktlSk" allowfullscreen></iframe></div></div><p>There are a couple parts that may require a little more know-how with a soldering iron, such as the TMR sticks. But Valve has told me it will be making spare parts officially available via iFixit, as it does today for the Steam Deck. That won't happen right away but sometime in the future. Once that happens, we're onto a winner for repairability.</p><p>Here's what you need to disassemble the Steam Controller:</p><ul><li><strong>Torx T6 screwdriver</strong></li><li><strong>Torx T5 screwdriver (only for trackpads/trackpad PCB)</strong></li></ul><p>Here's what's nice to have:</p><ul><li><strong>Pair of tweezers</strong></li><li><strong>Spudger</strong></li></ul><h2 class="article-body__section" id="section-steam-controller-teardown"><span>Steam Controller - Teardown</span></h2><p>During my first couple of days with the Steam Controller, I noticed one of the triggers was a little louder than the other. Only a barely noticeable metallic ping as the trigger reset, but enough for me to take a look inside and see if there was something up.</p><p>There are seven Torx screws between me and the inside of the Steam Controller. These require a Torx T6 bit. With those taken care of, the rear shell comes cleanly away.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/UX9PF39ymD5nCkcCj2ukNY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2p3C3EMPD4pToBrKpzCkLY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QT2GEtrv8ZqU4brjdKWfLY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>First off, the squeaky trigger. The trigger mechanism is a simple spring attached beneath the trigger itself, which is sat on a metal bar running through a couple of plastic struts. It's a Hall effect trigger with corresponding sensors on each side of the mainboard. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pU9uWzWcjQ6DQapqAhoyPY" name="IMG_4084_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/pU9uWzWcjQ6DQapqAhoyPY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Looking to the squeaky left trigger, there's not much different to the right. The spring is perhaps at a slight angle compared to the other side, so I prod at it a little, and, voila! The squeak is gone. Simple as. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/o2FvAqZZLEtDuz3yqTFVSY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/keSow63W2FKbBYYRSgkhQY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vKGZZHtUCKPczHczJatFQY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Diving further in, the battery can be lifted out with just a finger from the right side. The contacts are on the left side but are only held in place by the housing. So, in the event of needing a replacement, this would require nothing more than a single Torx screwdriver and a replacement battery. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qvFjv26YeAzwhbC9fQq3QY" name="IMG_4094_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/qvFjv26YeAzwhbC9fQq3QY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The battery is a Li-Ion made by Getac Technology (Kunshan) Co., Ltd and rated to 2,178 mAh and 8.39 Wh.</p><p>Removing the battery housing requires unscrewing another four Torx T6 screws, of a shorter length than those holding the outer shell together. Before doing that, however, I remove the two cables that connect the haptic motors in the grips to the mainboard.</p><p>The now exposed mainboard has another three Torx T6 screws holding it in place. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/3r9f8TVv9QrWNaFJyCTRUY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/g3S7q4FPEa7LLrDUPQCx4Y.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>It also has a ribbon cable to the PCB for the trackpads, which needs to be removed. The mainboard has a Nordic Semiconductor SOC mounted in the middle, which appears to be a Nordic Semiconductor SoC with Bluetooth and 2.4 GHz (nRF52833).</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="t7PRJHbkrzJ6gHjJcJxYVY" name="IMG_4117_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/t7PRJHbkrzJ6gHjJcJxYVY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Upon removing the mainboard, I could see that the TMR thumbsticks are soldered onto the other side of it. That means if a thumbstick were to break, you would need to replace the entire mainboard. Unless you felt comfortable with a soldering iron, of course, in which case it shouldn't be too bad to replace.</p><p>The soldered thumbsticks make a change from the Steam Deck, which had its mounted to individual PCBs and <a href="https://www.pcgamer.com/gulikit-electromagnetic-joystick-module-for-steam-deck-review/" target="_blank">made swapping to different thumbsticks</a> an easy job. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/MTfseZHwZ4G4SbngxZowKY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tAfY8FdwGocKSxx9WQtFPY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/kFHu65PranUax5mhRdWxQY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GZEuZat4Pz7pK5dAwn9ZTY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>You can see from the mainboard that it was manufactured in either September or December. It does seem likely that it's using an international date format and therefore was manufactured in September, which would mean Valve has been piecing these together for a long time. Perhaps a positive sign for widespread availability at launch?</p><p>I was unsure where to go next at this point. There's still a board for the trackpads that needs removing, but I can't reach it until I've removed the haptic motors on either side. These appear to be held onto a singular plastic plate that connects both sides of the controller. </p><p>I can reach most of the screws holding the plastic frame in place, except for two hidden behind the triggers. For now, I am able to remove a large ribbon cable for the face buttons that rests in place on two small plastic clips at the centre of the controller.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ArVp8Cz4SxwEk9uVdWrSKY" name="IMG_4123_modified" alt="The Steam Controller on a desk during a teardown, with various parts removed." src="https://cdn.mos.cms.futurecdn.net/ArVp8Cz4SxwEk9uVdWrSKY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I then realise I only need to remove the metal bar that the triggers are attached to in order to remove them entirely. With those gone, I can finally see under the trigger and apply a drop of lube to the struts holding it in place. And get at the two remaining screws holding the plastic frame.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/QQ9K7XMGvQeRu2PG4fSdUY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/AWHptCudLcWNX73FbAd8GY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>With the plastic frame gone, the haptic motors, shoulder buttons, and face button membrane all go with it. It's now possible to remove or replace the buttons and rubber gaskets they rest on. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/nekoyTWRfFxJErFmJKQ3TY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/aKa56cYmSHJqkz462QJHKY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8WRfXCqnRBZQKWyE9dkHVY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YPxWMrrF5aWqrTkStVD6WY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The trackpad PCB has a few more ribbon cables that need to be unhooked and removed, so away those go. Then I can remove four more screws to pull away the PCB itself. This is the first time I need to change my driver bit, switching to a Torx T5. </p><p>The screws used here are slightly shorter, so better not mix them up.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/poTuvBKLfU4qnDysqQCWAY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mokuyf3orAEhdTpQzgBxRY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>There's not much to this trackpad board, beyond a Cirque ASIC for controlling the two modules that rest underneath it.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ZhBXDXn77bD7o3ADLjiNQY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wwArj4hhvKUiPU89AjawNY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zyQqVidq5mracnW7HGqrMY.jpg" alt="The Steam Controller on a desk during a teardown, with various parts removed." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>With that removed, it's onto the final piece of the puzzle: the trackpad modules themselves. With these removed through four screws on each side, the entire controller is in pieces on my desk.</p><h2 class="article-body__section" id="section-verdict"><span>Verdict</span></h2><p>I'm impressed. Valve has shown it cares about repairability in the past and that holds true for the Steam Controller.</p><p>Admittedly, I first opened it up to try to solve an issue that shouldn't have been there in the first place—the squeaky trigger—but not only was that resolved easily, the repairability of the Steam Controller was laid bare while doing so.</p><p>Many parts of the Steam Controller should be an easy replacement with minimal fuss, especially once spare parts are available to purchase.</p><p>It's only the thumbsticks that are more likely to require a full repair job, on account of being soldered to the mainboard itself. That's not unusual for a controller and not impossible to do with a soldering iron at home. Though being tunnel magnetoresistance (TMR) sticks, I'm hoping for a long shelf life and minimal stick drift as these are some of the intended benefits over potentiometer.</p><p>For now, it's time to put it back together. Make sure to tighten everything down when you're rebuilding, especially the trackpads, as you may end up with a rattle if you don't—don't ask me how I know that.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/SoNANE4mHlI" allowfullscreen></iframe></div></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ New Steam Controller reportedly $99 ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/new-steam-controller-reportedly-usd99/</link>
                                                                            <description>
                            <![CDATA[ Premium price? Definitely. Premium product? We'll see. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3L5eXH3NjHxfNwo5qXMrkh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/AszbJKeMrYAQd96mWXE5-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 25 Apr 2026 17:59:03 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ ted.litchfield@futurenet.com (Ted Litchfield) ]]></author>                    <dc:creator><![CDATA[ Ted Litchfield ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/8DyQVBz7FCynDY9QiJyH9D.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/AszbJKeMrYAQd96mWXE5-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:description>                                                            <media:text><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:text>
                                <media:title type="plain"><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/AszbJKeMrYAQd96mWXE5-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>As reported by <a href="https://www.vice.com/en/article/steam-controller-price-leaked-by-early-review-and-its-expensive/" target="_blank">Vice</a>, it appears that a review of Valve's new Steam controller was shared early to YouTube by the channel TechyTalk before getting pulled from the platform⁠—but users quickly screen recorded the review and shared it to other sites, like <a href="https://streamable.com/lj7ut3" target="_blank">Streamable</a>. The review revealed the new controller's MSRP: $100 ($99, but come on).</p><p>That definitely <em>feels</em> expensive looking at it, but compared to the wider field, it positions the Steam Controller at the more middle/high end of the pack, like 70th percentile. Here's some of the prices for the Steam Controller's competition, pulling from the three major console manufacturers' first party offerings, as well as our Best Controllers buying guide, and arranged from cheapest to most expensive:</p><ul><li><a href="https://www.amazon.com/dp/B0CMCQ6WMC?tag=ftr-pcgamer-us-20&th=1&psc=1&ascsubtag=pcg-us-9108396277305333473-20&geniuslink=true" target="_blank">GameSir Nova Lite</a> (PCG "Best Budget"): $23</li><li><a href="https://www.xbox.com/en-US/accessories/controllers/xbox-wireless-controller#red" target="_blank">Xbox standard wireless</a>: $49-$70</li><li><a href="https://www.playstation.com/en-us/accessories/dualsense-wireless-controller/" target="_blank">PlayStation DualSense</a>: $74+</li><li><a href="https://www.amazon.com/dp/B0FD41XC3P?tag=ftr-pcgamer-us-20&th=1&psc=1&ascsubtag=pcg-us-9108396277305333473-20&geniuslink=true" target="_blank">GameSir G7 Pro</a> (PCG "Best Overall"): $80</li><li><a href="https://www.amazon.com/Nintendo-SwitchTM-2-Pro-Controller-Switch/dp/B0F3VTFD6J?th=1" target="_blank">Switch 2 Pro</a>: $90</li><li><a href="https://www.amazon.com/VALOR-Wired-Performance-Controller-Gaming-Console/dp/B0DTB3F17W/ref=sr_1_1?ascsubtag=pcg-us-1256671101305854702-20&dib=eyJ2IjoiMSJ9.CBDUPetQz7NU_o8EAyIEEZOyItVF2GW-fhzRUSNBX_CdFKOBqQj0MbVDC0ptv1CfR-kyS3duMldb891sUEsSyMlQYEeSqC2mTAh8YWTOjnm88dbw2VvSZ2_irYcIrEkp7PqtYS8EIm3tzc_p__sjgtL_yRRkZrm8iVNW55Nrte_GaRUnOpSjIz5-7VR5Zq2A8kgqMmURi8YvDSdQWEwZdO7tiQZYFS4IPkpHjQGO2sc.Z2QWJoJDknKwsZIAynYQqa0uY8Xh9d_2727ickK9j08&dib_tag=se&geniuslink=true&keywords=Scuf+Instinct+Pro&qid=1777138842&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=8-1&ufe=app_do%3Aamzn1.fos.9fe8cbfa-bf43-43d1-a707-3f4e65a4b666" target="_blank">SCUF Valor Pro</a> (PCG "Best Wired"): $110</li><li><a href="https://www.xbox.com/en-US/accessories/controllers/elite-wireless-controller-series-2" target="_blank">Xbox Elite Series 2</a>: $158-$200+</li><li><a href="https://direct.playstation.com/en-us/buy-accessories/dualsense-edge-wireless-controller?smcid=pdc:us-en:web-pdc-accessories-dualsense-edge-wireless-controller:buttonblock-buy-now" target="_blank">PlayStation DualSense Edge</a>: $200</li><li><a href="https://www.amazon.com/dp/B0FC9DTDJ3?tag=ftr-pcgamer-us-20&th=1&psc=1&ascsubtag=pcg-us-9108396277305333473-20&geniuslink=true" target="_blank">Razer Wolverine</a> (PCG "Best High-End"): $200</li></ul><p>It's a relatively small sample size, but reflective of the current controller market in my experience: You've got the sub-$40 or $50 budget selection, a mid-tier of $50-$100 premium controllers that include the first-party console options, then a bit of a gap before that tryhard esports $150+ bracket. </p><p>The Steam Controller slots in right at the top of the mid-tier, missing some superpremium features like the 8,000 Hz polling of the Razer Wolverine, but offering some niceties you don't see from the big three console manufacturers, like its track pads and Hall Effect analogue sticks⁠—the big three have been confoundingly slow to adopt the latter technology.</p><p>As a final point of comparison, the OG Steam Controller was $50 (really $49.99, but <em>come on</em>) back <a href="https://www.eurogamer.net/valve-announces-the-source-2-engine-which-will-be-free-to-developers" target="_blank">when it launched in 2015</a>. Adjusted for inflation, that's about $70 today, and I think you'd get laughed outta the room if you tried to charge that for a Fisher Price-feeling, owl-faced doohickey with one analogue stick, tiny, mushy face buttons, and two double-A batteries for power⁠—much as I loved my original Steam Controller. RIP, I left the batteries in without using it for a long time and they burst.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/yAFomvQ2kRS39NDfXHRP7G.jpeg ]]></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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/SEb5dKTVfZ5EZF4fEcqdGR.png ]]></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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/SEb5dKTVfZ5EZF4fEcqdGR.png ]]></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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/8GHv7ZUGwf8bhinBRgQGjb.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/3TEoYfnGkzXiCm8xisUHGZ-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Hyperkin Competitor on a gaming laptop.]]></media:description>                                                            <media:text><![CDATA[The Hyperkin Competitor on a gaming laptop.]]></media:text>
                                <media:title type="plain"><![CDATA[The Hyperkin Competitor on a gaming laptop.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/3TEoYfnGkzXiCm8xisUHGZ-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Controllers typically come in two configurations—the offset stick layout, notable on most Xbox controllers, or the symmetrical design found on PlayStation’s offerings like the DualSense. While mostly pure preference, which is better is an argument that dates all the way back to the 1900s. As one of the survivors, around since the beginnings of this great gaming civil war, one of the biggest issues with this argument is your preference for controller also often locks you into the corresponding console, unless you want to drop serious cash on something custom. </p><p>This is something Hyperkin’s The Competitor aims to fix, by offering symmetrical sticks for Xbox and PC at a much cheaper price than a PS5 controller. As a huge fan of their Duke (OG Xbox pad reboot) I have been very keen to check it out.</p><p>The Competitor comes in two colour options, a flat black and a black and white mix up that’s clearly there to evoke those PS5 DualSense aesthetics. The latter is the one I’ve been reviewing, and the way the colours surround the logo always makes me think it’s wearing some kind of Super-Hero outfit. It’s almost comedic parody but still fairly stylish. It has its super suit, but does that mean it’s the greatest good we are ever going to get? (An Incredibles reference to further show my withering corporeal form).</p><p>Coming in at around $57 USD, this controller means you forgo a few features, but it’s also surprising what Hyperkin has packed into this pad. Though if you look at the Australian pricing, which ranges from $85 to $120 dollerydoos depending on retailer, it almost feels subpar for the price. You can get something like the PowerA wireless Dragon controller here which has far more features, like extra programmable back buttons and a light up dragon on it, for the same price range.</p><div  class="fancy-box"><div class="fancy_box-title">Competitor specs</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QLLD4W9cMjjt6cXWhzgF6a" name="20260128_132421" caption="" alt="The Hyperkin Competitor on a gaming laptop." src="https://cdn.mos.cms.futurecdn.net/QLLD4W9cMjjt6cXWhzgF6a.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text"><strong>Triggers: </strong>HE<br><strong>Face Buttons:</strong> Xbox Layout<br><strong>Back buttons: </strong>Two programmable and lockable on the controller without any external programs<br><strong>Sticks:</strong> Symmetrical Hall effect<br><strong>Connections: </strong>USB Type-C (A to C cable provided) 3.5 mm headphone jack<br><strong>Price:</strong> $57 USD | $85 AUD | £30</p></div></div><p>It’s completely wired, so you can’t connect via Bluetooth or dongle, but comes with one of the longer USB Type-C (Controller) to Type-A cable (PC/Xbox) I’ve ever seen. It almost provides the freedom of wireless, and as a a bonus it, even matches the black and white styling at the connection points. </p><p>This means the controller is also fairly light. My scales have it at around 250 grams. The official weight is 234 grams. The lack of batteries to weigh it down, is noticeable when I act like my hands are scales for two controllers, but I can’t say I notice the difference when swapping between this and a standard wireless Xbox Controller for play. </p><p>It’s important to note this is far from a DualSense controller. It’s a fraction of the price, for starters, but it also has regular triggers and rather unremarkable and haptics. The triggers remind me a bit of older PlayStation controllers so still have a good feel, but they’re aren’t customisable and are fairly simple. The same goes for the rumble, which could use a little more heft to help me notice when I’m dying while hyper focused. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ZZRDjynx2mqHpVaheA3X2a.jpg" alt="The Hyperkin Competitor on a gaming laptop." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/KEBWUHapFKYM2nmsKAg57a.jpg" alt="The Hyperkin Competitor on a gaming laptop." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Something it does share with controllers above its pay grade are programmable back buttons. Because this controller is wired and designed to be plug-and-play the two back buttons which rest on the inner grips of the controller can all be programmed and disabled on the controller itself. No annoying software required. You are limited to which buttons they can mirror, but mapping the left to X and right to B has given me easily identifiable options. They’re also quite comfortable and I rarely find myself knocking them unintentionally, which is a problem I’ve had with other back buttons.</p><p>Hall effect sticks are a really considerate touch on a controller that comes in at under $60 USD. They’re smooth and bounce back to the centre with vigour. When I first started the textured rims of the sticks were very rough but they’ve since worn down, or my thumbs have worn up to tackle their surface. They work well for fast aiming in shooters like Doom Eternal and slower paced games like Baldur’s Gate 3, though the D-pad is still king for selecting enemies, and almost everything else in the latter.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/aY94Zd9FYRJfXkPKqwiQ6a.jpg" alt="The Hyperkin Competitor on a gaming laptop." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/U9BgZ8LhcYb5nfK9iacw6a.jpg" alt="The Hyperkin Competitor on a gaming laptop." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6honkuMRVpAqtRv2XNpp6a.jpg" alt="The Hyperkin Competitor on a gaming laptop." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><div  class="fancy-box"><div class="fancy_box-title">Buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>✅ You want a budget symmetrical stick option with a few bonuses: </strong>Miss your PlayStation controller but want something far cheaper that’ll work with PC and Xbox? The competitor competes.</p><p class="fancy-box__body-text"><strong>✅ You struggle with back buttons:</strong> I am bad for accidentally hitting back buttons on controllers, and this one I have minimal misfires. They’re also easy to program on device.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>❌ You’re Australian: </strong>It’s pretty pricy in Aus, given the other options you could go for in its price range.</p><p class="fancy-box__body-text"><strong>❌ You want a DualSense for your PC: </strong>This is very much a watered down version of that high-tech Sony device.</p></div></div><p>The D-pad is also fairly competent but it’s far from my favourite. It feels so small under my thumb and raises at the far edges which gives an uncomfortable slide to the centre. I like being able to roll my thumb around and hit all the buttons, but it always feels a little harsh. It’s also quite pretty, having a transparent coating like the other face buttons, but my thumb has never been able to get an enjoyable feel on it.</p><p>Then face buttons are labelled with the Xbox configuration, but they also don’t quite feel right. There’s a lack of certainty when pushed as they have a slight smoosh to them. The bumpers are similar with that slightly delayed or soft touch push. I often set bumpers to dash and sometimes special while I attempt speed runs on Hades 2 and they don’t always fire as expected. I’ve even noticed my cast not actuating without being rather heavy on the B button. The main takeaway for me is my speeds are generally slower with the competitor than with a standard Xbox Wireless controller.</p><p>It’s great to have the option of a symmetrical stick layout that works so easily with pc and Xbox, and the Hyperkin Competitor delivers this at a fairly reasonable price point for those in the right region. For folks in the US you get a feature-full easy to use piece of kit that likely costs less than fueling up your car. Aussies on the other-hand could easily pick up something swankier at the same price, and probably get better Hades 2 speedrunning times for the option. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/RqRA6M28uuy6JeF64tnvJR.png ]]></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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/RqRA6M28uuy6JeF64tnvJR.png ]]></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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/SEb5dKTVfZ5EZF4fEcqdGR.png ]]></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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/MhpLVw9KnLQKyRCgPc3QGR.png ]]></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[ 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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/SEb5dKTVfZ5EZF4fEcqdGR.png ]]></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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/Md68GDXhupcXtwAacuPKrd.jpg ]]></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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/Md68GDXhupcXtwAacuPKrd.jpg ]]></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[ Switching to a leverless fighting game controller is the smartest thing I ever did, and one of the best in the biz is at its lowest-ever price ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/switching-to-a-leverless-fighting-game-controller-is-the-smartest-thing-i-ever-did-and-one-of-the-best-in-the-biz-is-at-its-lowest-ever-price/</link>
                                                                            <description>
                            <![CDATA[ The Razer Kitsune is a steal for just over $200. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">NpyeQTnsvfDfF2sL3E7kfJ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/AZbZQ26FdHoJ3jFken8NKT-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 01 Dec 2025 11:28:27 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Mollie Taylor ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/JQ789chECUDBKgvRsNCkLR.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/AZbZQ26FdHoJ3jFken8NKT-1280-80.jpg">
                                                            <media:credit><![CDATA[Razer]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Razer Kitsune Cyber Monday deal]]></media:description>                                                            <media:text><![CDATA[Razer Kitsune Cyber Monday deal]]></media:text>
                                <media:title type="plain"><![CDATA[Razer Kitsune Cyber Monday deal]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/AZbZQ26FdHoJ3jFken8NKT-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="cc8308f0-deef-4fde-b13e-6ec632eba230" data-action="Deal Block" data-label="The Razer Kitsune hits a frame-perfect combo of ultra-light, ultra-thin, ultra-stylish fighting gaming. It swaps out a joystick for an all-button layout which makes movement input faster and more consistent. A must-have for anyone looking to take their fighting game skills to the next level.Key specs: Optical switches | PC &amp; PS5 compatible | USB-C cable | SOCD cleaning | Swappable art top plate" data-dimension48="The Razer Kitsune hits a frame-perfect combo of ultra-light, ultra-thin, ultra-stylish fighting gaming. It swaps out a joystick for an all-button layout which makes movement input faster and more consistent. A must-have for anyone looking to take their fighting game skills to the next level.Key specs: Optical switches | PC &amp; PS5 compatible | USB-C cable | SOCD cleaning | Swappable art top plate" data-dimension25="$209.99" href="https://www.amazon.com/Razer-Kitsune-All-Button-Arcade-Controller-Desktop/dp/B0CCX2DMXV/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="DfUYqEpgZLMGSAnLfmfipf" name="amazon black friday razer kitsune" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/DfUYqEpgZLMGSAnLfmfipf.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Razer Kitsune hits a frame-perfect combo of ultra-light, ultra-thin, ultra-stylish fighting gaming. It swaps out a joystick for an all-button layout which makes movement input faster and more consistent. A must-have for anyone looking to take their fighting game skills to the next level.</p><p><strong>Key specs: Optical switches | PC & PS5 compatible | USB-C cable | SOCD cleaning | Swappable art top plate</strong><a class="view-deal button" href="https://www.amazon.com/Razer-Kitsune-All-Button-Arcade-Controller-Desktop/dp/B0CCX2DMXV/" target="_blank" rel="nofollow" data-dimension112="cc8308f0-deef-4fde-b13e-6ec632eba230" data-action="Deal Block" data-label="The Razer Kitsune hits a frame-perfect combo of ultra-light, ultra-thin, ultra-stylish fighting gaming. It swaps out a joystick for an all-button layout which makes movement input faster and more consistent. A must-have for anyone looking to take their fighting game skills to the next level.Key specs: Optical switches | PC &amp; PS5 compatible | USB-C cable | SOCD cleaning | Swappable art top plate" data-dimension48="The Razer Kitsune hits a frame-perfect combo of ultra-light, ultra-thin, ultra-stylish fighting gaming. It swaps out a joystick for an all-button layout which makes movement input faster and more consistent. A must-have for anyone looking to take their fighting game skills to the next level.Key specs: Optical switches | PC &amp; PS5 compatible | USB-C cable | SOCD cleaning | Swappable art top plate" data-dimension25="$209.99">View Deal</a></p></div><p>For as long as I've been playing fighting games, I've always done it with whatever the controller of the moment was: Xbox 360, DualShock 4, and (shudder) the DualSense. Listen, that last one is good, but it's <em>terrible </em>for fighting games thanks to its ridiculously mushy d-pad. Nobody wants a mushy d-pad when they're trying to rapid-fire directional inputs. And as someone who loves getting a long nail manicure, they were causing me to misinput all over the gaff.</p><p>I tried fight sticks previously but couldn't get with the whole, well, <em>stick </em>part of it. Then earlier this year, I finally made the switch to a leverless controller. One that trades out any sort of analog inputs for a flat, all-button setup. And you know what? It's been a game changer. I've been rocking a mid-range one kindly borrowed from a friend, but I finally have a reason to invest in a leverless of my own: the fantastic Razer Kitsune is currently at its lowest-ever price on Amazon.</p><ul><li><strong>We're curating </strong><a href="https://www.pcgamer.com/cyber-monday-pc-gaming-deals/" target="_blank"><strong>all the best Cyber Monday PC gaming deals over here</strong></a><strong></strong></li></ul><p>It's currently 30% off on <a href="https://www.amazon.com/Razer-Kitsune-All-Button-Arcade-Controller-Desktop/dp/B0CCX2DMXV/" target="_blank">Amazon in the US</a>—down from $300 to $210—and a 43% discount on <a href="https://www.amazon.co.uk/Razer-Kitsune-All-Button-Controller-Low-profile/dp/B0C8MRB3XK" target="_blank">Amazon's UK storefront</a> from £300 to £170. While it's not exactly an entry-level cost if you're looking to dive into leverless gaming for the first time, it's a cracking deal for a real neat bit of kit. One to absolutely consider if you're confident in leverless being your fighting game peripheral of choice.</p><p>It boasts a 12-button layout—preferable for me, but if you're used to lots of extra inputs on your leverless it might take some adjusting—with lovely responsive optical switches that Razer promises has minimal latency. It's also incredibly thin and lightweight, making it the perfect device to carry around tournaments and fighting game locals rather than lugging around a huge, heavy stick. </p><p>The Razer Kitsune is also packed with little features that make a big difference when it comes to offline play—four different SOCD cleaning modes (a lot of tournaments require controllers have this to prevent exploiting simultaneous inputs), a lock to prevent accidentally hitting menu buttons and accidentally forfeiting a round and another lock to prevent the cable accidentally coming out.</p><p>The biggest downside is that it isn't compatible with PlayStation 4 out of the box, a genuinely baffling oversight for a controller that gets almost everything else right. You'll need to scoop up something like a <a href="https://www.amazon.com/Brook-Wingman-XE-Converter-Controller/dp/B0BV2FW229" target="_blank">Brook Wingman</a> if your local is still rocking last gen's consoles.</p><p>It does so much else right, though, that it's one oversight I'm willing to look past. Now if you don't mind me, I'm going to go lab some combos in all my lever-free glory.</p><h2 id="check-out-all-of-amazon-s-controller-deals">👉 <a href="https://www.amazon.com/s?rh=n%3A20972795011&language=en_US&brr=1&rd=1" target="_blank">Check out all of Amazon's controller deals</a> 👈</h2>
                                                            </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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/RqRA6M28uuy6JeF64tnvJR.png ]]></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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/Md68GDXhupcXtwAacuPKrd.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/CyCMRtxjn63eWSzXgGdYMR-1280-80.jpg">
                                                            <media:credit><![CDATA[Asobo Studio]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Microsoft Flight Simulator 2024 screens]]></media:description>                                                            <media:text><![CDATA[Microsoft Flight Simulator 2024 screens]]></media:text>
                                <media:title type="plain"><![CDATA[Microsoft Flight Simulator 2024 screens]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/CyCMRtxjn63eWSzXgGdYMR-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/KD1LabD4dsY" allowfullscreen></iframe></div></div><p>Personally, when I hear Honeycomb, I think of ice cream—and then the consequences my lactose intolerant-self would have to face were I to indulge. However, for flight sim fans, there’s only <a href="https://flyhoneycomb.com/" target="_blank">Honeycomb Aeronautical</a>—and lucky for them, they’ve just dropped a brand new gamepad.</p><p><a href="https://www.youtube.com/watch?v=KD1LabD4dsY" target="_blank">The Echo Aviation Controller</a> is specifically geared towards playing flight simulators on PC, and is already readying for a mid-December 2025 takeoff. Rather than saddling yourself with heaps of specialist hardware, this pad attempts to, according to the press release, “cram a cockpit into a controller.” Perhaps a gift idea for the geek in your life that got <em>really </em>into <a href="https://www.pcgamer.com/games/sim/microsoft-flight-simulator-2024-review/" target="_blank">Microsoft Flight Simulator 2024</a>?</p><p>I mean, all that functionality scrunched up into a gamepad footprint does make the Echo Aviation Controller look like an arcane instrument. However, all those improbably placed knobs and dials allow players to simultaneously control the “pitch, roll, yaw, throttle, trim and core aircraft systems.” Talk about a packed flight.</p><p>Pitch and roll is tied to the precision thumbstick, allowing you to finetune full elevator and aileron inputs. There are also four integrated Throttle Levers plus a Trim Wheel, and all of these are independently assignable too. That means there’s no need to eject from the Echo Aviation Controller if you want to hop from a single-engine to a multi-engine aircraft.</p><p>To me, such a wealth of inputs is a little intimidating. I bet some would pay good money to see what this particular menu-loving RPG fan does in a hectic flight sim session, but speaking of dough, let’s talk price. The Echo Aviation Controller will cost $150 / € 150 / £130 when it lands this December.</p><p>That’s an unsurprising price point given how obviously this bit of kit has set its sights on the enthusiast crowd—all those specialised bobbins were bound to cost a pretty penny. While it’s on the pricier side, it’s far from the most expensive PC controller we’ve seen; in our <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best PC controllers guide</a>, that would be the $200 and uber responsive <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro 8K</a>. Still, not even that has a Trim Wheel.</p><div id="crow-inpage-content"><style>      @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');      #pcg-cpu-widget-container *, #pcg-cpu-widget-container *::before, #pcg-cpu-widget-container *::after { box-sizing: border-box !important; margin: 0 !important; padding: 0 !important; border: 0 !important; vertical-align: baseline !important; line-height: 1.5 !important; text-decoration: none !important; font-family: 'Inter', sans-serif !important; }      #pcg-cpu-widget-container { margin-bottom: 48px !important; padding-top: 16px !important; padding-bottom: 24px !important; background-color: transparent !important; display: block !important; overflow: visible !important; position: relative !important; container-type: inline-size !important; }      #pcg-cpu-widget-container.pcg-widget-outline { border: 1px solid #d1d5db !important; border-radius: 8px !important; padding: 16px 16px 24px !important; }      #pcg-cpu-widget-container .pcg-group > .pcg-product-row-wrapper:not(.pcg-expanded):last-child .pcg-product-row { border-bottom-width: 0 !important; }      #pcg-cpu-widget-container .pcg-widget-container { width: 100% !important; margin: 0 auto !important; display: block !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-header-section { display: flex !important; justify-content: space-between !important; align-items: flex-start !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-header-content { display: flex !important; align-items: center !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-header-image { width: 35px !important; height: 35px !important; border-radius: 8px !important; object-fit: cover !important; mix-blend-mode: multiply !important; display: block !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-header-text { margin-left: 16px !important; display: block !important; }      #pcg-cpu-widget-container .pcg-header-title { font-size: 18px !important; font-weight: bold !important; color: #1f2937 !important; margin: 0 !important; display: block !important; }      #pcg-cpu-widget-container .pcg-header-subtitle { font-size: 14px !important; color: #6b7280 !important; margin: 0 !important; display: block !important; }      #pcg-cpu-widget-container .pcg-separator { border: none !important; border-top: 1px solid #d1d5db !important; margin: 16px 0 !important; display: block !important; }      #pcg-cpu-widget-container .pcg-product-row-wrapper { display: flex !important; flex-direction: column !important; transition: all 0.2s ease-in-out; }      #pcg-cpu-widget-container .pcg-product-row-wrapper.pcg-expanded { border: 1px solid #e5e7eb !important; border-radius: 8px !important; margin-top: 8px !important; margin-bottom: 8px !important; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04) !important; overflow: hidden !important; background-color: #ffffff !important; }      #pcg-cpu-widget-container .pcg-product-row-wrapper.pcg-expanded .pcg-product-row { padding-left: 12px !important; padding-right: 12px !important; border-bottom-width: 1px !important; border-bottom-color: #e5e7eb !important; }      #pcg-cpu-widget-container .pcg-product-row { display: flex !important; align-items: flex-start !important; padding: 12px 0 !important; border-bottom: 1px solid #d1d5db !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-product-image { display: block !important; width: 48px !important; height: 48px !important; border-radius: 6px !important; object-fit: contain !important; margin-right: 16px !important; flex-shrink: 0 !important; mix-blend-mode: multiply !important; }      #pcg-cpu-widget-container .pcg-product-content { flex-grow: 1 !important; display: flex !important; justify-content: space-between !important; align-items: stretch !important; min-width: 0 !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-product-info { flex: 1 1 0 !important; min-width: 0 !important; display: block !important; overflow: visible !important; margin-right: 8px !important; }      #pcg-cpu-widget-container .pcg-mobile-price-container { display: none !important; }      #pcg-cpu-widget-container .pcg-product-meta { display: flex !important; flex-direction: column !important; align-items: flex-start !important; gap: 8px !important; margin-bottom: 8px !important; height: auto !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-category-badge { font-size: 12px !important; color: #000000 !important; font-weight: bold !important; line-height: 12px !important; flex-shrink: 0 !important; white-space: nowrap !important; display: inline-block !important; }      #pcg-cpu-widget-container .pcg-stars { display: flex !important; flex-direction: row !important; flex-wrap: nowrap !important; gap: 1px !important; height: auto !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-star { position: relative !important; width: 12px !important; height: 12px !important; flex-shrink: 0 !important; display: block !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-star-svg { width: 100% !important; height: 100% !important; display: block !important; fill: currentColor !important; }      #pcg-cpu-widget-container .pcg-star-empty .pcg-star-svg { color: #d1d5db !important; }      #pcg-cpu-widget-container .pcg-star-full .pcg-star-svg { color: #ef4444 !important; }      #pcg-cpu-widget-container .pcg-star-partial { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; display: block !important; }      #pcg-cpu-widget-container .pcg-star-partial .pcg-star-svg { color: #ef4444 !important; }      #pcg-cpu-widget-container .pcg-product-link { display: block !important; font-weight: 600 !important; color: #dc2626 !important; text-decoration: none !important; font-size: 13px !important; white-space: normal !important; }      #pcg-cpu-widget-container .pcg-product-link:hover { text-decoration: underline !important; } #pcg-cpu-widget-container .pcg-product-link:visited { color: #b91c1c !important; }      #pcg-cpu-widget-container .pcg-price-panel { flex-shrink: 0 !important; display: flex !important; flex-direction: column !important; align-items: flex-end !important; justify-content: flex-end !important; gap: 10px !important; overflow: visible !important; text-align: right !important; }      #pcg-cpu-widget-container .pcg-view-button { display: inline-flex !important; align-items: center !important; justify-content: center !important; font-weight: bold !important; border-radius: 8px !important; transition: all 0.2s !important; background-color: #dc2626 !important; color: white !important; border: none !important; text-decoration: none !important; width: 120px !important; font-size: 12px !important; padding: 10px 12px !important; white-space: nowrap !important; line-height: 1.5 !important; text-overflow: ellipsis !important; overflow: hidden !important; }      #pcg-cpu-widget-container .pcg-view-button:hover, #pcg-cpu-widget-container .pcg-view-button:visited { background-color: #b91c1c !important; color: white !important; }      #pcg-cpu-widget-container .pcg-compare-link { font-size: 13px !important; color: #dc2626 !important; text-decoration: none !important; display: inline-flex !important; align-items: center !important; gap: 4px !important; background: none !important; border: none !important; padding: 4px 0 !important; cursor: pointer !important; font-family: inherit !important; text-transform: none !important; }      #pcg-cpu-widget-container .pcg-compare-link:hover:not(:disabled) { text-decoration: underline !important; }      #pcg-cpu-widget-container .pcg-compare-link.pcg-compare-link-static { cursor: default !important; justify-content: center !important; width: 120px !important; }      #pcg-cpu-widget-container .pcg-compare-link.pcg-compare-link-static:hover { text-decoration: none !important; }      #pcg-cpu-widget-container .pcg-compare-link strong { font-weight: bold !important; }      #pcg-cpu-widget-container .pcg-footer-link { font-weight: 600 !important; color: #1f2937 !important; display: block !important; }      #pcg-cpu-widget-container .pcg-footer-link.pcg-footer-link-top { margin-top: 16px !important; }      #pcg-cpu-widget-container .pcg-footer-link a { color: #dc2626 !important; text-decoration: none !important; display: inline !important; }      #pcg-cpu-widget-container .pcg-footer-link a:hover { text-decoration: underline !important; } #pcg-cpu-widget-container .pcg-footer-link a:visited { color: #b91c1c !important; }      #pcg-cpu-widget-container .pcg-powered-by { margin-top: 16px !important; display: flex !important; justify-content: center !important; align-items: center !important; gap: 4px !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-powered-by-text { font-size: 10px !important; font-weight: 600 !important; color: #6b7280 !important; display: inline !important; }      #pcg-cpu-widget-container .pcg-powered-by-logo { height: 10px !important; width: auto !important; mix-blend-mode: multiply !important; display: inline-block !important; }      #pcg-cpu-widget-container .pcg-dropdown-controls { display: flex !important; gap: 16px !important; margin-top: 16px !important; flex-direction: row !important; }      #pcg-cpu-widget-container .pcg-select-wrapper { flex: 1; min-width: 0; }      #pcg-cpu-widget-container .pcg-select-dropdown { width: 100% !important; padding: 8px 12px !important; font-size: 14px !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; background-color: white !important; color: #1f2937 !important; -webkit-appearance: none; -moz-appearance: none; appearance: none; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; padding-right: 2.5rem !important; cursor: pointer !important; }      #pcg-cpu-widget-container .pcg-loading { font-size: 12px !important; color: #6b7280 !important; display: block !important; padding: 12px 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-container { max-height: 0 !important; overflow: hidden !important; transition: max-height 0.4s ease-in-out, padding 0.4s ease-in-out !important; background-color: #f9fafb !important; border-bottom: 1px solid #d1d5db !important; padding: 0 16px !important; }      #pcg-cpu-widget-container .pcg-product-row-wrapper.pcg-expanded .pcg-comparison-container { max-height: 1000px !important; padding: 12px 12px 8px 12px !important; border-bottom-width: 0 !important; background-color: #f9fafb !important; }      #pcg-cpu-widget-container .pcg-product-row-wrapper:last-child .pcg-comparison-container { border-bottom-width: 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-row-header { display: flex !important; justify-content: space-between !important; align-items: flex-start !important; margin-bottom: 8px !important; }      #pcg-cpu-widget-container .pcg-comparison-model-name { font-size: 13px !important; font-weight: 600 !important; color: #4b5563 !important; text-align: left !important; margin-bottom: 0 !important; padding-right: 8px !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }      #pcg-cpu-widget-container .pcg-comparison-row-content { display: flex !important; align-items: center !important; justify-content: space-between !important; width: 100% !important; gap: 8px !important; }      #pcg-cpu-widget-container .pcg-comparison-row { display: flex !important; flex-direction: column !important; align-items: stretch !important; padding: 8px 0 !important; justify-content: space-between !important; color: inherit !important; text-decoration: none !important; transition: background-color 0.2s ease-in-out !important; }      #pcg-cpu-widget-container .pcg-comparison-row:hover { background-color: #f3f4f6 !important; }      #pcg-cpu-widget-container .pcg-comparison-row:not(:last-child) { border-bottom: 1px solid #e5e7eb !important; }      #pcg-cpu-widget-container .pcg-lowest-price-badge { background-color: #dc2626 !important; color: white !important; padding: 1px 6px !important; font-size: 10px !important; font-weight: 700 !important; display: inline-block !important; border-radius: 0 !important; flex-shrink: 0 !important; position: absolute !important; top: 0 !important; left: 50% !important; transform: translateX(-50%) !important; white-space: nowrap !important; }      #pcg-cpu-widget-container .pcg-comparison-number { display: none !important; font-size: 12px !important; font-weight: 600 !important; color: #4b5563 !important; min-width: 24px !important; height: 24px !important; align-items: center !important; justify-content: center !important; background-color: #e5e7eb !important; border-radius: 4px !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-product-image { display: none !important; width: 60px !important; height: 60px !important; border-radius: 4px !important; object-fit: contain !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-retailer-logo-container { display: flex !important; align-items: center !important; justify-content: center !important; height: 60px !important; width: 120px !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-retailer-logo { max-height: 100% !important; max-width: 100% !important; width: auto !important; height: auto !important; object-fit: contain !important; }      #pcg-cpu-widget-container .pcg-comparison-price-wrapper { position: relative !important; display: flex !important; align-items: center !important; justify-content: center !important; min-height: 60px !important; }      #pcg-cpu-widget-container .pcg-comparison-price { font-size: 14px !important; font-weight: 600 !important; color: #1f2937 !important; white-space: nowrap !important; }      #pcg-cpu-widget-container .pcg-comparison-button { display: inline-flex !important; align-items: center !important; justify-content: center !important; font-weight: 600 !important; border-radius: 6px !important; transition: all 0.2s !important; background-color: #008000 !important; color: #ffffff !important; border: none !important; text-decoration: none !important; font-size: 14px !important; padding: 8px 16px !important; white-space: nowrap !important; width: auto !important; min-width: 80px !important; text-align: center !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-row:hover .pcg-comparison-button { background-color: #006400 !important; } #pcg-cpu-widget-container .pcg-comparison-button:visited { background-color: #006400 !important; }      #pcg-cpu-widget-container .pcg-show-more-container { padding: 12px 0 4px !important; text-align: center !important; border-top: 1px solid #e5e7eb !important; display: flex !important; justify-content: center !important; gap: 16px !important; flex-wrap: wrap !important; }      #pcg-cpu-widget-container .pcg-show-more-button { background-color: transparent !important; border: none !important; color: #dc2626 !important; font-weight: 600 !important; font-size: 14px !important; cursor: pointer !important; padding: 8px !important; display: inline-flex !important; align-items: center !important; gap: 4px !important; }      #pcg-cpu-widget-container .pcg-show-more-button:hover { text-decoration: underline !important; }      #pcg-cpu-widget-container .pcg-chevron { font-size: .8em !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-list-scrollable { max-height: 294px !important; overflow-y: auto !important; position: relative !important; scrollbar-width: thin; scrollbar-color: #dc2626 #f9fafb !important; margin-right: -10px !important; padding-right: 10px !important; } #pcg-cpu-widget-container .pcg-comparison-list-scrollable::-webkit-scrollbar { width: 6px !important; } #pcg-cpu-widget-container .pcg-comparison-list-scrollable::-webkit-scrollbar-track { background: #f9fafb !important; } #pcg-cpu-widget-container .pcg-comparison-list-scrollable::-webkit-scrollbar-thumb { background-color: #dc2626 !important; border-radius: 3px !important; } #pcg-cpu-widget-container .pcg-comparison-list-scrollable::-webkit-scrollbar-thumb:hover { background-color: #b91c1c !important; }      #pcg-cpu-widget-container .pcg-comparison-row-sticky { background-color: #f9fafb !important; }      #pcg-cpu-widget-container .pcg-comparison-loading, #pcg-cpu-widget-container .pcg-no-offers { text-align: center !important; padding: 24px 16px !important; font-size: 14px !important; font-weight: 500 !important; color: #6b7280 !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 8px !important; }      #pcg-cpu-widget-container .pcg-spinner { animation: pcg-rotate 2s linear infinite !important; width: 20px !important; height: 20px !important; }      #pcg-cpu-widget-container .pcg-path { stroke: #dc2626 !important; stroke-linecap: round !important; animation: pcg-dash 1.5s ease-in-out infinite !important; }      #pcg-cpu-widget-container .pcg-live-pill { display: inline-flex !important; align-items: center !important; gap: 6px !important; background-color: #dc2626 !important; color: #ffffff !important; padding: 6px 12px !important; border-radius: 9999px !important; font-size: 14px !important; font-weight: 600 !important; flex-shrink: 0 !important; white-space: nowrap !important; }      #pcg-cpu-widget-container .pcg-live-dot { width: 8px !important; height: 8px !important; background-color: #ffffff !important; border-radius: 50% !important; animation: pcg-live-pulse 1.5s infinite ease-in-out !important; }      @keyframes pcg-rotate { 100% { transform: rotate(360deg); } }      @keyframes pcg-dash { 0% { stroke-dasharray: 1, 150; stroke-dashoffset: 0; } 50% { stroke-dasharray: 90, 150; stroke-dashoffset: -35; } 100% { stroke-dasharray: 90, 150; stroke-dashoffset: -124; } }      @keyframes pcg-live-pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(0.8); opacity: 0.8; } }      @container (min-width: 500px) { #pcg-cpu-widget-container .pcg-price-panel { gap: 4px !important; } #pcg-cpu-widget-container .pcg-product-row { align-items: stretch !important; } #pcg-cpu-widget-container .pcg-product-info { display: flex !important; flex-direction: column !important; justify-content: center !important; } #pcg-cpu-widget-container .pcg-product-image { width: 64px !important; height: 64px !important; } #pcg-cpu-widget-container .pcg-category-badge { font-size: 13px !important; white-space: nowrap !important; } #pcg-cpu-widget-container .pcg-star { width: 14px !important; height: 14px !important; } #pcg-cpu-widget-container .pcg-header-image { width: 46px !important; height: 46px !important; } #pcg-cpu-widget-container .pcg-header-title { font-size: 20px !important; } #pcg-cpu-widget-container .pcg-header-subtitle { font-size: 16px !important; } #pcg-cpu-widget-container .pcg-product-meta { flex-direction: row !important; align-items: center !important; gap: 8px !important; margin-bottom: 8px !important; flex-wrap: nowrap !important; } #pcg-cpu-widget-container .pcg-product-link { font-size: 18px !important; } #pcg-cpu-widget-container .pcg-powered-by-text { font-size: 12px !important; } #pcg-cpu-widget-container .pcg-powered-by-logo { height: 12px !important; } #pcg-cpu-widget-container .pcg-comparison-number { display: flex !important; } #pcg-cpu-widget-container .pcg-comparison-product-image { display: block !important; } #pcg-cpu-widget-container .pcg-compare-link.pcg-compare-link-static { width: 160px !important; } #pcg-cpu-widget-container .pcg-view-button { width: 160px !important; font-size: 14px !important; padding: 8px 16px !important; } #pcg-cpu-widget-container .pcg-compare-link { font-size: 14px !important; padding: 0 !important; } }          </style><script type="importmap">          {            "imports": {              "react-dom/": "https://aistudiocdn.com/react-dom@^19.1.1/",              "react/": "https://aistudiocdn.com/react@^19.1.1/",              "react": "https://aistudiocdn.com/react@^19.1.1"            }          }          </script>          <div id="root">            <div id="pcg-cpu-widget-container" class="pcg-widget-outline">                <svg style="display: none;" aria-hidden="true"><defs><symbol id="pcg-tr-star-full" viewbox="0 0 20 20"><path d="M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z"></path></symbol><symbol id="pcg-tr-star-empty" viewbox="0 0 20 20"><path d="M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z"></path></symbol></defs></svg>                <div class="pcg-widget-container">                    <div class="pcg-header-section"><div class="pcg-header-content"><img src="https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png" alt="PC Gamer Logo" class="pcg-header-image"><div class="pcg-header-text"><h2 id="pcg-current-list-title" class="pcg-header-title">Best PC controller 2025</h2><p class="pcg-header-subtitle">All our current recommendations</p></div></div></div>                                        <div class="pcg-dropdown-controls">                        <div class="pcg-select-wrapper">                            <select class="pcg-select-dropdown" aria-label="Select product category" data-hawkify-clicked-area="filter" data-hawkify-category="PC Gamer category filter" data-hawkify-widget-type="dropdown">                                <option value="">Pick a category</option>                                <option value="Best overall">Best overall</option><option value="Core Components">Core Components</option><option value="Chairs & Desks">Chairs & Desks</option><option value="Systems & Laptops">Systems & Laptops</option><option value="Screens">Screens</option><option value="Peripherals" selected>Peripherals</option><option value="Cases, Cooling & Storage">Cases, Cooling & Storage</option>                            </select>                        </div>                        <div class="pcg-select-wrapper">                            <select class="pcg-select-dropdown" aria-label="Select buying guide" data-hawkify-clicked-area="filter" data-hawkify-category="PC Gamer guide selector" data-hawkify-widget-type="dropdown">                                <option value="">Choose a list</option>                                <option value="best-gaming-headset-2025">Best gaming headset 2025</option><option value="best-microphone-for-gaming-2025">Best microphone for gaming 2025</option><option value="best-webcam-2025">Best webcam 2025</option><option value="best-pc-controller-2025" selected>Best PC controller 2025</option><option value="best-gaming-keyboard-2025">Best gaming keyboard 2025</option><option value="best-gaming-mouse-2025">Best gaming mouse 2025</option><option value="best-pc-speaker-2025">Best PC speaker 2025</option><option value="best-capture-cards-2025">Best capture cards 2025</option>                            </select>                        </div>                    </div>                    <hr class="pcg-separator">                    <div id="pcg-products-container"><div class="pcg-group">                <div class="pcg-product-row-wrapper" data-model-name="Xbox Wireless Controller">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg" alt="Xbox Wireless Controller" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST OVERALL</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-xuct9xey5"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-xuct9xey5)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Bwireless%2Bcontroller%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    1. Xbox Wireless Controller                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Bwireless%2Bcontroller%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="GameSir Nova Lite">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg" alt="GameSir Nova Lite" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST BUDGET</span>                                    <div class="pcg-stars" aria-label="4.0 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-empty"><svg class="pcg-star-svg"><use href="#pcg-tr-star-empty"></use></svg></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgamesir%2Bnova%2Blite%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    2. GameSir Nova Lite                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgamesir%2Bnova%2Blite%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Xbox Elite Series 2">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg" alt="Xbox Elite Series 2" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST PREMIUM</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-j2vgfpu0a"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-j2vgfpu0a)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Belite%2Bseries%2B2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    3. Xbox Elite Series 2                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Belite%2Bseries%2B2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Scuf Instinct Pro">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg" alt="Scuf Instinct Pro" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST CUSTOMIZABLE</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-8vfhmk03q"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-8vfhmk03q)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dscuf%2Binstinct%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    4. Scuf Instinct Pro                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dscuf%2Binstinct%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Sony DualSense">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg" alt="Sony DualSense" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST HAPTICS</span>                                    <div class="pcg-stars" aria-label="4.0 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-empty"><svg class="pcg-star-svg"><use href="#pcg-tr-star-empty"></use></svg></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsony%2Bdualsense%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    5. Sony DualSense                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsony%2Bdualsense%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Razer Wolverine V3 Pro">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg" alt="Razer Wolverine V3 Pro" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST HALL EFFECT</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-pqce6n7t3"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-pqce6n7t3)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bwolverine%2Bv3%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    6. Razer Wolverine V3 Pro                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bwolverine%2Bv3%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div></div></div>                    <hr class="pcg-separator">                                <div class="pcg-footer-link ">                Read the full guide: <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank" rel="noopener noreferrer" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer buying guide" data-hawkify-widget-type="guide-link">Best PC controller 2025</a>            </div>                    <div class="pcg-powered-by"><span class="pcg-powered-by-text">POWERED BY</span><img src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb-200-100.png" alt="PC Gamer Logo" class="pcg-powered-by-logo"></div>                </div>            </div></div>          <script type="module">      import React, { useState, useEffect, useCallback, useRef } from 'react';      import ReactDOM from 'react-dom/client';            // --- Inlined data.ts ---      const allProductLists = [  {    "id": "best-pc-gaming-gear-2025",    "name": "The best PC gaming gear 2025",    "guideUrl": "https://www.pcgamer.com/hardware/this-is-all-the-best-pc-gaming-gear-we-recommend-in-one-techie-tier-list/",    "category": "Best overall",    "products": [      {        "modelName": "Secretlab Titan Evo",        "score": 100,        "category": "BEST GAMING CHAIR",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Btitan%2Bevo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Secretlab Magnus Pro XL",        "score": 90,        "category": "BEST GAMING DESK",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Bmagnus%2Bpro%2Bxl%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "HyperX Cloud Alpha",        "score": 90,        "category": "BEST GAMING HEADSET",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyperx%2Bcloud%2Balpha%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Strix Scope II 96 Wireless",        "score": 90,        "category": "BEST GAMING KEYBOARD",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bscope%2Bii%2B96%2Bwireless%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer DeathAdder V3 HyperSpeed",        "score": 90,        "category": "BEST GAMING MOUSE",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bdeathadder%2Bv3%2Bhyperspeed%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Xbox Wireless Controller",        "score": 90,        "category": "BEST PC CONTROLLER",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Bwireless%2Bcontroller%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech G Pro Racing Wheel",        "score": 90,        "category": "BEST STEERING WHEEL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bg%2Bpro%2Bracing%2Bwheel%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Shure MV6",        "score": 90,        "category": "BEST MICROPHONE",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dshure%2Bmv6%2Busb%2Bgaming%2Bmicrophone%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Elgato Facecam MK.2",        "score": 90,        "category": "BEST WEBCAM",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Delgato%2Bfacecam%2Bmk.2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-cpu-for-gaming-2025",    "name": "Best CPU for gaming 2025",    "guideUrl": "https://www.pcgamer.com/best-cpu-for-gaming/",    "category": "Core Components",    "products": [      {        "modelName": "AMD Ryzen 7 9800X3D",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://images.fie.futurecdn.net/efrb6fzvwvd4jwcd-17308043833633-100-80.jpg.webp",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fdp%2FB0DKFMSMYK%3Ftag%3Dhawk-future-21%26linkCode%3Dogi%26th%3D1%26psc%3D1%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Intel Core i5 13400F",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/41NgKlCJOzL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fdp%2FB0BXH1FTFT%3Ftag%3Dhawk-future-21%26linkCode%3Dogi%26th%3D1%26psc%3D1%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AMD Ryzen 7 9700X",        "score": 100,        "category": "BEST MID-RANGE",        "imageUrl": "https://images.fie.futurecdn.net/juzc6t2ldxs3u4fb-17225908633078-100-80.jpg.webp",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fdp%2FB0D6NMDNNX%3Ftag%3Dhawk-future-21%26linkCode%3Dogi%26th%3D1%26psc%3D1%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AMD Ryzen 9 9950X3D",        "score": 80,        "category": "BEST HIGH-END",        "imageUrl": "https://images.fie.futurecdn.net/ryk5t8z59zcxcdvn-17416887337709-100-80.jpg.webp",        "productUrl": "https://ccl.pxf.io/c/221109/1991091/24481?sharedId=hawk-prefix&subId1=hawk-custom-tracking&prodsku=CPU0943&u=https%3A%2F%2Fwww.cclonline.com%2F100-100000719wof-amd-ryzen-9-9950x3d-16-core-32-thread-am5-cpu-483923%2F&intsrc=CATF_16482"      },      {        "modelName": "AMD Ryzen 7 5700X3D",        "score": 80,        "category": "BEST AM4 UPGRADE",        "imageUrl": "https://m.media-amazon.com/images/I/31Nm8zdEglL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fdp%2FB0CQ4H4H7X%3Ftag%3Dhawk-future-21%26linkCode%3Dogi%26th%3D1%26psc%3D1%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AMD Ryzen 7 8700G",        "score": 90,        "category": "BEST CPU GRAPHICS",        "imageUrl": "https://images.fie.futurecdn.net/l9873tf1jajmus37-1706714580034-100-80.jpg.webp",        "productUrl": "https://ccl.pxf.io/c/221109/1991091/24481?sharedId=hawk-prefix&subId1=hawk-custom-tracking&prodsku=CPU0896&u=https%3A%2F%2Fwww.cclonline.com%2F100-100001236box-amd-ryzen-7-8700g-4-2ghz-octa-core-am5-cpu-437727%2F&intsrc=CATF_16482"      }    ]  },  {    "id": "best-graphics-card-2025",    "name": "Best graphics card 2025",    "guideUrl": "https://www.pcgamer.com/the-best-graphics-cards/",    "category": "Core Components",    "products": [      {        "modelName": "AMD Radeon RX 9070",        "score": 80,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Damd%2Bradeon%2Brx%2B9070%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AMD Radeon RX 9060 XT 16 GB",        "score": 80,        "category": "BEST VALUE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Damd%2Bradeon%2Brx%2B9060%2Bxt%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Intel Arc B570",        "score": 70,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dintel%2Barc%2Bb570%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Nvidia GeForce RTX 5070 Ti",        "score": 90,        "category": "BEST MID-RANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnvidia%2Brtx%2B5070%2Bti%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Nvidia GeForce RTX 5090",        "score": 80,        "category": "BEST HIGH-END",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnvidia%2Brtx%2B5090%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-chair-2025",    "name": "Best gaming chair 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-chairs/",    "category": "Chairs & Desks",    "products": [      {        "modelName": "Secretlab Titan Evo",        "score": 100,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Btitan%2Bevo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Corsair TC100 Relaxed",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcorsair%2Btc100%2Brelaxed%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Herman Miller Embody",        "score": 90,        "category": "BEST LUXURY",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dherman%2Bmiller%2Bembody%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ThunderX3 Core",        "score": 80,        "category": "BEST SUPPORT",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dthunderx3%2Bcore%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AndaSeat Kaiser 4 XL",        "score": 100,        "category": "BEST BIG BOI",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dandaseat%2Bkaiser%2B4%2Bxl%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Neuechair",        "score": 90,        "category": "BEST OFFICE",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dneuechair%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ThunderX3 Flex Pro",        "score": 90,        "category": "BEST BUDGET OFFICE",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dthunderx3%2Bflex%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-laptop-2025",    "name": "Best gaming laptop 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-laptop/",    "category": "Systems & Laptops",    "products": [      {        "modelName": "Razer Blade 16 (2025)",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bblade%2B16%2B2025%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lenovo LOQ 15 Gen 10",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgigabyte%2Bg6x%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer Blade 14 (2025)",        "score": 90,        "category": "BEST 14-INCH",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bblade%2B14%2B2025%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "MSI Vector 16 HX AI A2XWIG",        "score": 80,        "category": "BEST MID-RANGE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bvector%2B16%2Bhx%2Bai%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lenovo Legion Pro 7i (Gen 10)",        "score": 90,        "category": "BEST HIGH-PERFORMANCE",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlenovo%2Blegion%2Bpro%2B7i%2Bgen%2B10%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware 18 Area-51 Gaming Laptop",        "score": 90,        "category": "BEST 18-INCH",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgigabyte%2Baorus%2B17x%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-monitors-2025",    "name": "Best gaming monitors 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-monitor",    "category": "Screens",    "products": [      {        "modelName": "MSI MPG 321URX QD-OLED",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmpg%2B321urx%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "LG Ultragear 27GR93U",        "score": 90,        "category": "BEST 4K",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlg%2Bultragear%2B27gr93u%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Gigabyte M28U",        "score": 90,        "category": "BEST BUDGET 4K",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgigabyte%2Bm28u%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Xiaomi G Pro 27i",        "score": 80,        "category": "BEST 1440P",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxiaomi%2Bg%2Bpro%2B27i%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "KTC H27T22C-3",        "score": 90,        "category": "BEST BUDGET 1440P",        "imageUrl": "https://m.media-amazon.com/images/I/71e9xcyChTL._AC_UY218_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dpixio%2Bpxc277%2Badvanced%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AOC C27G4ZXE",        "score": 70,        "category": "BEST BUDGET 1080P",        "imageUrl": "https://images.fie.futurecdn.net/hsmwjtu6dqod2168-17630297685224.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Daoc%2Bgaming%2Bc27g4zxe%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Swift OLED PG34WCDM",        "score": 90,        "category": "BEST ULTRAWIDE",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bswift%2Boled%2Bpg34wcdm%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Odyssey OLED G9",        "score": 90,        "category": "BEST 32:9",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsamsung%2Bodyssey%2Boled%2Bg9%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock Phantom PG34WQ15R2B",        "score": 90,        "category": "BEST BUDGET ULTRAWIDE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bphantom%2Bpg34wq15r2b%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "LG Ultragear 32GS95UE",        "score": 90,        "category": "BEST WOLED",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlg%2Bultragear%2B32gs95ue%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "MSI MPG271QRX",        "score": 90,        "category": "BEST 1440P OLED",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmpg%2B271qrx%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware AW2725Q",        "score": 100,        "category": "BEST BUDGET OLED ULTRAWIDE",        "imageUrl": "https://m.media-amazon.com/images/I/41HjJn0FcpL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dalienware%2B34%2Bqd-oled%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware AW2725QF",        "score": 90,        "category": "BEST DUAL-MODE",        "imageUrl": "https://m.media-amazon.com/images/I/41HjJn0FcpL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dalienware%2Baw2725qf%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-headset-2025",    "name": "Best gaming headset 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-headset",    "category": "Peripherals",    "products": [      {        "modelName": "HyperX Cloud Alpha",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyperx%2Bcloud%2Balpha%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Corsair HS55 Stereo",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcorsair%2Bhs55%2Bstereo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "HyperX Cloud Alpha Wireless",        "score": 90,        "category": "BEST WIRELESS",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyperx%2Bcloud%2Balpha%2Bwireless%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Turtle Beach Stealth 600 Gen 3",        "score": 90,        "category": "BEST MID-RANGE WIRELESS",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dturtle%2Bbeach%2Bstealth%2B600%2Bgen%2B3%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Beyerdynamic MMX 330 Pro",        "score": 90,        "category": "BEST AUDIOPHILE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbeyerdynamic%2Bmmx%2B330%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Audeze Maxwell",        "score": 90,        "category": "BEST WIRELESS AUDIOPHILE",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Daudeze%2Bmaxwell%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Audio-Technica ATH-M50xSTS StreamSet",        "score": 100,        "category": "BEST FOR STREAMING",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Daudio-technica%2Bath-m50xsts%2Bstreamset%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AceZone A-Spire",        "score": 100,        "category": "BEST NOISE-CANCELLING",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dacezone%2Ba-spire%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Steelseries Arctis GameBuds",        "score": 90,        "category": "BEST EARBUDS",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsteelseries%2Barctis%2Bgamebuds%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-pc-2025",    "name": "Best gaming PC 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-pc/",    "category": "Systems & Laptops",    "products": [      {        "modelName": "HP Omen 35L",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhp%2Bomen%2B35l%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lenovo Legion Tower 5i (Gen 8)",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlenovo%2Blegion%2Btower%2B5i%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Velocity Micro Raptor ES40",        "score": 80,        "category": "BEST COMPACT",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dvelocity%2Bmicro%2Braptor%2Bes40%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware Area-51 Gaming Desktop",        "score": 80,        "category": "ALIENWARE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dalienware%2Baurora%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Minisforum AtomMan G7 PT",        "score": 90,        "category": "BEST MINI PC",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dminisforum%2Batomman%2Bg7%2Bpt%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-rigs-2025",    "name": "Best gaming rigs 2025",    "guideUrl": "https://www.pcgamer.com/hardware/this-is-all-the-best-pc-gaming-gear-we-recommend-in-one-techie-tier-list/",    "category": "Systems & Laptops",    "products": [      {        "modelName": "Razer Blade 16 (2025)",        "score": 90,        "category": "BEST GAMING LAPTOP",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bblade%2B16%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "HP Omen 35L",        "score": 90,        "category": "BEST GAMING PC",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhp%2Bomen%2B35l%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lenovo Legion Go S SteamOS",        "score": 90,        "category": "BEST HANDHELD GAMING PC",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlenovo%2Blegion%2Bgo%2Bs%2Bsteamos%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Meta Quest 3",        "score": 90,        "category": "BEST VR HEADSET",        "imageUrl": "https://m.media-amazon.com/images/I/61tE7IcuLlL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmeta%2Bquest%2B3%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-desk-2025",    "name": "Best gaming desk 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-desk/",    "category": "Chairs & Desks",    "products": [      {        "modelName": "Secretlab Magnus Pro XL",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Bmagnus%2Bpro%2Bxl%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Ikea Utespelare",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dikea%2Butespelare%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Arozzi Arena",        "score": 80,        "category": "BEST MID-RANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darozzi%2Barena%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "E7L Pro L-Shaped Standing Desk",        "score": 90,        "category": "BEST L-SHAPE",        "imageUrl": "https://cnmegk4mhxmt.compat.objectstorage.eu-frankfurt-1.oraclecloud.com/prod-eu-s3/trantor/attachments/UK/E7L_DIY_wei%C3%9F.png",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dflexispot%2Be7l%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Flexispot E1",        "score": 90,        "category": "BEST BUDGET MOTORIZED",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dflexispot%2Be1%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Fnatic X Chopvalue Revive Pro",        "score": 90,        "category": "BEST SUSTAINABLE",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dfnatic%2Bchopvalue%2Brevive%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "VariDesk Pro Plus",        "score": 80,        "category": "BEST CONVERTIBLE",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dvaridesk%2Bpro%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-microphone-for-gaming-2025",    "name": "Best microphone for gaming 2025",    "guideUrl": "https://www.pcgamer.com/best-microphone-gaming-streaming/",    "category": "Peripherals",    "products": [      {        "modelName": "Shure MV6",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dshure%2Bmv6%2Busb%2Bgaming%2Bmicrophone%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Amazon Basics USB Condenser Microphone",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Damazon%2Bbasics%2Busb%2Bcondenser%2Bmicrophone%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT Capsule Elite",        "score": 90,        "category": "BEST MID-RANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bcapsule%2Belite%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Sennheiser Profile Streaming Set",        "score": 90,        "category": "BEST USB BUNDLE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsennheiser%2Bprofile%2Bstreaming%2Bset%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "HyperX Quadcast S",        "score": 90,        "category": "BEST LOOKING",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyperx%2Bquadcast%2Bs%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Shure MV7+",        "score": 90,        "category": "BEST PODCASTING",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dshure%2Bmv7%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "SteelSeries Alias Pro",        "score": 100,        "category": "BEST STREAMING",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsteelseries%2Balias%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Audio-Technica ATH-M50xSTS StreamSet",        "score": 100,        "category": "BEST HEADSET MIC",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Daudio-technica%2Bath-m50xsts%2Bstreamset%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-webcam-2025",    "name": "Best webcam 2025",    "guideUrl": "https://www.pcgamer.com/best-webcams/",    "category": "Peripherals",    "products": [      {        "modelName": "Elgato Facecam MK.2",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Delgato%2Bfacecam%2Bmk.2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech C920",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bc920%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Streamplify Cam",        "score": 80,        "category": "BEST FOR STREAMERS",        "imageUrl": "https://cdn.mos.cms.futurecdn.net/CyP36WRjtY8scD2KqMBaeG-970-80.jpg.webp",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dstreamplify%2Bcam%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Obsbot Meet 2",        "score": 80,        "category": "BEST 4K",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dobsbot%2Bmeet%2B2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Obsbot Tiny 2 Lite 4K",        "score": 90,        "category": "BEST HIGH-END",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dobsbot%2Btiny%2B2%2Blite%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer Kiyo Pro",        "score": 80,        "category": "BEST LOW LIGHT",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bkiyo%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-pc-controller-2025",    "name": "Best PC controller 2025",    "guideUrl": "https://www.pcgamer.com/best-controller-for-pc-gaming/",    "category": "Peripherals",    "products": [      {        "modelName": "Xbox Wireless Controller",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Bwireless%2Bcontroller%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "GameSir Nova Lite",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgamesir%2Bnova%2Blite%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Xbox Elite Series 2",        "score": 90,        "category": "BEST PREMIUM",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Belite%2Bseries%2B2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Scuf Instinct Pro",        "score": 90,        "category": "BEST CUSTOMIZABLE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dscuf%2Binstinct%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Sony DualSense",        "score": 80,        "category": "BEST HAPTICS",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsony%2Bdualsense%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer Wolverine V3 Pro",        "score": 90,        "category": "BEST HALL EFFECT",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bwolverine%2Bv3%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-handheld-pc-2025",    "name": "Best handheld PC 2025",    "guideUrl": "https://www.pcgamer.com/best-handheld-gaming-pc/",    "category": "Systems & Laptops",    "products": [      {        "modelName": "Lenovo Legion Go S SteamOS",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlenovo%2Blegion%2Bgo%2Bs%2Bsteamos%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Valve Steam Deck",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsteam%2Bdeck%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "MSI Claw 8 AI+",        "score": 90,        "category": "BEST WINDOWS",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bclaw%2B8%2Bai%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lenovo Legion Go",        "score": 80,        "category": "BEST BIG SCREEN",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlenovo%2Blegion%2Bgo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Ayaneo Flip DS",        "score": 90,        "category": "BEST COMPACT",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dayaneo%2Bflip%2Bds%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-mini-pc-2025",    "name": "Best mini PC 2025",    "guideUrl": "https://www.pcgamer.com/hardware/gaming-pcs/best-mini-pcs-for-gaming/",    "category": "Systems & Laptops",    "products": [      {        "modelName": "MinisForum AtomMan G7 PT",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dminisforum%2Batomman%2Bg7%2Bpt%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Minisforum Venus UM790 Pro",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dminisforum%2Bvenus%2Bum790%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG NUC 970",        "score": 90,        "category": "BEST PURE GAMING",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bnuc%2B970%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Geekom AX8 Pro",        "score": 80,        "category": "BEST COMPACT",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgeekom%2Bax8%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Ayaneo Retro Mini AM02",        "score": 80,        "category": "BEST LOOKING",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dayaneo%2Bretro%2Bmini%2Bam02%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Beelink SER9",        "score": 90,        "category": "BEST IGPU",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbeelink%2Bser9%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-oled-gaming-monitor-2025",    "name": "Best OLED gaming monitor 2025",    "guideUrl": "https://www.pcgamer.com/best-oled-gaming-monitor/",    "category": "Screens",    "products": [      {        "modelName": "MSI MPG 321URX QD-OLED",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmpg%2B321urx%2Bqd-oled%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "MSI MPG 271QRX",        "score": 90,        "category": "BEST 1440P",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmpg%2B271qrx%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Swift OLED PG34WCDM",        "score": 90,        "category": "BEST ULTRAWIDE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bswift%2Boled%2Bpg34wcdm%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Odyssey OLED G9",        "score": 90,        "category": "BEST 32:9 RATIO",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsamsung%2Bodyssey%2Boled%2Bg9%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware 34 QD-OLED AW3423DWF",        "score": 100,        "category": "BEST BUDGET ULTRAWIDE",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dalienware%2B34%2Bqd-oled%2Baw3423dwf%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "LG UltraGear 32GS95UE",        "score": 90,        "category": "BEST WOLED",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlg%2Bultragear%2B32gs95ue%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware AW2725Q",        "score": 90,        "category": "BEST 27-INCH",        "imageUrl": "https://m.media-amazon.com/images/I/41HjJn0FcpL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dalienware%2B27%2Baw2725q%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-keyboard-2025",    "name": "Best gaming keyboard 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-keyboard/",    "category": "Peripherals",    "products": [      {        "modelName": "Asus ROG Strix Scope II 96 Wireless",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bscope%2Bii%2B96%2Bwireless%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Gamakay x Naughshark NS68",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgamakay%2Bnaughshark%2Bns68%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Ducky Zero 6108",        "score": 90,        "category": "BEST MID-RANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dducky%2Bzero%2B6108%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Wooting 80HE",        "score": 80,        "category": "BEST RAPID TRIGGER",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dwooting%2B80he%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Keychron K2 HE",        "score": 90,        "category": "BEST WIRELESS RAPID TRIGGER",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dkeychron%2Bk2%2Bhe%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Be Quiet! Light Mount",        "score": 90,        "category": "BEST SILENT",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbe%2Bquiet%2Blight%2Bmount%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Keychron Q3 Max",        "score": 90,        "category": "BEST TENKEYLESS",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dkeychron%2Bq3%2Bmax%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NuPhy Air60 HE",        "score": 90,        "category": "BEST LOW PROFILE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnuphy%2Bair60%2Bhe%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Kinesis Freestyle Edge RGB",        "score": 90,        "category": "BEST ERGONOMIC",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dkinesis%2Bfreestyle%2Bedge%2Brgb%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Roccat Magma",        "score": 80,        "category": "BEST MEMBRANE",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Droccat%2Bmagma%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-mouse-2025",    "name": "Best gaming mouse 2025",    "guideUrl": "https://www.pcgamer.com/the-best-gaming-mouse/",    "category": "Peripherals",    "products": [      {        "modelName": "Razer DeathAdder V4 Pro",        "score": 90,        "category": "BEST WIRELESS",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bdeathadder%2Bv4%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech G502 X",        "score": 90,        "category": "BEST WIRED",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bg502%2Bx%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech G305 Lightspeed",        "score": 90,        "category": "BEST BUDGET WIRELESS",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bg305%2Blightspeed%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Glorious Model O Eternal",        "score": 90,        "category": "BEST BUDGET WIRED",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dglorious%2Bmodel%2Bo%2Beternal%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Turtle Beach Burst II Air",        "score": 90,        "category": "BEST LIGHTWEIGHT",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dturtle%2Bbeach%2Bburst%2Bii%2Bair%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer Naga Pro",        "score": 90,        "category": "BEST MMO",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bnaga%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer Cobra Pro",        "score": 80,        "category": "BEST COMPACT",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bcobra%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech G Pro",        "score": 90,        "category": "BEST AMBIDEXTROUS",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bg%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Keychron M5",        "score": 90,        "category": "BEST ERGONOMIC",        "imageUrl": "https://images.fie.futurecdn.net/gp7wdddkdvrzgxox-17630301391647.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dkeychron%2Bm5%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-ssd-for-gaming-2025",    "name": "Best SSD for gaming 2025",    "guideUrl": "https://www.pcgamer.com/best-ssd-for-gaming/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "WD Black SN7100 2TB SSD",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dwd%2Bblack%2Bsn7100%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lexar NM790",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlexar%2Bnm790%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "WD_Black SN8100",        "score": 90,        "category": "BEST PCIE 5.0",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dwd%2Bblack%2Bsn8100%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Crucial P510",        "score": 90,        "category": "BEST BUDGET PCIE 5.0",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcrucial%2Bp510%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "TeamGroup MP44 2TB",        "score": 90,        "category": "BEST 4 TB",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dteamgroup%2Bmp44%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Black SN850X 8TB",        "score": 80,        "category": "BEST 8 TB",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dwd%2Bblack%2Bsn850x%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lexar Play (2230) 1TB SSD",        "score": 80,        "category": "BEST M.2 2230",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlexar%2Bplay%2B2230%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Silicon Power XS70 2TB SSD",        "score": 90,        "category": "BEST FOR PS5",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsilicon%2Bpower%2Bxs70%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Crucial MX500 1TB",        "score": 90,        "category": "BEST SATA",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcrucial%2Bmx500%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-pc-fans-2025",    "name": "Best PC fans 2025",    "guideUrl": "https://www.pcgamer.com/best-pc-fans/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "Noctua NF-A12x25 G2",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnoctua%2Bnf-a12x25%2Bg2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Noctua NF-P12 redux-1700",        "score": 70,        "category": "BEST MIDRANGE",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnoctua%2Bnf-p12%2Bredux-1700%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Arctic P12 PWM PST",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darctic%2Bp12%2Bpwm%2Bpst%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Corsair iCUE LINK QX120 RGB",        "score": 80,        "category": "BEST RGB",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcorsair%2Bicue%2Blink%2Bqx120%2Brgb%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT F120 RGB Duo",        "score": 70,        "category": "BEST BUDGET RGB",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bf120%2Brgb%2Bduo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Arctic P12 Pro",        "score": 80,        "category": "BEST FOR RADIATORS",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darctic%2Bp12%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-cpu-coolers-2025",    "name": "Best CPU coolers 2025",    "guideUrl": "https://www.pcgamer.com/best-cpu-coolers/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "Arctic Liquid Freezer III Pro",        "score": 80,        "category": "BEST AIO",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darctic%2Bliquid%2Bfreezer%2Biii%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Cooler Master MasterLiquid Core II",        "score": 80,        "category": "BEST BUDGET AIO",        "imageUrl": "https://images.fie.futurecdn.net/9si620spbsuucnah-17630323687903.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcooler%2Bmaster%2Bmasterliquid%2Bcore%2Bii%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Be Quiet! Light Loop",        "score": 90,        "category": "BEST HIGH-END AIO",        "imageUrl": "https://m.media-amazon.com/images/I/319y6QO-FlL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbe%2Bquiet%2Blight%2Bloop%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT Kraken Elite",        "score": 80,        "category": "BEST SCREEN",        "imageUrl": "https://images.fie.futurecdn.net/tkq7wk3yx52kqtcj-17630325331208.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bkraken%2Belite%2Brgb%2B2024%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Noctua NH-D15 G2",        "score": 90,        "category": "BEST AIR",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnoctua%2Bnh-d15%2Bg2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Arctic Freezer 36",        "score": 80,        "category": "BEST BUDGET AIR",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darctic%2Bfreezer%2B36%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-liquid-coolers-2025",    "name": "Best liquid coolers 2025",    "guideUrl": "https://www.pcgamer.com/best-cpu-coolers/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "Arctic Liquid Freezer III Pro",        "score": 80,        "category": "BEST AIO",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darctic%2Bliquid%2Bfreezer%2Biii%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Cooler Master MasterLiquid Core II",        "score": 80,        "category": "BEST BUDGET AIO",        "imageUrl": "https://images.fie.futurecdn.net/9si620spbsuucnah-17630323687903.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcooler%2Bmaster%2Bmasterliquid%2Bcore%2Bii%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Be Quiet! Light Loop",        "score": 90,        "category": "BEST HIGH-END AIO",        "imageUrl": "https://m.media-amazon.com/images/I/319y6QO-FlL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbe%2Bquiet%2Blight%2Bloop%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT Kraken Elite",        "score": 80,        "category": "BEST SCREEN",        "imageUrl": "https://images.fie.futurecdn.net/tkq7wk3yx52kqtcj-17630325331208.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bkraken%2Belite%2Brgb%2B2024%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Corsair Nautilus RS",        "score": 80,        "category": "BEST STEALTH",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcorsair%2Bnautilus%2Brs%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-external-ssds-2025",    "name": "Best external SSDs 2025",    "guideUrl": "https://www.pcgamer.com/best-external-ssd-for-game-storage/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "Adata SD810",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dadata%2Bsd810%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Crucial X9",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcrucial%2Bx9%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Samsung T9",        "score": 90,        "category": "BEST FOR VIDEO EDITING",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsamsung%2Bt9%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Sandisk Extreme Pro",        "score": 90,        "category": "BEST USB4",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsandisk%2Bextreme%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Seagate Ultra Compact SSD",        "score": 90,        "category": "BEST THUMB DRIVE REPLACEMENT",        "imageUrl": "https://m.media-amazon.com/images/I/31y74KQc+WL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dseagate%2Bultra%2Bcompact%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "LaCie Rugged Pro 5",        "score": 90,        "category": "BEST DURABLE DRIVE",        "imageUrl": "https://m.media-amazon.com/images/I/31WHE8uVTqL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlacie%2Brugged%2Bpro%2B5%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Samsung T7 Shield",        "score": 90,        "category": "BEST BUDGET DURABLE",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsamsung%2Bt7%2Bshield%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "SanDisk Desk Drive",        "score": 90,        "category": "BEST FOR BACKUPS",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsandisk%2Bdesk%2Bdrive%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-pc-cases-2025",    "name": "Best PC cases 2025",    "guideUrl": "https://www.pcgamer.com/best-pc-case/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "Havn HS 420",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhavn%2Bhs%2B420%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Phanteks Eclipse G400A",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://images.fie.futurecdn.net/dand1e795vud9qus-17630329854271.webp",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dphanteks%2Bg400a%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Hyte Y40",        "score": 80,        "category": "BEST MIDRANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyte%2By40%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Thermaltake S100 TG Snow Edition",        "score": 80,        "category": "BEST BUDGET COMPACT",        "imageUrl": "https://images.fie.futurecdn.net/iulafpmmjvvclyki-17630330556771.webp",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dthermaltake%2Bs100%2Btg%2Bsnow%2Bedition%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT H9 Flow RGB+",        "score": 90,        "category": "BEST HIGH-END",        "imageUrl": "https://images.fie.futurecdn.net/xdt4cjspadsxxczo-17630333059636.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bh9%2Bflow%2Brgb%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Fractal Design Terra",        "score": 80,        "category": "BEST MINI-ITX",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dfractal%2Bdesign%2Bterra%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT H3 Flow",        "score": 80,        "category": "BEST MICRO-ATX",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bh3%2Bflow%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT H7 Flow",        "score": 80,        "category": "BEST FULL-TOWER",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bh7%2Bflow%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Hyte Y70 Touch Infinite",        "score": 90,        "category": "BEST DUAL-CHAMBER",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyte%2By70%2Btouch%2Binfinite%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lian Li O11 Vision Compact",        "score": 90,        "category": "BEST FISH TANK",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlian%2Bli%2Bo11%2Bvision%2Bcompact%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Phanteks Evolv X2",        "score": 80,        "category": "BEST LOOKING",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dphanteks%2Bevolv%2Bx2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Be Quiet! Shadow Base 800 FX",        "score": 80,        "category": "BEST FOR BEGINNERS",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbe%2Bquiet%2Bshadow%2Bbase%2B800%2Bfx%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-pc-speaker-2025",    "name": "Best PC speaker 2025",    "guideUrl": "https://www.pcgamer.com/best-computer-speakers/",    "category": "Peripherals",    "products": [      {        "modelName": "Mackie CR8SBT",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/41wiwArhoVL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmackie%2Bcr3.5bt%2Bcr8sbt%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Creative Pebble Plus",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcreative%2Bpebble%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech Z407",        "score": 80,        "category": "BEST MIDRANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bz407%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Creative Sound Blaster Katana V2",        "score": 90,        "category": "BEST GAMING SOUNDBAR",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcreative%2Bsound%2Bblaster%2Bkatana%2Bv2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "BlueAnt Soundblade",        "score": 90,        "category": "BEST WIRELESS GAMING SOUNDBAR",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dblueant%2Bsoundblade%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "FiiO SP3 BT",        "score": 90,        "category": "BEST BOOKSHELF SPEAKERS",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dfiio%2Bsp3%2Bbt%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Kanto Ora",        "score": 80,        "category": "BEST REFERENCE SPEAKERS",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dkanto%2Bora%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-capture-cards-2025",    "name": "Best capture cards 2025",    "guideUrl": "https://www.pcgamer.com/best-capture-card-for-pc-gaming/",    "category": "Peripherals",    "products": [      {        "modelName": "AverMedia GC553Pro",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://images.fie.futurecdn.net/p2tryxiihh0css2c-17630319116723.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Davermedia%2Blive%2Bgamer%2Bultra%2Bs%2Bgc553pro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Elgato Game Capture Neo",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Delgato%2Bgame%2Bcapture%2Bneo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AVerMedia Live Gamer Duo",        "score": 90,        "category": "BEST TWO SOURCE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Davermedia%2Blive%2Bgamer%2Bduo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AVerMedia Live Gamer Ultra 2.1",        "score": 90,        "category": "BEST 4K",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Davermedia%2Blive%2Bgamer%2Bultra%2B2.1%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Elgato 4K60 S+",        "score": 90,        "category": "BEST STANDALONE",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Delgato%2B4k60%2Bs%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AVerMedia GC313Pro",        "score": 80,        "category": "BEST FOR HANDHELD GAMING PCS",        "imageUrl": "https://images.fie.futurecdn.net/atr01qndlbw7pbtc-17630320130564.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Davermedia%2Belite%2Bgo%2Bgc313pro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-motherboard-2025",    "name": "Best gaming motherboard 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-motherboards/",    "category": "Core Components",    "products": [      {        "modelName": "MAG X870E Tomahawk Wifi",        "score": 90,        "category": "BEST AM5",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmag%2Bx870%2Btomahawk%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus TUF Gaming B650-Plus WiFi",        "score": 80,        "category": "BEST BUDGET AM5",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Btuf%2Bgaming%2Bb650-plus%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock B850 Steel Legend WiFi",        "score": 80,        "category": "BEST MIDRANGE AM5",        "imageUrl": "https://images.fie.futurecdn.net/heweoulvrof3zzc6-17630286906889.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bb850%2Bsteel%2Blegend%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Strix B550-E Gaming",        "score": 80,        "category": "BEST AM4",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bb550-e%2Bgaming%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Maximus Z890 Hero",        "score": 80,        "category": "BEST LGA1851",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bmaximus%2Bz890%2Bhero%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "B860 Steel Legend Wi-Fi",        "score": 90,        "category": "BEST BUDGET LGA1851 - INTEL CORE ULTRA 200S",        "imageUrl": "https://images.fie.futurecdn.net/6mqsb9k9bajh3eki-17630287317002.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bb860%2Bsteel%2Blegend%2Bwi-fi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "MSI MAG Z790 Tomahawk WiFi",        "score": 90,        "category": "BEST LGA1700",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmag%2Bz790%2Btomahawk%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "B760M PG Sonic WiFi",        "score": 80,        "category": "BEST BUDGET LGA1700",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bb760m%2Bpg%2Bsonic%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-mini-itx-motherboard",    "name": "Best Mini-ITX motherboard",    "guideUrl": "https://www.pcgamer.com/hardware/motherboards/best-mini-itx-motherboards/",    "category": "Core Components",    "products": [      {        "modelName": "Asus ROG Strix X870-I Gaming WiFi",        "score": 80,        "category": "BEST AMD AM5",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bx870-i%2Bgaming%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Gigabyte A620I AX",        "score": 90,        "category": "BEST BUDGET AMD AM5",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgigabyte%2Ba620i%2Bax%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Phantom Gaming B850I Lightning Wi-Fi",        "score": 80,        "category": "BEST MID-RANGE AMD AM5",        "imageUrl": "https://images.fie.futurecdn.net/z4a8hrmr3osvenhv-17630287825879.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bphantom%2Bb850i%2Blightning%2Bwi-fi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock A520M-ITX/ac",        "score": 80,        "category": "BEST BUDGET AM4",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Ba520m-itx%2Fac%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock Phantom Gaming B860I Lightning Wi-Fi",        "score": 80,        "category": "BEST INTEL CORE ULTRA 200S",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bphantom%2Bgaming%2Bb860i%2Blightning%2Bwi-fi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Strix Z790-I Gaming WiFi",        "score": 90,        "category": "BEST INTEL 14TH/13TH GEN",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bz790-i%2Bgaming%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock B760I Lightning WiFi",        "score": 80,        "category": "BEST BUDGET INTEL 14TH/13TH GEN",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bb760i%2Blightning%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-ram-for-gaming-2025",    "name": "Best RAM for gaming 2025",    "guideUrl": "https://www.pcgamer.com/best-ram-for-gaming/",    "category": "Core Components",    "products": [      {        "modelName": "Trident Z5 RGB DDR5-7200 CL34 32GB",        "score": 80,        "category": "BEST DDR5 OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dg.skill%2Btrident%2Bz5%2Brgb%2B32gb%2Bddr5-7200%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "TeamGroup T-Force Vulcan DDR5 32GB (2x16GB) 5200MHz",        "score": 80,        "category": "BEST BUDGET DDR5",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dteamgroup%2Bt-force%2Bvulcan%2Bddr5-5200%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "G.Skill Trident Z5 64GB 6400MT/s",        "score": 80,        "category": "BEST HIGH-CAPACITY DDR5",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dg.skill%2Btrident%2Bz5%2B64gb%2Bddr5-6400%2Bcl32%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "TeamGroup T-Force Xtreem ARGB (2x 8GB)",        "score": 90,        "category": "BEST DDR4 OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dteam%2Bxtreem%2B16gb%2Bddr4-3600%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "G.Skill Ripjaws V Series 16GB DDR4-3600 PC4-28800 F4-3600C16D-16GVKC",        "score": 80,        "category": "BEST BUDGET DDR4",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dg.skill%2Bripjaws%2Bv%2B16gb%2Bddr4-3600%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Corsair Dominator Platinum RGB 32GB DDR4-3200MHz",        "score": 90,        "category": "BEST HIGH-CAPACITY DDR4",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcorsair%2Bdominator%2Bplatinum%2Brgb%2B32gb%2Bddr4-3200%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  }];            // --- Inlined components/StarRating.tsx ---      const StarRating = ({ score }) => {        const rating = (score / 100) * 5;        const stars = [];        for (let i = 1; i <= 5; i++) {          const fillAmount = Math.min(1, Math.max(0, rating - (i - 1)));          const clipId = 'pcg-clip-partial-' + i + '-' + Math.random().toString(36).substr(2, 9);          if (fillAmount >= 0.99) {            stars.push(React.createElement('div', { key: i, className: "pcg-star pcg-star-full" }, React.createElement('svg', { className: "pcg-star-svg" }, React.createElement('use', { href: "#pcg-tr-star-full" }))));          } else if (fillAmount > 0.01) {            stars.push(React.createElement('div', { key: i, className: "pcg-star" }, React.createElement('svg', { className: "pcg-star-svg pcg-star-empty" }, React.createElement('use', { href: "#pcg-tr-star-empty" })), React.createElement('div', { className: "pcg-star-partial" }, React.createElement('svg', { className: "pcg-star-svg" }, React.createElement('defs', null, React.createElement('clipPath', { id: clipId }, React.createElement('rect', { x: "0", y: "0", width: (fillAmount * 100) + '%', height: "100%" }))), React.createElement('use', { href: "#pcg-tr-star-full", clipPath: 'url(#' + clipId + ')' })))));          } else {            stars.push(React.createElement('div', { key: i, className: "pcg-star pcg-star-empty" }, React.createElement('svg', { className: "pcg-star-svg" }, React.createElement('use', { href: "#pcg-tr-star-empty" }))));          }        }        return React.createElement('div', { className: "pcg-stars", "aria-label": rating.toFixed(1) + ' out of 5 stars' }, stars);      };      // --- Inlined components/ComparisonList.tsx ---      const ComparisonList = ({ offers, id, productImageUrl, originalModelName, onClose }) => {          const decodeHtmlEntities = (text) => {              if (typeof text !== 'string') return '';              const textArea = document.createElement('textarea');              textArea.innerHTML = text;              return textArea.value;          };                const offerElements = offers.map((offer, index) => {              const modelName = offer.name?.trim() || originalModelName || 'Product';              const isLowest = index === 0;              const rowClassName = 'pcg-comparison-row ' + (isLowest ? 'pcg-comparison-row-sticky' : '');              const linkProps = {                href: offer.productUrl,                target: "_blank",                rel: "noopener noreferrer sponsored",                "data-hawkify-clicked-area": "cta",                "data-hawkify-category": "PC Gamer comparison price button",                "data-hawkify-widget-type": "comparison-buy-now",              };                    const rowHeader = React.createElement('div', { className: 'pcg-comparison-row-header' },                  React.createElement('div', { className: 'pcg-comparison-model-name' }, modelName)              );              const rowContent = React.createElement('div', { className: 'pcg-comparison-row-content' },                  React.createElement('span', { className: "pcg-comparison-number" }, index + 1),                  React.createElement('img', { src: productImageUrl, alt: "", className: "pcg-comparison-product-image", onError: (e) => { e.target.src = 'https://placehold.co/60x60/E2E8F0/4A5568?text=Img'; } }),                  React.createElement('div', { className: "pcg-comparison-retailer-logo-container" },                      offer.logoUrl && React.createElement('img', { src: offer.logoUrl, alt: offer.retailer + ' logo', className: "pcg-retailer-logo", loading: "lazy" })                  ),                  React.createElement('div', { className: 'pcg-comparison-price-wrapper' },                      isLowest && React.createElement('div', { className: 'pcg-lowest-price-badge' }, 'Lowest Price'),                      React.createElement('span', { className: "pcg-comparison-price" }, offer.isPriceVague ? 'Check Price' : decodeHtmlEntities(offer.currencySymbol) + offer.price)                  ),                  React.createElement('a', {...linkProps, className: "pcg-comparison-button"}, 'View')              );                    return React.createElement('div', {                  key: index,                  className: rowClassName,              },                  rowHeader,                  rowContent              );          });                    const chevronUp = React.createElement('svg', { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "currentColor", className: "pcg-chevron", viewBox: "0 0 16 16", "aria-hidden": "true" },             React.createElement('path', { d: "M8 4l6 6H2l6-6z" })          );                const hideButton = React.createElement('div', { className: "pcg-show-more-container" },              React.createElement('button', { onClick: onClose, className: "pcg-show-more-button" }, 'Hide', chevronUp)          );                return React.createElement('div', { id: id, className: "pcg-comparison-container", "aria-label": "Price comparison list" },              React.createElement('div', { className: 'pcg-comparison-list-scrollable' }, offerElements),              hideButton          );      };      // --- Inlined components/ProductRow.tsx ---      const ProductRow = ({ product, index, isExpanded, onToggleCompare }) => {        const decodeHtmlEntities = (text) => {            if (typeof text !== 'string') return '';            const textArea = document.createElement('textarea');            textArea.innerHTML = text;            return textArea.value;        };        const getPriceDisplay = () => {            if (!product.price || product.price === 'Check Amazon') {                return 'Check Amazon';            }            if (product.priceValue !== undefined && product.currencySymbol && product.retailer) {                const formattedPrice = product.priceValue.toLocaleString();                const pricePart = decodeHtmlEntities(product.currencySymbol) + formattedPrice + ' at ';                const retailerPart = product.retailer;                const fullText = pricePart + retailerPart;                const MAX_LENGTH = 22;                if (fullText.length > MAX_LENGTH) {                    const availableLengthForRetailer = MAX_LENGTH - pricePart.length;                    if (availableLengthForRetailer > 3) {                        const truncatedRetailer = retailerPart.substring(0, availableLengthForRetailer - 3) + '...';                        return pricePart + truncatedRetailer;                    } else {                        return decodeHtmlEntities(product.currencySymbol) + formattedPrice;                    }                }                return fullText;            }            return decodeHtmlEntities(product.price);        };                const renderCompareControl = () => {          if (!product.priceCount || product.priceCount < 1) {            return null;          }          if (product.priceCount === 1) {            return React.createElement('span', { className: "pcg-compare-link pcg-compare-link-static" }, React.createElement('strong', null, '1'), ' price found');          }          const chevronDown = React.createElement('svg', { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "currentColor", className: "pcg-chevron", viewBox: "0 0 16 16", "aria-hidden": "true" }, React.createElement('path', { d: "M8 12L2 6h12L8 12z" }));          const chevronUp = React.createElement('svg', { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "currentColor", className: "pcg-chevron", viewBox: "0 0 16 16", "aria-hidden": "true" }, React.createElement('path', { d: "M8 4l6 6H2l6-6z" }));                    return React.createElement('button', {             onClick: () => onToggleCompare(product.modelName),             className: "pcg-compare-link",             "aria-expanded": isExpanded,             "aria-controls": 'comparison-list-' + index          },             React.createElement('span', null,                 React.createElement('strong', null, product.priceCount),                 " prices | ",                 React.createElement('strong', null, isExpanded ? 'Hide' : 'Compare')            ),            isExpanded ? chevronUp : chevronDown          );        };        const canCompare = product.priceCount && product.priceCount > 1;        const productRowContent = React.createElement('div', { className: "pcg-product-row" },             React.createElement('img', { src: product.imageUrl, alt: product.modelName, className: "pcg-product-image", onError: (e) => { e.target.src = 'https://placehold.co/64x64/E2E8F0/4A5568?text=Image'; } }),             React.createElement('div', { className: "pcg-product-content" },                 React.createElement('div', { className: "pcg-product-info" },                     React.createElement('div', { className: "pcg-product-meta" },                         React.createElement('span', { className: "pcg-category-badge" }, product.category),                         React.createElement(StarRating, { score: product.score })                    ),                     React.createElement('a', { href: product.productUrl, target: "_blank", rel: "noopener noreferrer sponsored", className: "pcg-product-link", "data-hawkify-clicked-area": "cta", "data-hawkify-category": "PC Gamer product link", "data-hawkify-widget-type": "product-name" }, (index + 1) + '. ' + product.modelName)                ),                 React.createElement('div', { className: "pcg-price-panel" },                     React.createElement('div', null, React.createElement('a', { href: product.productUrl, target: "_blank", rel: "noopener noreferrer sponsored", className: "pcg-view-button", "data-hawkify-clicked-area": "cta", "data-hawkify-category": "PC Gamer price button", "data-hawkify-widget-type": "buy-now" }, getPriceDisplay())),                     product.price !== 'Check Amazon' && renderCompareControl()                )            )        );        const comparisonContent = canCompare && (          product.allOffers && product.allOffers.length > 0 ?            React.createElement(ComparisonList, { offers: product.allOffers, id: 'comparison-list-' + index, productImageUrl: product.imageUrl, originalModelName: product.modelName, onClose: () => onToggleCompare(product.modelName) }) :            React.createElement('div', { className: "pcg-comparison-container", id: 'comparison-list-' + index },                React.createElement('div', { className: "pcg-no-offers" }, 'No other offers found.')            )        );        return React.createElement('div', { className: 'pcg-product-row-wrapper ' + (isExpanded ? 'pcg-expanded' : '') },          productRowContent,          comparisonContent        );      };      // --- Inlined App.tsx (core logic only) ---      const App = () => {        const [productLists] = useState(allProductLists);        const configuredDefaultListId = 'best-pc-controller-2025';        const defaultList = productLists.find(l => l.id === configuredDefaultListId) || productLists[0];        const [selectedListId, setSelectedListId] = useState(defaultList.id);        const [activeCategory, setActiveCategory] = useState(defaultList.category);        const [processedProducts, setProcessedProducts] = useState([]);        const [isLoading, setIsLoading] = useState(true);        const [productDataCache, setProductDataCache] = useState({});        const [expandedProduct, setExpandedProduct] = useState(null);        const widgetContainerRef = useRef(null);                const currentList = productLists.find(list => list.id === selectedListId) || defaultList;                const categories = [...new Set(productLists.map(p => p.category))];        const filteredLists = productLists.filter(list => list.category === activeCategory);        const showGuideLinkAtTop = false;        const showLivePill = false;        const handleToggleCompare = useCallback((modelName) => {            const isOpening = expandedProduct !== modelName;            setExpandedProduct(isOpening ? modelName : null);        }, [expandedProduct]);                const handleCategoryChange = (newCategory) => {            setActiveCategory(newCategory);            const firstListInNewCategory = productLists.find(list => list.category === newCategory);            setSelectedListId(firstListInNewCategory?.id || '');        };                const handleListChange = (newListId) => {            if (newListId) {              const list = productLists.find(l => l.id === newListId);              if (list) {                setSelectedListId(list.id);                if (list.category !== activeCategory) {                  setActiveCategory(list.category);                }              }            } else {              setSelectedListId(defaultList.id);              setActiveCategory(defaultList.category);            }        };        useEffect(() => {          if (!currentList) return;          const listId = currentList.id;          if (productDataCache[listId]) {            setProcessedProducts(productDataCache[listId]);            setIsLoading(false);          } else {            setIsLoading(true);            const fetchAndCachePrices = async () => {              const productsToFetch = currentList.products;              const updatedProducts = await Promise.all(                productsToFetch.map(async (product) => {                  try {                    const encodedModelName = encodeURIComponent(product.modelName);                    const apiUrl = 'https://hawky.pcgamer.com/widget.php?model_name=' + encodedModelName + '&article_type=deals_compare&article_category=retail&language=en-US&site=PCG&all_filters=false&exclude_unlabelled=false&include_specs=false&offset=0&distinct_networks=0&multi=1&keep_duplicities=1&filter_product_types=deals%2Ccontracts%2Csubscriptions%2Cbroadband%2Csimilar&rows=50&device=mobile&origin=widgets-clientside&only_fallback_offers=false&progressive_filtering=1';                    const response = await fetch(apiUrl);                    if (!response.ok) throw new Error('HTTP error! status: ' + response.status);                    const data = await response.json();                    const offers = data?.widget?.data?.offers;                    const modelInfoData = data?.widget?.data?.model_info;                    const currencySymbolMap = { '£': 'GBP', '$': 'USD', '€': 'EUR', '¥': 'JPY' };                    let bestImage = product.imageUrl;                    const getModelId = () => {                        if (offers && offers.length > 0 && offers[0].model_id) return offers[0].model_id;                        if (modelInfoData && Object.keys(modelInfoData).length > 0) {                            const originalModelName = product.modelName.toLowerCase();                            const matchingKey = Object.keys(modelInfoData).find(key => modelInfoData[key]?.model_name?.toLowerCase().includes(originalModelName));                            if (matchingKey) return matchingKey;                            return Object.keys(modelInfoData)[0];                        }                        return null;                    };                    const modelId = getModelId();                    const allPossibleImages = [];                    if (modelId && modelInfoData && modelInfoData[modelId]?.model_image_url) {                        allPossibleImages.push(modelInfoData[modelId].model_image_url);                    }                    if (offers) {                        offers.forEach(o => { if (o.image) allPossibleImages.push(o.image); if (o.model_image) allPossibleImages.push(o.model_image); });                    }                    const uniqueImages = [...new Set(allPossibleImages.filter(img => typeof img === 'string'))];                    if (uniqueImages.length > 0) {                        const pngs = uniqueImages.filter(img => img.toLowerCase().includes('.png'));                        bestImage = pngs.length > 0 ? pngs[0] : uniqueImages[0];                    }                    if (offers && offers.length > 0) {                        const allOffersUnsorted = offers.map(offer => {                            const offerPrice = parseFloat(offer.offer.price);                            const isOfferAmazonSearch = offer.offer.link && offer.offer.link.includes('amazon.com/s?');                            const isOfferZeroPrice = offer.offer.price === "0.00";                            let name = offer.offer.display_name || offer.offer.name || '';                            if (offer.bundle_models && offer.bundle_models.length > 0) {                                const bundledItems = offer.bundle_models.map(b => b.model_name).join(' + ');                                if (name && bundledItems && !name.toLowerCase().includes(bundledItems.toLowerCase())) { name = name + ' + ' + bundledItems; }                            }                            return { price: Math.round(offerPrice).toLocaleString(), currencySymbol: offer.offer.currency_symbol || '$', retailer: offer.merchant?.name || 'retailer', productUrl: offer.offer.link || '#', isPriceVague: isOfferAmazonSearch || isOfferZeroPrice, logoUrl: offer.merchant?.logo_url, model: offer.model, name: name, priceValue: (isOfferAmazonSearch || isOfferZeroPrice) ? Infinity : offerPrice };                        });                        const allOffersSorted = allOffersUnsorted.sort((a, b) => a.priceValue - b.priceValue);                        const seen = new Set();                        const uniqueOffers = [];                        for (const offer of allOffersSorted) {                            const key = offer.retailer + '-' + offer.price;                            if (!seen.has(key)) {                                const { priceValue, ...rest } = offer;                                uniqueOffers.push(rest);                                seen.add(key);                            }                        }                        const bestOffer = offers[0];                        const price = Math.round(parseFloat(bestOffer.offer.price));                        const formattedPrice = price.toLocaleString();                        const currencySymbol = bestOffer.offer.currency_symbol || '$';                        const merchantName = bestOffer.merchant?.name || 'retailer';                        const productLink = bestOffer.offer.link;                        const isAmazonSearch = productLink && productLink.includes('amazon.com/s?');                        const isZeroPrice = bestOffer.offer.price === "0.00";                        const priceText = (isAmazonSearch || isZeroPrice) ? 'Check Amazon' : currencySymbol + formattedPrice + ' at ' + merchantName;                        const priceCount = (isZeroPrice || isAmazonSearch) ? 0 : (data?.widget?.data?.counts?.deals || 0);                        return { ...product, imageUrl: bestImage, price: priceText, productUrl: productLink || product.productUrl, compareUrl: 'https://www.pcgamer.com/deals/compare/?model_name=' + encodedModelName, priceCount: priceCount, priceValue: price, currencyCode: currencySymbolMap[currencySymbol] || 'USD', allOffers: uniqueOffers, retailer: merchantName, currencySymbol: currencySymbol };                    } else {                        return { ...product, imageUrl: bestImage, price: 'Check Amazon', compareUrl: 'https://www.pcgamer.com/deals/compare/?model_name=' + encodedModelName, allOffers: [] };                    }                  } catch (error) { console.error('Error fetching price for ' + product.modelName + ':', error); }                  return { ...product, price: 'Check Amazon', compareUrl: 'https://www.pcgamer.com/deals/compare/?model_name=' + encodeURIComponent(product.modelName), allOffers: [] };                })              );              setProductDataCache(prevCache => ({ ...prevCache, [listId]: updatedProducts }));              setProcessedProducts(updatedProducts);              setIsLoading(false);            };            fetchAndCachePrices();          }        }, [currentList, productDataCache]);        useEffect(() => {          if (isLoading || processedProducts.length === 0) return;          const schema = { '@context': 'https://schema.org', '@type': 'ItemList', 'name': currentList.name, 'url': currentList.guideUrl, 'itemListElement': processedProducts.map((product, index) => ({ '@type': 'ListItem', 'position': index + 1, 'item': { '@type': 'Product', 'name': product.modelName, 'image': product.imageUrl, 'url': product.productUrl, ...(product.priceValue && product.currencyCode && { 'offers': { '@type': 'Offer', 'price': product.priceValue, 'priceCurrency': product.currencyCode, 'availability': 'https://schema.org/InStock', 'url': product.productUrl } }), 'aggregateRating': { '@type': 'AggregateRating', 'ratingValue': (product.score / 100 * 5).toFixed(1), 'bestRating': '5', 'ratingCount': '1' } } })) };          let scriptTag = document.getElementById('pcg-widget-json-ld');          if (!scriptTag) { scriptTag = document.createElement('script'); scriptTag.id = 'pcg-widget-json-ld'; scriptTag.type = 'application/ld+json'; document.head.appendChild(scriptTag); }          scriptTag.textContent = JSON.stringify(schema);          const widgetContainer = widgetContainerRef.current;          if (widgetContainer) {             document.dispatchEvent(new CustomEvent("processArticle", { detail: { element: widgetContainer } }));           }        }, [processedProducts, isLoading, currentList]);        if (!currentList) return React.createElement('div', { className: "p-5 text-center text-red-500" }, "No product list found.");        const themeClassName = "standard" !== 'standard' ? 'theme-' + "standard" : '';        const outlineClassName = true ? 'pcg-widget-outline' : '';        const finalClassName = [themeClassName, outlineClassName].filter(Boolean).join(' ');        const guideLinkElement = React.createElement('div', { className: 'pcg-footer-link ' + (showGuideLinkAtTop ? 'pcg-footer-link-top' : '') }, "Read the full guide:", " ", React.createElement('a', { href: currentList.guideUrl, target: "_blank", rel: "noopener noreferrer", "data-hawkify-clicked-area": "cta", "data-hawkify-category": "PC Gamer buying guide", "data-hawkify-widget-type": "guide-link" }, currentList.name));        return React.createElement('div', { id: "pcg-cpu-widget-container", className: finalClassName, ref: widgetContainerRef },          React.createElement('svg', { style: { display: 'none' }, "aria-hidden": "true" }, React.createElement('defs', null, React.createElement('symbol', { id: "pcg-tr-star-full", viewBox: "0 0 20 20" }, React.createElement('path', { d: "M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z" })), React.createElement('symbol', { id: "pcg-tr-star-empty", viewBox: "0 0 20 20" }, React.createElement('path', { d: "M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z" })))),          React.createElement('div', { className: "pcg-widget-container" },            React.createElement('div', { className: "pcg-header-section" }, React.createElement('div', { className: "pcg-header-content" }, React.createElement('img', { src: "https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png", alt: "PC Gamer Logo", className: "pcg-header-image" }), React.createElement('div', { className: "pcg-header-text" }, React.createElement('h2', { id: "pcg-current-list-title", className: "pcg-header-title" }, currentList.name), React.createElement('p', { className: "pcg-header-subtitle" }, "All our current recommendations"))), showLivePill && React.createElement('div', { className: "pcg-live-pill" }, React.createElement('span', { className: "pcg-live-dot" }), React.createElement('span', null, "Live"))),            showGuideLinkAtTop && guideLinkElement,            React.createElement('div', { className: "pcg-dropdown-controls" },               React.createElement('div', { className: 'pcg-select-wrapper' },                React.createElement('select', { className: "pcg-select-dropdown", value: activeCategory, onChange: (e) => handleCategoryChange(e.target.value), "aria-label": "Select product category", "data-hawkify-clicked-area": "filter", "data-hawkify-category": "PC Gamer category filter", "data-hawkify-widget-type": "dropdown" },                   React.createElement('option', { value: "" }, "Pick a category"),                  categories.map(category => React.createElement('option', { key: category, value: category }, category))                )              ),              React.createElement('div', { className: 'pcg-select-wrapper' },                React.createElement('select', { className: "pcg-select-dropdown", value: selectedListId, onChange: (e) => handleListChange(e.target.value), "aria-label": "Select buying guide", "data-hawkify-clicked-area": "filter", "data-hawkify-category": "PC Gamer guide selector", "data-hawkify-widget-type": "dropdown", disabled: filteredLists.length <= 1 },                    React.createElement('option', { value: "" }, "Choose a list"),                   filteredLists.map(list => React.createElement('option', { key: list.id, value: list.id }, list.name))                )              )            ),            React.createElement('hr', { className: "pcg-separator" }),            React.createElement('div', { id: "pcg-products-container" }, isLoading ? React.createElement('div', { className: "pcg-loading" }, "Loading recommendations...") : React.createElement('div', { className: "pcg-group" }, processedProducts.map((product, index) => React.createElement(ProductRow, { product: product, index: index, key: product.modelName + '-' + index, isExpanded: expandedProduct === product.modelName, onToggleCompare: handleToggleCompare })))),            React.createElement('hr', { className: "pcg-separator" }),            !showGuideLinkAtTop && guideLinkElement,            React.createElement('div', { className: "pcg-powered-by" }, React.createElement('span', { className: "pcg-powered-by-text" }, "POWERED BY"), React.createElement('img', { src: "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb-200-100.png", alt: "PC Gamer Logo", className: "pcg-powered-by-logo" }))          )        );      };      // --- Inlined index.tsx ---      const rootElement = document.getElementById('root');      if (!rootElement) {        throw new Error("Could not find root element to mount to");      }      const root = ReactDOM.createRoot(rootElement);      root.render(React.createElement(React.StrictMode, null, React.createElement(App, null)));      // --- Iframe Resizing Script ---      const sendHeight = () => {        // We add a small buffer to prevent scrollbars from appearing due to sub-pixel rendering        const height = document.documentElement.scrollHeight + 5;        window.parent.postMessage({ type: 'pcg-widget-resize', height: height }, '*');      };            const observer = new ResizeObserver(() => {        // Defer the execution to the next frame to avoid ResizeObserver loop errors.        window.requestAnimationFrame(sendHeight);      });      observer.observe(document.body);            window.addEventListener('load', () => {          setTimeout(sendHeight, 200);      });            document.getElementById('root').addEventListener('click', () => {        setTimeout(sendHeight, 450);      });    </script>      </div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I can't live without the Steam Deck's trackpads anymore, and I hope the Steam Controller forces the competition to adopt them ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/i-cant-live-without-the-steam-decks-trackpads-anymore-and-i-hope-the-steam-controller-forces-the-competition-to-adopt-them/</link>
                                                                            <description>
                            <![CDATA[ Trackpads could be the 21st century’s analog sticks. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">cNwatgaAEkqiZyF4qYgWgC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/JVzVspDAf3wen3Zpg7z8-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 13 Nov 2025 22:18:14 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/VHK6WWHuYbRyFX3dSXbr3G.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/JVzVspDAf3wen3Zpg7z8-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:description>                                                            <media:text><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:text>
                                <media:title type="plain"><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/JVzVspDAf3wen3Zpg7z8-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Of the three hardware announcements Valve made yesterday, the <a href="https://www.pcgamer.com/hardware/controllers/steam-controller-specs-availability-hands-on/">Steam Controller</a> is probably the least exciting at face value. It looks a whole lot like the original Steam controller, which hardly set the world ablaze. Also, it’s a gamepad. There are countless PC gamepads on the market, and many are better than what Microsoft or Sony have to offer. We have 1000 Hz polling rates, TMR sticks, and near-mandatory paddle buttons. Sometimes they even have a screen on them, and if you’re lucky, a sprinkling of RGB too. Surely we’re good. </p><div  class="fancy-box"><div class="fancy_box-title">Valve's hot hardware</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WX5CBPYBtDzfHtHQNeUz" name="steam-controller-08" caption="" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." src="https://cdn.mos.cms.futurecdn.net/WX5CBPYBtDzfHtHQNeUz.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text"><a data-analytics-id="inline-link" href="https://www.pcgamer.com/hardware/vr-hardware/steam-frame-specs-availability" target="_blank"><strong>Steam Frame</strong></a>: Valve's new wireless VR headset<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/hardware/gaming-pcs/steam-machine-specs-availability" target="_blank"><strong>Steam Machine</strong></a>: Compact living room gaming box<br><a data-analytics-id="inline-link" href="https://www.pcgamer.com/hardware/controllers/steam-controller-specs-availability-hands-on" target="_blank"><strong>Steam Controller</strong></a>: A controller to replace your mouse</p></div></div><p>We’re good if we think about a gamepad as a fast-track to a conventional console experience on our PCs. But after a year spent with Steam Deck and its trackpads, I’ve come to appreciate, at least in part, why Valve put those gargantuan circular trackpads on their original design: because it makes swathes of otherwise unplayable PC games playable under circumstances where a mouse and keyboard isn’t practical or desirable. </p><p>Valve’s infiltration of console orthodoxy with the Steam Deck was so much more subtle than just: Cyberpunk 2077 on the bus and you can tweak the graphics. Among other things, it was soft power advocacy for onboard trackpads. Taking trackpads mainstream could be part of the Steam Deck’s legacy, or at least I hope that’s the case. I’m so trackpad-pilled that I can’t imagine another generation of consoles that doesn’t adopt Valve’s implementation. There are more powerful handheld PCs on the market than Steam Deck, but I will never consider buying them if they don’t have trackpads.</p><p>Pillars of Eternity turned me into a trackpad truther. It seemed a perfect Steam Deck candidate. It was among the first games I installed on the handheld when I got one, mostly because it’s a very text-heavy game (basically a novel at times) and I didn’t want to bend over a laptop or sit at a desk while reading tracts of high fantasy lore. Alas, while Obsidian’s CRPG eventually released for consoles, the console gamepad UI was never patched into the PC version. A community layout implementing the trackpads as a stand-in for a mouse is pretty much essential for the handheld-determined. I begrudgingly made do. </p><p>I begrudgingly made do for a while: for about an hour I was still annoyed that Obsidian hadn’t patched the PC version with the gamepad trimmings (I almost posted on Reddit). But after about an hour—no longer—I became accustomed to using the trackpads, and had a grand time over the ensuing 80 hours playing this ostensibly mouse-and-keyboard CRPG without a mouse and keyboard. I came to love it so much that when I installed Wasteland 3—which does have gamepad functionality built-in—I much preferred using a mouse-and-keyboard system adapted for trackpads, despite the enduring annoyance of keyboard UI prompts. Rather than learn which trigger or bumper accesses a certain nested sub-menu, or which long-press initiated a hidden menu, I could simply—without a mouse—point ‘n’ click. Adapting to a new thumb-centric muscle memory is about three-quarters of an hour of your time at worst. It pays off.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xBYTSnp2cpMvDXfNzQGETP" name="valve-steam-controller" alt="Valve Steam controller angled on a blue background" src="https://cdn.mos.cms.futurecdn.net/xBYTSnp2cpMvDXfNzQGETP.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The original 2015 Steam Controller. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Valve)</span></figcaption></figure><p>The beauty of the trackpads was well ingrained by the time I completed Pillars of Eternity on a handheld: I enjoyed the game with no sense of being at a disadvantage, and handling it on a Steam Deck felt normal and good, usually great. But that’s not what sold me entirely on trackpads. Earlier this year I was taken by a fleeting obsession with 1990s point ‘n’ click adventures. I bought Sanitarium, Harvester, a couple of Gabriel Knight games (rocky affairs thanks to a wily Linux-filtered DOSBox, but still playable) and even the keyboard-shortcut-heavy Realms of Arcadia blobbers. It probably goes without saying that none of these games were designed with gamepads in mind.</p><p>Sanitarium (1998) is completely, comfortably playable on the Steam Deck thanks to the track pads. Harvester (1996), while cheerfully dumb as shit, was perfectly playable too. Gabriel Knight: Sins of the the Fathers (1993) and the Realms of Arcadia games (1992 onwards) took a little more adjustment, thanks to their reliance on keyboard inputs, and I can’t say I stuck with them long, but I was definitely able to navigate them for an hour or so with increasing comfort, and I knew that a bit of fiddling could have made them sing.</p><p>The significance of this might be lost on younger readers, but it’s worth being specific for the elders: it’s provenly possible to play the ghastly point ‘n’ click deep cut <a href="https://www.pcgamer.com/saturday-crapshoot-badmojo/"><u>Bad Mojo</u></a> (1996) on Steam Deck. Which means, it’ll theoretically be possible to sit on a couch, vomit bag in tow, with a Steam controller, and play that old cockroach odyssey on a large screen in the very near future. Perhaps you’ve already done so, with the old Steam Controller. If that’s you, great: you’re akin to the uncle who saw Hendrix at Isle of Wight. The overall point is this: trackpads render wide swathes of otherwise gamepad-unfriendly PC games gamepad friendly. For people who love PC gaming, but don’t always love the whole sitting-at-a-desktop-PC aspect of it, it’s transformative.</p><div><blockquote><p>There’s a reason the Steam Controller of 2025 looks a whole lot like the Steam Controller of 2015: It’s a good idea, but it didn’t have an obvious use case to justify it</p></blockquote></div><p>PlayStation’s DualSense has a trackpad, and so does the DualShock 4, but they’re awkwardly placed. They’re tentative toe dips, scarcely used and when they are, a superfluous novelty, untethered from moment-to-moment interaction. Their implementation reminds me, for its infancy, of the analog stick on the Nintendo 64 controller. Nintendo knew that an eight-directional stick would factor heavily into the future, but they didn’t know exactly how to execute on it. PlayStation was watching, and eventually adopted not one but two symmetrical sticks on its own controller, thus completely changing the way we handle games into the 21st century. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="THJSoi9B2op3Sv7eyzD5So" name="steam-deck-steam-button.jpg" alt="Steam Deck with menu screen" src="https://cdn.mos.cms.futurecdn.net/THJSoi9B2op3Sv7eyzD5So.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>PlayStation and Nintendo are inarguably pioneers when it comes to how games are controlled in a modern gamepad context, but in the current climate, their implementation of new technologies, such as trackpad and touchscreen, feels rudimentary. For the most part, PlayStation games use the trackpad for menu navigation or, at best, tactile mini-games. At worst, it’s just a big ol’ button to access an open world map. Nintendo’s dalliances with touchscreen across Wii U and Switch haven’t been much more innovative. But the way we handle games defines them, almost entirely. The envelope cannot be pushed past a certain threshold without the widely accepted input language evolving, even a tad, and that means not <em>more </em>inputs, but potentially different ways to input.</p><p>The trackpad probably won’t be as revolutionary as the analog stick, but it definitely opens avenues for different kinds of experiences in vastly different playing contexts. We certainly won’t be comfortably playing text adventures or Dwarf Fortress with a Steam Controller, but the finer gradients of control—if it catches on—could give rise to different kinds of game, or at least better varieties of games we’ve played, merging the fine grain specificity of a drag-and-pull mouse with the pleasures of analog sticks and microswitches. It’s not just about, for example, precision in first-person shooters, which is how I remember a lot of people justifying the touchpads on the original Steam Controller. </p><p>In 2015, Valve seemed mad for its weirdo trackpad controller and the market told it so: in 2025, Valve has demonstrated not only that it can work, but that it feels good. There’s a reason the Steam Controller of 2025 looks a whole lot like the Steam Controller of 2015: It’s a good idea, but it didn’t have an obvious use case to justify it. Steam Deck is the use case's trojan horse. </p><p>Valve is well-placed to demonstrate it too. Half-Life 3 comes to mind, though Deadlock will probably do. Knowing Valve, they’ll let users and other studios do the talking.</p><div id="crow-inpage-content"><style>      @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');      #pcg-cpu-widget-container *, #pcg-cpu-widget-container *::before, #pcg-cpu-widget-container *::after { box-sizing: border-box !important; margin: 0 !important; padding: 0 !important; border: 0 !important; vertical-align: baseline !important; line-height: 1.5 !important; text-decoration: none !important; font-family: 'Inter', sans-serif !important; }      #pcg-cpu-widget-container { margin-bottom: 48px !important; padding-top: 16px !important; padding-bottom: 24px !important; background-color: transparent !important; display: block !important; overflow: visible !important; position: relative !important; container-type: inline-size !important; }      #pcg-cpu-widget-container.pcg-widget-outline { border: 1px solid #d1d5db !important; border-radius: 8px !important; padding: 16px 16px 24px !important; }      #pcg-cpu-widget-container .pcg-group > .pcg-product-row-wrapper:not(.pcg-expanded):last-child .pcg-product-row { border-bottom-width: 0 !important; }      #pcg-cpu-widget-container .pcg-widget-container { width: 100% !important; margin: 0 auto !important; display: block !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-header-section { display: flex !important; justify-content: space-between !important; align-items: flex-start !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-header-content { display: flex !important; align-items: center !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-header-image { width: 35px !important; height: 35px !important; border-radius: 8px !important; object-fit: cover !important; mix-blend-mode: multiply !important; display: block !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-header-text { margin-left: 16px !important; display: block !important; }      #pcg-cpu-widget-container .pcg-header-title { font-size: 18px !important; font-weight: bold !important; color: #1f2937 !important; margin: 0 !important; display: block !important; }      #pcg-cpu-widget-container .pcg-header-subtitle { font-size: 14px !important; color: #6b7280 !important; margin: 0 !important; display: block !important; }      #pcg-cpu-widget-container .pcg-separator { border: none !important; border-top: 1px solid #d1d5db !important; margin: 16px 0 !important; display: block !important; }      #pcg-cpu-widget-container .pcg-product-row-wrapper { display: flex !important; flex-direction: column !important; transition: all 0.2s ease-in-out; }      #pcg-cpu-widget-container .pcg-product-row-wrapper.pcg-expanded { border: 1px solid #e5e7eb !important; border-radius: 8px !important; margin-top: 8px !important; margin-bottom: 8px !important; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04) !important; overflow: hidden !important; background-color: #ffffff !important; }      #pcg-cpu-widget-container .pcg-product-row-wrapper.pcg-expanded .pcg-product-row { padding-left: 12px !important; padding-right: 12px !important; border-bottom-width: 1px !important; border-bottom-color: #e5e7eb !important; }      #pcg-cpu-widget-container .pcg-product-row { display: flex !important; align-items: flex-start !important; padding: 12px 0 !important; border-bottom: 1px solid #d1d5db !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-product-image { display: block !important; width: 48px !important; height: 48px !important; border-radius: 6px !important; object-fit: contain !important; margin-right: 16px !important; flex-shrink: 0 !important; mix-blend-mode: multiply !important; }      #pcg-cpu-widget-container .pcg-product-content { flex-grow: 1 !important; display: flex !important; justify-content: space-between !important; align-items: stretch !important; min-width: 0 !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-product-info { flex: 1 1 0 !important; min-width: 0 !important; display: block !important; overflow: visible !important; margin-right: 8px !important; }      #pcg-cpu-widget-container .pcg-mobile-price-container { display: none !important; }      #pcg-cpu-widget-container .pcg-product-meta { display: flex !important; flex-direction: column !important; align-items: flex-start !important; gap: 8px !important; margin-bottom: 8px !important; height: auto !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-category-badge { font-size: 12px !important; color: #000000 !important; font-weight: bold !important; line-height: 12px !important; flex-shrink: 0 !important; white-space: nowrap !important; display: inline-block !important; }      #pcg-cpu-widget-container .pcg-stars { display: flex !important; flex-direction: row !important; flex-wrap: nowrap !important; gap: 1px !important; height: auto !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-star { position: relative !important; width: 12px !important; height: 12px !important; flex-shrink: 0 !important; display: block !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-star-svg { width: 100% !important; height: 100% !important; display: block !important; fill: currentColor !important; }      #pcg-cpu-widget-container .pcg-star-empty .pcg-star-svg { color: #d1d5db !important; }      #pcg-cpu-widget-container .pcg-star-full .pcg-star-svg { color: #ef4444 !important; }      #pcg-cpu-widget-container .pcg-star-partial { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; display: block !important; }      #pcg-cpu-widget-container .pcg-star-partial .pcg-star-svg { color: #ef4444 !important; }      #pcg-cpu-widget-container .pcg-product-link { display: block !important; font-weight: 600 !important; color: #dc2626 !important; text-decoration: none !important; font-size: 13px !important; white-space: normal !important; }      #pcg-cpu-widget-container .pcg-product-link:hover { text-decoration: underline !important; } #pcg-cpu-widget-container .pcg-product-link:visited { color: #b91c1c !important; }      #pcg-cpu-widget-container .pcg-price-panel { flex-shrink: 0 !important; display: flex !important; flex-direction: column !important; align-items: flex-end !important; justify-content: flex-end !important; gap: 10px !important; overflow: visible !important; text-align: right !important; }      #pcg-cpu-widget-container .pcg-view-button { display: inline-flex !important; align-items: center !important; justify-content: center !important; font-weight: bold !important; border-radius: 8px !important; transition: all 0.2s !important; background-color: #dc2626 !important; color: white !important; border: none !important; text-decoration: none !important; width: 120px !important; font-size: 12px !important; padding: 10px 12px !important; white-space: nowrap !important; line-height: 1.5 !important; text-overflow: ellipsis !important; overflow: hidden !important; }      #pcg-cpu-widget-container .pcg-view-button:hover, #pcg-cpu-widget-container .pcg-view-button:visited { background-color: #b91c1c !important; color: white !important; }      #pcg-cpu-widget-container .pcg-compare-link { font-size: 13px !important; color: #dc2626 !important; text-decoration: none !important; display: inline-flex !important; align-items: center !important; gap: 4px !important; background: none !important; border: none !important; padding: 4px 0 !important; cursor: pointer !important; font-family: inherit !important; text-transform: none !important; }      #pcg-cpu-widget-container .pcg-compare-link:hover:not(:disabled) { text-decoration: underline !important; }      #pcg-cpu-widget-container .pcg-compare-link.pcg-compare-link-static { cursor: default !important; justify-content: center !important; width: 120px !important; }      #pcg-cpu-widget-container .pcg-compare-link.pcg-compare-link-static:hover { text-decoration: none !important; }      #pcg-cpu-widget-container .pcg-compare-link strong { font-weight: bold !important; }      #pcg-cpu-widget-container .pcg-footer-link { font-weight: 600 !important; color: #1f2937 !important; display: block !important; }      #pcg-cpu-widget-container .pcg-footer-link.pcg-footer-link-top { margin-top: 16px !important; }      #pcg-cpu-widget-container .pcg-footer-link a { color: #dc2626 !important; text-decoration: none !important; display: inline !important; }      #pcg-cpu-widget-container .pcg-footer-link a:hover { text-decoration: underline !important; } #pcg-cpu-widget-container .pcg-footer-link a:visited { color: #b91c1c !important; }      #pcg-cpu-widget-container .pcg-powered-by { margin-top: 16px !important; display: flex !important; justify-content: center !important; align-items: center !important; gap: 4px !important; overflow: visible !important; }      #pcg-cpu-widget-container .pcg-powered-by-text { font-size: 10px !important; font-weight: 600 !important; color: #6b7280 !important; display: inline !important; }      #pcg-cpu-widget-container .pcg-powered-by-logo { height: 10px !important; width: auto !important; mix-blend-mode: multiply !important; display: inline-block !important; }      #pcg-cpu-widget-container .pcg-dropdown-controls { display: flex !important; gap: 16px !important; margin-top: 16px !important; flex-direction: row !important; }      #pcg-cpu-widget-container .pcg-select-wrapper { flex: 1; min-width: 0; }      #pcg-cpu-widget-container .pcg-select-dropdown { width: 100% !important; padding: 8px 12px !important; font-size: 14px !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; background-color: white !important; color: #1f2937 !important; -webkit-appearance: none; -moz-appearance: none; appearance: none; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; padding-right: 2.5rem !important; cursor: pointer !important; }      #pcg-cpu-widget-container .pcg-loading { font-size: 12px !important; color: #6b7280 !important; display: block !important; padding: 12px 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-container { max-height: 0 !important; overflow: hidden !important; transition: max-height 0.4s ease-in-out, padding 0.4s ease-in-out !important; background-color: #f9fafb !important; border-bottom: 1px solid #d1d5db !important; padding: 0 16px !important; }      #pcg-cpu-widget-container .pcg-product-row-wrapper.pcg-expanded .pcg-comparison-container { max-height: 1000px !important; padding: 12px 12px 8px 12px !important; border-bottom-width: 0 !important; background-color: #f9fafb !important; }      #pcg-cpu-widget-container .pcg-product-row-wrapper:last-child .pcg-comparison-container { border-bottom-width: 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-row-header { display: flex !important; justify-content: space-between !important; align-items: flex-start !important; margin-bottom: 8px !important; }      #pcg-cpu-widget-container .pcg-comparison-model-name { font-size: 13px !important; font-weight: 600 !important; color: #4b5563 !important; text-align: left !important; margin-bottom: 0 !important; padding-right: 8px !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }      #pcg-cpu-widget-container .pcg-comparison-row-content { display: flex !important; align-items: center !important; justify-content: space-between !important; width: 100% !important; gap: 8px !important; }      #pcg-cpu-widget-container .pcg-comparison-row { display: flex !important; flex-direction: column !important; align-items: stretch !important; padding: 8px 0 !important; justify-content: space-between !important; color: inherit !important; text-decoration: none !important; transition: background-color 0.2s ease-in-out !important; }      #pcg-cpu-widget-container .pcg-comparison-row:hover { background-color: #f3f4f6 !important; }      #pcg-cpu-widget-container .pcg-comparison-row:not(:last-child) { border-bottom: 1px solid #e5e7eb !important; }      #pcg-cpu-widget-container .pcg-lowest-price-badge { background-color: #dc2626 !important; color: white !important; padding: 1px 6px !important; font-size: 10px !important; font-weight: 700 !important; display: inline-block !important; border-radius: 0 !important; flex-shrink: 0 !important; position: absolute !important; top: 0 !important; left: 50% !important; transform: translateX(-50%) !important; white-space: nowrap !important; }      #pcg-cpu-widget-container .pcg-comparison-number { display: none !important; font-size: 12px !important; font-weight: 600 !important; color: #4b5563 !important; min-width: 24px !important; height: 24px !important; align-items: center !important; justify-content: center !important; background-color: #e5e7eb !important; border-radius: 4px !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-product-image { display: none !important; width: 60px !important; height: 60px !important; border-radius: 4px !important; object-fit: contain !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-retailer-logo-container { display: flex !important; align-items: center !important; justify-content: center !important; height: 60px !important; width: 120px !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-retailer-logo { max-height: 100% !important; max-width: 100% !important; width: auto !important; height: auto !important; object-fit: contain !important; }      #pcg-cpu-widget-container .pcg-comparison-price-wrapper { position: relative !important; display: flex !important; align-items: center !important; justify-content: center !important; min-height: 60px !important; }      #pcg-cpu-widget-container .pcg-comparison-price { font-size: 14px !important; font-weight: 600 !important; color: #1f2937 !important; white-space: nowrap !important; }      #pcg-cpu-widget-container .pcg-comparison-button { display: inline-flex !important; align-items: center !important; justify-content: center !important; font-weight: 600 !important; border-radius: 6px !important; transition: all 0.2s !important; background-color: #008000 !important; color: #ffffff !important; border: none !important; text-decoration: none !important; font-size: 14px !important; padding: 8px 16px !important; white-space: nowrap !important; width: auto !important; min-width: 80px !important; text-align: center !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-row:hover .pcg-comparison-button { background-color: #006400 !important; } #pcg-cpu-widget-container .pcg-comparison-button:visited { background-color: #006400 !important; }      #pcg-cpu-widget-container .pcg-show-more-container { padding: 12px 0 4px !important; text-align: center !important; border-top: 1px solid #e5e7eb !important; display: flex !important; justify-content: center !important; gap: 16px !important; flex-wrap: wrap !important; }      #pcg-cpu-widget-container .pcg-show-more-button { background-color: transparent !important; border: none !important; color: #dc2626 !important; font-weight: 600 !important; font-size: 14px !important; cursor: pointer !important; padding: 8px !important; display: inline-flex !important; align-items: center !important; gap: 4px !important; }      #pcg-cpu-widget-container .pcg-show-more-button:hover { text-decoration: underline !important; }      #pcg-cpu-widget-container .pcg-chevron { font-size: .8em !important; flex-shrink: 0 !important; }      #pcg-cpu-widget-container .pcg-comparison-list-scrollable { max-height: 294px !important; overflow-y: auto !important; position: relative !important; scrollbar-width: thin; scrollbar-color: #dc2626 #f9fafb !important; margin-right: -10px !important; padding-right: 10px !important; } #pcg-cpu-widget-container .pcg-comparison-list-scrollable::-webkit-scrollbar { width: 6px !important; } #pcg-cpu-widget-container .pcg-comparison-list-scrollable::-webkit-scrollbar-track { background: #f9fafb !important; } #pcg-cpu-widget-container .pcg-comparison-list-scrollable::-webkit-scrollbar-thumb { background-color: #dc2626 !important; border-radius: 3px !important; } #pcg-cpu-widget-container .pcg-comparison-list-scrollable::-webkit-scrollbar-thumb:hover { background-color: #b91c1c !important; }      #pcg-cpu-widget-container .pcg-comparison-row-sticky { background-color: #f9fafb !important; }      #pcg-cpu-widget-container .pcg-comparison-loading, #pcg-cpu-widget-container .pcg-no-offers { text-align: center !important; padding: 24px 16px !important; font-size: 14px !important; font-weight: 500 !important; color: #6b7280 !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 8px !important; }      #pcg-cpu-widget-container .pcg-spinner { animation: pcg-rotate 2s linear infinite !important; width: 20px !important; height: 20px !important; }      #pcg-cpu-widget-container .pcg-path { stroke: #dc2626 !important; stroke-linecap: round !important; animation: pcg-dash 1.5s ease-in-out infinite !important; }      #pcg-cpu-widget-container .pcg-live-pill { display: inline-flex !important; align-items: center !important; gap: 6px !important; background-color: #dc2626 !important; color: #ffffff !important; padding: 6px 12px !important; border-radius: 9999px !important; font-size: 14px !important; font-weight: 600 !important; flex-shrink: 0 !important; white-space: nowrap !important; }      #pcg-cpu-widget-container .pcg-live-dot { width: 8px !important; height: 8px !important; background-color: #ffffff !important; border-radius: 50% !important; animation: pcg-live-pulse 1.5s infinite ease-in-out !important; }      @keyframes pcg-rotate { 100% { transform: rotate(360deg); } }      @keyframes pcg-dash { 0% { stroke-dasharray: 1, 150; stroke-dashoffset: 0; } 50% { stroke-dasharray: 90, 150; stroke-dashoffset: -35; } 100% { stroke-dasharray: 90, 150; stroke-dashoffset: -124; } }      @keyframes pcg-live-pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(0.8); opacity: 0.8; } }      @container (min-width: 500px) { #pcg-cpu-widget-container .pcg-price-panel { gap: 4px !important; } #pcg-cpu-widget-container .pcg-product-row { align-items: stretch !important; } #pcg-cpu-widget-container .pcg-product-info { display: flex !important; flex-direction: column !important; justify-content: center !important; } #pcg-cpu-widget-container .pcg-product-image { width: 64px !important; height: 64px !important; } #pcg-cpu-widget-container .pcg-category-badge { font-size: 13px !important; white-space: nowrap !important; } #pcg-cpu-widget-container .pcg-star { width: 14px !important; height: 14px !important; } #pcg-cpu-widget-container .pcg-header-image { width: 46px !important; height: 46px !important; } #pcg-cpu-widget-container .pcg-header-title { font-size: 20px !important; } #pcg-cpu-widget-container .pcg-header-subtitle { font-size: 16px !important; } #pcg-cpu-widget-container .pcg-product-meta { flex-direction: row !important; align-items: center !important; gap: 8px !important; margin-bottom: 8px !important; flex-wrap: nowrap !important; } #pcg-cpu-widget-container .pcg-product-link { font-size: 18px !important; } #pcg-cpu-widget-container .pcg-powered-by-text { font-size: 12px !important; } #pcg-cpu-widget-container .pcg-powered-by-logo { height: 12px !important; } #pcg-cpu-widget-container .pcg-comparison-number { display: flex !important; } #pcg-cpu-widget-container .pcg-comparison-product-image { display: block !important; } #pcg-cpu-widget-container .pcg-compare-link.pcg-compare-link-static { width: 160px !important; } #pcg-cpu-widget-container .pcg-view-button { width: 160px !important; font-size: 14px !important; padding: 8px 16px !important; } #pcg-cpu-widget-container .pcg-compare-link { font-size: 14px !important; padding: 0 !important; } }          </style><script type="importmap">          {            "imports": {              "react-dom/": "https://aistudiocdn.com/react-dom@^19.1.1/",              "react/": "https://aistudiocdn.com/react@^19.1.1/",              "react": "https://aistudiocdn.com/react@^19.1.1"            }          }          </script>          <div id="root">            <div id="pcg-cpu-widget-container" class="pcg-widget-outline">                <svg style="display: none;" aria-hidden="true"><defs><symbol id="pcg-tr-star-full" viewbox="0 0 20 20"><path d="M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z"></path></symbol><symbol id="pcg-tr-star-empty" viewbox="0 0 20 20"><path d="M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z"></path></symbol></defs></svg>                <div class="pcg-widget-container">                    <div class="pcg-header-section"><div class="pcg-header-content"><img src="https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png" alt="PC Gamer Logo" class="pcg-header-image"><div class="pcg-header-text"><h2 id="pcg-current-list-title" class="pcg-header-title">The best PC gaming gear 2025</h2><p class="pcg-header-subtitle">All our current recommendations</p></div></div></div>                                        <div class="pcg-dropdown-controls">                        <div class="pcg-select-wrapper">                            <select class="pcg-select-dropdown" aria-label="Select product category" data-hawkify-clicked-area="filter" data-hawkify-category="PC Gamer category filter" data-hawkify-widget-type="dropdown">                                <option value="">Pick a category</option>                                <option value="Best overall" selected>Best overall</option><option value="Core Components">Core Components</option><option value="Chairs & Desks">Chairs & Desks</option><option value="Systems & Laptops">Systems & Laptops</option><option value="Screens">Screens</option><option value="Peripherals">Peripherals</option><option value="Cases, Cooling & Storage">Cases, Cooling & Storage</option>                            </select>                        </div>                        <div class="pcg-select-wrapper">                            <select class="pcg-select-dropdown" aria-label="Select buying guide" data-hawkify-clicked-area="filter" data-hawkify-category="PC Gamer guide selector" data-hawkify-widget-type="dropdown" disabled>                                <option value="">Choose a list</option>                                <option value="best-pc-gaming-gear-2025" selected>The best PC gaming gear 2025</option>                            </select>                        </div>                    </div>                    <hr class="pcg-separator">                    <div id="pcg-products-container"><div class="pcg-group">                <div class="pcg-product-row-wrapper" data-model-name="Secretlab Titan Evo">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg" alt="Secretlab Titan Evo" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST GAMING CHAIR</span>                                    <div class="pcg-stars" aria-label="5.0 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Btitan%2Bevo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    1. Secretlab Titan Evo                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Btitan%2Bevo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Secretlab Magnus Pro XL">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg" alt="Secretlab Magnus Pro XL" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST GAMING DESK</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-qip9nc7zs"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-qip9nc7zs)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Bmagnus%2Bpro%2Bxl%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    2. Secretlab Magnus Pro XL                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Bmagnus%2Bpro%2Bxl%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="HyperX Cloud Alpha">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg" alt="HyperX Cloud Alpha" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST GAMING HEADSET</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-774in1tav"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-774in1tav)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyperx%2Bcloud%2Balpha%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    3. HyperX Cloud Alpha                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyperx%2Bcloud%2Balpha%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Asus ROG Strix Scope II 96 Wireless">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg" alt="Asus ROG Strix Scope II 96 Wireless" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST GAMING KEYBOARD</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-k6nsjpkgr"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-k6nsjpkgr)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bscope%2Bii%2B96%2Bwireless%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    4. Asus ROG Strix Scope II 96 Wireless                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bscope%2Bii%2B96%2Bwireless%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Razer DeathAdder V3 HyperSpeed">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg" alt="Razer DeathAdder V3 HyperSpeed" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST GAMING MOUSE</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-o48qaf8ho"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-o48qaf8ho)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bdeathadder%2Bv3%2Bhyperspeed%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    5. Razer DeathAdder V3 HyperSpeed                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bdeathadder%2Bv3%2Bhyperspeed%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Xbox Wireless Controller">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg" alt="Xbox Wireless Controller" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST PC CONTROLLER</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-w0uctxtkq"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-w0uctxtkq)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Bwireless%2Bcontroller%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    6. Xbox Wireless Controller                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Bwireless%2Bcontroller%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Logitech G Pro Racing Wheel">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg" alt="Logitech G Pro Racing Wheel" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST STEERING WHEEL</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-8j89oqakn"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-8j89oqakn)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bg%2Bpro%2Bracing%2Bwheel%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    7. Logitech G Pro Racing Wheel                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bg%2Bpro%2Bracing%2Bwheel%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Shure MV6">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg" alt="Shure MV6" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST MICROPHONE</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-tupzjs8e4"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-tupzjs8e4)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dshure%2Bmv6%2Busb%2Bgaming%2Bmicrophone%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    8. Shure MV6                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dshure%2Bmv6%2Busb%2Bgaming%2Bmicrophone%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div>                <div class="pcg-product-row-wrapper" data-model-name="Elgato Facecam MK.2">                    <div class="pcg-product-row">                        <img src="https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg" alt="Elgato Facecam MK.2" class="pcg-product-image" onerror="this.src='https://placehold.co/64x64/E2E8F0/4A5568?text=Image'">                        <div class="pcg-product-content">                            <div class="pcg-product-info">                                <div class="pcg-product-meta">                                    <span class="pcg-category-badge">BEST WEBCAM</span>                                    <div class="pcg-stars" aria-label="4.5 out of 5 stars"><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star pcg-star-full"><svg class="pcg-star-svg"><use href="#pcg-tr-star-full"></use></svg></div><div class="pcg-star"><svg class="pcg-star-svg pcg-star-empty"><use href="#pcg-tr-star-empty"></use></svg><div class="pcg-star-partial"><svg class="pcg-star-svg"><defs><clippath id="pcg-clip-partial-5-jn2uw32jq"><rect x="0" y="0" width="50%" height="100%"></rect></clippath></defs><use href="#pcg-tr-star-full" clippath="url(#pcg-clip-partial-5-jn2uw32jq)"></use></svg></div></div></div>                                </div>                                <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Delgato%2Bfacecam%2Bmk.2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-product-link" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer product link" data-hawkify-widget-type="product-name">                                    9. Elgato Facecam MK.2                                </a>                            </div>                            <div class="pcg-price-panel">                                <div>                                    <a href="https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Delgato%2Bfacecam%2Bmk.2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21" target="_blank" rel="noopener noreferrer sponsored" class="pcg-view-button" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer price button" data-hawkify-widget-type="buy-now">                                        Check Price                                    </a>                                </div>                            </div>                        </div>                    </div>                </div></div></div>                    <hr class="pcg-separator">                                <div class="pcg-footer-link ">                Read the full guide: <a href="https://www.pcgamer.com/hardware/this-is-all-the-best-pc-gaming-gear-we-recommend-in-one-techie-tier-list/" target="_blank" rel="noopener noreferrer" data-hawkify-clicked-area="cta" data-hawkify-category="PC Gamer buying guide" data-hawkify-widget-type="guide-link">The best PC gaming gear 2025</a>            </div>                    <div class="pcg-powered-by"><span class="pcg-powered-by-text">POWERED BY</span><img src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb-200-100.png" alt="PC Gamer Logo" class="pcg-powered-by-logo"></div>                </div>            </div></div>          <script type="module">      import React, { useState, useEffect, useCallback, useRef } from 'react';      import ReactDOM from 'react-dom/client';            // --- Inlined data.ts ---      const allProductLists = [  {    "id": "best-pc-gaming-gear-2025",    "name": "The best PC gaming gear 2025",    "guideUrl": "https://www.pcgamer.com/hardware/this-is-all-the-best-pc-gaming-gear-we-recommend-in-one-techie-tier-list/",    "category": "Best overall",    "products": [      {        "modelName": "Secretlab Titan Evo",        "score": 100,        "category": "BEST GAMING CHAIR",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Btitan%2Bevo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Secretlab Magnus Pro XL",        "score": 90,        "category": "BEST GAMING DESK",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Bmagnus%2Bpro%2Bxl%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "HyperX Cloud Alpha",        "score": 90,        "category": "BEST GAMING HEADSET",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyperx%2Bcloud%2Balpha%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Strix Scope II 96 Wireless",        "score": 90,        "category": "BEST GAMING KEYBOARD",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bscope%2Bii%2B96%2Bwireless%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer DeathAdder V3 HyperSpeed",        "score": 90,        "category": "BEST GAMING MOUSE",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bdeathadder%2Bv3%2Bhyperspeed%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Xbox Wireless Controller",        "score": 90,        "category": "BEST PC CONTROLLER",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Bwireless%2Bcontroller%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech G Pro Racing Wheel",        "score": 90,        "category": "BEST STEERING WHEEL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bg%2Bpro%2Bracing%2Bwheel%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Shure MV6",        "score": 90,        "category": "BEST MICROPHONE",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dshure%2Bmv6%2Busb%2Bgaming%2Bmicrophone%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Elgato Facecam MK.2",        "score": 90,        "category": "BEST WEBCAM",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Delgato%2Bfacecam%2Bmk.2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-cpu-for-gaming-2025",    "name": "Best CPU for gaming 2025",    "guideUrl": "https://www.pcgamer.com/best-cpu-for-gaming/",    "category": "Core Components",    "products": [      {        "modelName": "AMD Ryzen 7 9800X3D",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://images.fie.futurecdn.net/efrb6fzvwvd4jwcd-17308043833633-100-80.jpg.webp",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fdp%2FB0DKFMSMYK%3Ftag%3Dhawk-future-21%26linkCode%3Dogi%26th%3D1%26psc%3D1%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Intel Core i5 13400F",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/41NgKlCJOzL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fdp%2FB0BXH1FTFT%3Ftag%3Dhawk-future-21%26linkCode%3Dogi%26th%3D1%26psc%3D1%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AMD Ryzen 7 9700X",        "score": 100,        "category": "BEST MID-RANGE",        "imageUrl": "https://images.fie.futurecdn.net/juzc6t2ldxs3u4fb-17225908633078-100-80.jpg.webp",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fdp%2FB0D6NMDNNX%3Ftag%3Dhawk-future-21%26linkCode%3Dogi%26th%3D1%26psc%3D1%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AMD Ryzen 9 9950X3D",        "score": 80,        "category": "BEST HIGH-END",        "imageUrl": "https://images.fie.futurecdn.net/ryk5t8z59zcxcdvn-17416887337709-100-80.jpg.webp",        "productUrl": "https://ccl.pxf.io/c/221109/1991091/24481?sharedId=hawk-prefix&subId1=hawk-custom-tracking&prodsku=CPU0943&u=https%3A%2F%2Fwww.cclonline.com%2F100-100000719wof-amd-ryzen-9-9950x3d-16-core-32-thread-am5-cpu-483923%2F&intsrc=CATF_16482"      },      {        "modelName": "AMD Ryzen 7 5700X3D",        "score": 80,        "category": "BEST AM4 UPGRADE",        "imageUrl": "https://m.media-amazon.com/images/I/31Nm8zdEglL._SL500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fdp%2FB0CQ4H4H7X%3Ftag%3Dhawk-future-21%26linkCode%3Dogi%26th%3D1%26psc%3D1%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AMD Ryzen 7 8700G",        "score": 90,        "category": "BEST CPU GRAPHICS",        "imageUrl": "https://images.fie.futurecdn.net/l9873tf1jajmus37-1706714580034-100-80.jpg.webp",        "productUrl": "https://ccl.pxf.io/c/221109/1991091/24481?sharedId=hawk-prefix&subId1=hawk-custom-tracking&prodsku=CPU0896&u=https%3A%2F%2Fwww.cclonline.com%2F100-100001236box-amd-ryzen-7-8700g-4-2ghz-octa-core-am5-cpu-437727%2F&intsrc=CATF_16482"      }    ]  },  {    "id": "best-graphics-card-2025",    "name": "Best graphics card 2025",    "guideUrl": "https://www.pcgamer.com/the-best-graphics-cards/",    "category": "Core Components",    "products": [      {        "modelName": "AMD Radeon RX 9070",        "score": 80,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Damd%2Bradeon%2Brx%2B9070%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AMD Radeon RX 9060 XT 16 GB",        "score": 80,        "category": "BEST VALUE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Damd%2Bradeon%2Brx%2B9060%2Bxt%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Intel Arc B570",        "score": 70,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dintel%2Barc%2Bb570%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Nvidia GeForce RTX 5070 Ti",        "score": 90,        "category": "BEST MID-RANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnvidia%2Brtx%2B5070%2Bti%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Nvidia GeForce RTX 5090",        "score": 80,        "category": "BEST HIGH-END",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnvidia%2Brtx%2B5090%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-chair-2025",    "name": "Best gaming chair 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-chairs/",    "category": "Chairs & Desks",    "products": [      {        "modelName": "Secretlab Titan Evo",        "score": 100,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Btitan%2Bevo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Corsair TC100 Relaxed",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcorsair%2Btc100%2Brelaxed%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Herman Miller Embody",        "score": 90,        "category": "BEST LUXURY",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dherman%2Bmiller%2Bembody%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ThunderX3 Core",        "score": 80,        "category": "BEST SUPPORT",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dthunderx3%2Bcore%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AndaSeat Kaiser 4 XL",        "score": 100,        "category": "BEST BIG BOI",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dandaseat%2Bkaiser%2B4%2Bxl%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Neuechair",        "score": 90,        "category": "BEST OFFICE",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dneuechair%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ThunderX3 Flex Pro",        "score": 90,        "category": "BEST BUDGET OFFICE",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dthunderx3%2Bflex%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-laptop-2025",    "name": "Best gaming laptop 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-laptop/",    "category": "Systems & Laptops",    "products": [      {        "modelName": "Razer Blade 16 (2025)",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bblade%2B16%2B2025%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lenovo LOQ 15 Gen 10",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgigabyte%2Bg6x%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer Blade 14 (2025)",        "score": 90,        "category": "BEST 14-INCH",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bblade%2B14%2B2025%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "MSI Vector 16 HX AI A2XWIG",        "score": 80,        "category": "BEST MID-RANGE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bvector%2B16%2Bhx%2Bai%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lenovo Legion Pro 7i (Gen 10)",        "score": 90,        "category": "BEST HIGH-PERFORMANCE",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlenovo%2Blegion%2Bpro%2B7i%2Bgen%2B10%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware 18 Area-51 Gaming Laptop",        "score": 90,        "category": "BEST 18-INCH",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgigabyte%2Baorus%2B17x%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-monitors-2025",    "name": "Best gaming monitors 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-monitor",    "category": "Screens",    "products": [      {        "modelName": "MSI MPG 321URX QD-OLED",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmpg%2B321urx%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "LG Ultragear 27GR93U",        "score": 90,        "category": "BEST 4K",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlg%2Bultragear%2B27gr93u%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Gigabyte M28U",        "score": 90,        "category": "BEST BUDGET 4K",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgigabyte%2Bm28u%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Xiaomi G Pro 27i",        "score": 80,        "category": "BEST 1440P",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxiaomi%2Bg%2Bpro%2B27i%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "KTC H27T22C-3",        "score": 90,        "category": "BEST BUDGET 1440P",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dpixio%2Bpxc277%2Badvanced%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AOC Gaming C27G4ZXE",        "score": 70,        "category": "BEST BUDGET 1080P",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Daoc%2Bgaming%2Bc27g4zxe%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Swift OLED PG34WCDM",        "score": 90,        "category": "BEST ULTRAWIDE",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bswift%2Boled%2Bpg34wcdm%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Odyssey OLED G9",        "score": 90,        "category": "BEST 32:9",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsamsung%2Bodyssey%2Boled%2Bg9%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock Phantom PG34WQ15R2B",        "score": 90,        "category": "BEST BUDGET ULTRAWIDE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bphantom%2Bpg34wq15r2b%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "LG Ultragear 32GS95UE",        "score": 90,        "category": "BEST WOLED",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlg%2Bultragear%2B32gs95ue%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "MSI MPG271QRX",        "score": 90,        "category": "BEST 1440P OLED",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmpg%2B271qrx%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware AW3423DWF",        "score": 100,        "category": "BEST BUDGET OLED ULTRAWIDE",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dalienware%2B34%2Bqd-oled%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware AW2725QF",        "score": 90,        "category": "BEST DUAL-MODE",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dalienware%2Baw2725qf%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-headset-2025",    "name": "Best gaming headset 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-headset",    "category": "Peripherals",    "products": [      {        "modelName": "HyperX Cloud Alpha",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyperx%2Bcloud%2Balpha%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Corsair HS55 Stereo",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcorsair%2Bhs55%2Bstereo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "HyperX Cloud Alpha Wireless",        "score": 90,        "category": "BEST WIRELESS",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyperx%2Bcloud%2Balpha%2Bwireless%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Turtle Beach Stealth 600 Gen 3",        "score": 90,        "category": "BEST MID-RANGE WIRELESS",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dturtle%2Bbeach%2Bstealth%2B600%2Bgen%2B3%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Beyerdynamic MMX 330 Pro",        "score": 90,        "category": "BEST AUDIOPHILE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbeyerdynamic%2Bmmx%2B330%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Audeze Maxwell",        "score": 90,        "category": "BEST WIRELESS AUDIOPHILE",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Daudeze%2Bmaxwell%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Audio-Technica ATH-M50xSTS StreamSet",        "score": 100,        "category": "BEST FOR STREAMING",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Daudio-technica%2Bath-m50xsts%2Bstreamset%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AceZone A-Spire",        "score": 100,        "category": "BEST NOISE-CANCELLING",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dacezone%2Ba-spire%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Steelseries Arctis GameBuds",        "score": 90,        "category": "BEST EARBUDS",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsteelseries%2Barctis%2Bgamebuds%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-pc-2025",    "name": "Best gaming PC 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-pc/",    "category": "Systems & Laptops",    "products": [      {        "modelName": "HP Omen 35L",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhp%2Bomen%2B35l%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lenovo Legion Tower 5i (Gen 8)",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlenovo%2Blegion%2Btower%2B5i%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Velocity Micro Raptor ES40",        "score": 80,        "category": "BEST COMPACT",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dvelocity%2Bmicro%2Braptor%2Bes40%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware Area-51 Gaming Desktop",        "score": 80,        "category": "ALIENWARE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dalienware%2Baurora%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Minisforum AtomMan G7 PT",        "score": 90,        "category": "BEST MINI PC",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dminisforum%2Batomman%2Bg7%2Bpt%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-desk-2025",    "name": "Best gaming desk 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-desk/",    "category": "Chairs & Desks",    "products": [      {        "modelName": "Secretlab Magnus Pro XL",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsecretlab%2Bmagnus%2Bpro%2Bxl%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Ikea Utespelare",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dikea%2Butespelare%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Arozzi Arena",        "score": 80,        "category": "BEST MID-RANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darozzi%2Barena%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Flexispot E7L",        "score": 90,        "category": "BEST L-SHAPE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dflexispot%2Be7l%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Flexispot E1",        "score": 90,        "category": "BEST BUDGET MOTORIZED",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dflexispot%2Be1%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Fnatic X Chopvalue Revive Pro",        "score": 90,        "category": "BEST SUSTAINABLE",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dfnatic%2Bchopvalue%2Brevive%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "VariDesk Pro Plus",        "score": 80,        "category": "BEST CONVERTIBLE",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dvaridesk%2Bpro%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-microphone-for-gaming-2025",    "name": "Best microphone for gaming 2025",    "guideUrl": "https://www.pcgamer.com/best-microphone-gaming-streaming/",    "category": "Peripherals",    "products": [      {        "modelName": "Shure MV6",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dshure%2Bmv6%2Busb%2Bgaming%2Bmicrophone%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Amazon Basics USB Condenser Microphone",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Damazon%2Bbasics%2Busb%2Bcondenser%2Bmicrophone%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT Capsule Elite",        "score": 90,        "category": "BEST MID-RANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bcapsule%2Belite%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Sennheiser Profile Streaming Set",        "score": 90,        "category": "BEST USB BUNDLE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsennheiser%2Bprofile%2Bstreaming%2Bset%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "HyperX Quadcast S",        "score": 90,        "category": "BEST LOOKING",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyperx%2Bquadcast%2Bs%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Shure MV7+",        "score": 90,        "category": "BEST PODCASTING",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dshure%2Bmv7%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "SteelSeries Alias Pro",        "score": 100,        "category": "BEST STREAMING",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsteelseries%2Balias%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Audio-Technica ATH-M50xSTS StreamSet",        "score": 100,        "category": "BEST HEADSET MIC",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Daudio-technica%2Bath-m50xsts%2Bstreamset%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-webcam-2025",    "name": "Best webcam 2025",    "guideUrl": "https://www.pcgamer.com/best-webcams/",    "category": "Peripherals",    "products": [      {        "modelName": "Elgato Facecam MK.2",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Delgato%2Bfacecam%2Bmk.2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech C920",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bc920%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Streamplify Cam",        "score": 80,        "category": "BEST FOR STREAMERS",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dstreamplify%2Bcam%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Obsbot Meet 2",        "score": 80,        "category": "BEST 4K",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dobsbot%2Bmeet%2B2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Obsbot Tiny 2 Lite 4K",        "score": 90,        "category": "BEST HIGH-END",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dobsbot%2Btiny%2B2%2Blite%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer Kiyo Pro",        "score": 80,        "category": "BEST LOW LIGHT",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bkiyo%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-pc-controller-2025",    "name": "Best PC controller 2025",    "guideUrl": "https://www.pcgamer.com/best-controller-for-pc-gaming/",    "category": "Peripherals",    "products": [      {        "modelName": "Xbox Wireless Controller",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Bwireless%2Bcontroller%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "GameSir Nova Lite",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgamesir%2Bnova%2Blite%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Xbox Elite Series 2",        "score": 90,        "category": "BEST PREMIUM",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dxbox%2Belite%2Bseries%2B2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Scuf Instinct Pro",        "score": 90,        "category": "BEST CUSTOMIZABLE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dscuf%2Binstinct%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Sony DualSense",        "score": 80,        "category": "BEST HAPTICS",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsony%2Bdualsense%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer Wolverine V3 Pro",        "score": 90,        "category": "BEST HALL EFFECT",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bwolverine%2Bv3%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-handheld-pc-2025",    "name": "Best handheld PC 2025",    "guideUrl": "https://www.pcgamer.com/best-handheld-gaming-pc/",    "category": "Systems & Laptops",    "products": [      {        "modelName": "Lenovo Legion Go S SteamOS",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlenovo%2Blegion%2Bgo%2Bs%2Bsteamos%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Valve Steam Deck",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsteam%2Bdeck%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "MSI Claw 8 AI+",        "score": 90,        "category": "BEST WINDOWS",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bclaw%2B8%2Bai%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lenovo Legion Go",        "score": 80,        "category": "BEST BIG SCREEN",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlenovo%2Blegion%2Bgo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Ayaneo Flip DS",        "score": 90,        "category": "BEST COMPACT",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dayaneo%2Bflip%2Bds%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-mini-pc-2025",    "name": "Best mini PC 2025",    "guideUrl": "https://www.pcgamer.com/hardware/gaming-pcs/best-mini-pcs-for-gaming/",    "category": "Systems & Laptops",    "products": [      {        "modelName": "MinisForum AtomMan G7 PT",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dminisforum%2Batomman%2Bg7%2Bpt%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Minisforum Venus UM790 Pro",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dminisforum%2Bvenus%2Bum790%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG NUC 970",        "score": 90,        "category": "BEST PURE GAMING",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bnuc%2B970%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Geekom AX8 Pro",        "score": 80,        "category": "BEST COMPACT",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgeekom%2Bax8%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Ayaneo Retro Mini AM02",        "score": 80,        "category": "BEST LOOKING",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dayaneo%2Bretro%2Bmini%2Bam02%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Beelink SER9",        "score": 90,        "category": "BEST IGPU",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbeelink%2Bser9%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-oled-gaming-monitor-2025",    "name": "Best OLED gaming monitor 2025",    "guideUrl": "https://www.pcgamer.com/best-oled-gaming-monitor/",    "category": "Screens",    "products": [      {        "modelName": "MSI MPG 321URX QD-OLED",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmpg%2B321urx%2Bqd-oled%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "MSI MPG 271QRX",        "score": 90,        "category": "BEST 1440P",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmpg%2B271qrx%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Swift OLED PG34WCDM",        "score": 90,        "category": "BEST ULTRAWIDE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bswift%2Boled%2Bpg34wcdm%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Odyssey OLED G9",        "score": 90,        "category": "BEST 32:9 RATIO",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsamsung%2Bodyssey%2Boled%2Bg9%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware 34 QD-OLED AW3423DWF",        "score": 100,        "category": "BEST BUDGET ULTRAWIDE",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dalienware%2B34%2Bqd-oled%2Baw3423dwf%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "LG UltraGear 32GS95UE",        "score": 90,        "category": "BEST WOLED",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlg%2Bultragear%2B32gs95ue%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Alienware 27 AW2725Q",        "score": 90,        "category": "BEST 27-INCH",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dalienware%2B27%2Baw2725q%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-keyboard-2025",    "name": "Best gaming keyboard 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-keyboard/",    "category": "Peripherals",    "products": [      {        "modelName": "Asus ROG Strix Scope II 96 Wireless",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bscope%2Bii%2B96%2Bwireless%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Gamakay x Naughshark NS68",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgamakay%2Bnaughshark%2Bns68%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Ducky Zero 6108",        "score": 90,        "category": "BEST MID-RANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dducky%2Bzero%2B6108%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Wooting 80HE",        "score": 80,        "category": "BEST RAPID TRIGGER",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dwooting%2B80he%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Keychron K2 HE",        "score": 90,        "category": "BEST WIRELESS RAPID TRIGGER",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dkeychron%2Bk2%2Bhe%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Be Quiet! Light Mount",        "score": 90,        "category": "BEST SILENT",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbe%2Bquiet%2Blight%2Bmount%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Keychron Q3 Max",        "score": 90,        "category": "BEST TENKEYLESS",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dkeychron%2Bq3%2Bmax%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NuPhy Air60 HE",        "score": 90,        "category": "BEST LOW PROFILE",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnuphy%2Bair60%2Bhe%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Kinesis Freestyle Edge RGB",        "score": 90,        "category": "BEST ERGONOMIC",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dkinesis%2Bfreestyle%2Bedge%2Brgb%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Roccat Magma",        "score": 80,        "category": "BEST MEMBRANE",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Droccat%2Bmagma%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-mouse-2025",    "name": "Best gaming mouse 2025",    "guideUrl": "https://www.pcgamer.com/the-best-gaming-mouse/",    "category": "Peripherals",    "products": [      {        "modelName": "Razer DeathAdder V4 Pro",        "score": 90,        "category": "BEST WIRELESS",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bdeathadder%2Bv4%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech G502 X",        "score": 90,        "category": "BEST WIRED",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bg502%2Bx%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech G305 Lightspeed",        "score": 90,        "category": "BEST BUDGET WIRELESS",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bg305%2Blightspeed%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Glorious Model O Eternal",        "score": 90,        "category": "BEST BUDGET WIRED",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dglorious%2Bmodel%2Bo%2Beternal%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Turtle Beach Burst II Air",        "score": 90,        "category": "BEST LIGHTWEIGHT",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dturtle%2Bbeach%2Bburst%2Bii%2Bair%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer Naga Pro",        "score": 90,        "category": "BEST MMO",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bnaga%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Razer Cobra Pro",        "score": 80,        "category": "BEST COMPACT",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Drazer%2Bcobra%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech G Pro",        "score": 90,        "category": "BEST AMBIDEXTROUS",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bg%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Keychron M5",        "score": 90,        "category": "BEST ERGONOMIC",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dkeychron%2Bm5%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-ssd-for-gaming-2025",    "name": "Best SSD for gaming 2025",    "guideUrl": "https://www.pcgamer.com/best-ssd-for-gaming/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "WD Black SN7100 2TB SSD",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dwd%2Bblack%2Bsn7100%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lexar NM790",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlexar%2Bnm790%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "WD_Black SN8100",        "score": 90,        "category": "BEST PCIE 5.0",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dwd%2Bblack%2Bsn8100%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Crucial P510",        "score": 90,        "category": "BEST BUDGET PCIE 5.0",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcrucial%2Bp510%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "TeamGroup MP44 2TB",        "score": 90,        "category": "BEST 4 TB",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dteamgroup%2Bmp44%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Black SN850X 8TB",        "score": 80,        "category": "BEST 8 TB",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dwd%2Bblack%2Bsn850x%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lexar Play (2230) 1TB SSD",        "score": 80,        "category": "BEST M.2 2230",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlexar%2Bplay%2B2230%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Silicon Power XS70 2TB SSD",        "score": 90,        "category": "BEST FOR PS5",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsilicon%2Bpower%2Bxs70%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Crucial MX500 1TB",        "score": 90,        "category": "BEST SATA",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcrucial%2Bmx500%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-pc-fans-2025",    "name": "Best PC fans 2025",    "guideUrl": "https://www.pcgamer.com/best-pc-fans/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "Noctua NF-A12x25 G2",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnoctua%2Bnf-a12x25%2Bg2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Noctua NF-P12 redux-1700",        "score": 70,        "category": "BEST MIDRANGE",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnoctua%2Bnf-p12%2Bredux-1700%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Arctic P12 PWM PST",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darctic%2Bp12%2Bpwm%2Bpst%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Corsair iCUE LINK QX120 RGB",        "score": 80,        "category": "BEST RGB",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcorsair%2Bicue%2Blink%2Bqx120%2Brgb%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT F120 RGB Duo",        "score": 70,        "category": "BEST BUDGET RGB",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bf120%2Brgb%2Bduo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Arctic P12 Pro",        "score": 80,        "category": "BEST FOR RADIATORS",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darctic%2Bp12%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-cpu-coolers-2025",    "name": "Best CPU coolers 2025",    "guideUrl": "https://www.pcgamer.com/best-cpu-coolers/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "Arctic Liquid Freezer III Pro",        "score": 80,        "category": "BEST AIO",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darctic%2Bliquid%2Bfreezer%2Biii%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Cooler Master MasterLiquid Core II",        "score": 80,        "category": "BEST BUDGET AIO",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcooler%2Bmaster%2Bmasterliquid%2Bcore%2Bii%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Be Quiet! Light Loop",        "score": 90,        "category": "BEST HIGH-END AIO",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbe%2Bquiet%2Blight%2Bloop%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT Kraken Elite RGB (2024)",        "score": 80,        "category": "BEST SCREEN",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bkraken%2Belite%2Brgb%2B2024%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Noctua NH-D15 G2",        "score": 90,        "category": "BEST AIR",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnoctua%2Bnh-d15%2Bg2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Arctic Freezer 36",        "score": 80,        "category": "BEST BUDGET AIR",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darctic%2Bfreezer%2B36%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-liquid-coolers-2025",    "name": "Best liquid coolers 2025",    "guideUrl": "https://www.pcgamer.com/best-cpu-coolers/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "Arctic Liquid Freezer III Pro",        "score": 80,        "category": "BEST AIO",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Darctic%2Bliquid%2Bfreezer%2Biii%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Cooler Master MasterLiquid Core II",        "score": 80,        "category": "BEST BUDGET AIO",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcooler%2Bmaster%2Bmasterliquid%2Bcore%2Bii%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Be Quiet! Light Loop",        "score": 90,        "category": "BEST HIGH-END AIO",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbe%2Bquiet%2Blight%2Bloop%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT Kraken Elite RGB (2024)",        "score": 80,        "category": "BEST SCREEN",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bkraken%2Belite%2Brgb%2B2024%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Corsair Nautilus RS",        "score": 80,        "category": "BEST STEALTH",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcorsair%2Bnautilus%2Brs%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-external-ssds-2025",    "name": "Best external SSDs 2025",    "guideUrl": "https://www.pcgamer.com/best-external-ssd-for-game-storage/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "Adata SD810",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dadata%2Bsd810%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Crucial X9",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcrucial%2Bx9%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Samsung T9",        "score": 90,        "category": "BEST FOR VIDEO EDITING",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsamsung%2Bt9%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Sandisk Extreme Pro",        "score": 90,        "category": "BEST USB4",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsandisk%2Bextreme%2Bpro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Seagate Ultra Compact",        "score": 90,        "category": "BEST THUMB DRIVE REPLACEMENT",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dseagate%2Bultra%2Bcompact%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "LaCie Rugged Pro 5",        "score": 90,        "category": "BEST DURABLE DRIVE",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlacie%2Brugged%2Bpro%2B5%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Samsung T7 Shield",        "score": 90,        "category": "BEST BUDGET DURABLE",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsamsung%2Bt7%2Bshield%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "SanDisk Desk Drive",        "score": 90,        "category": "BEST FOR BACKUPS",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dsandisk%2Bdesk%2Bdrive%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-pc-cases-2025",    "name": "Best PC cases 2025",    "guideUrl": "https://www.pcgamer.com/best-pc-case/",    "category": "Cases, Cooling & Storage",    "products": [      {        "modelName": "Havn HS 420",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhavn%2Bhs%2B420%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Phanteks G400A",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dphanteks%2Bg400a%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Hyte Y40",        "score": 80,        "category": "BEST MIDRANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyte%2By40%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Thermaltake S100 TG Snow Edition",        "score": 80,        "category": "BEST BUDGET COMPACT",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dthermaltake%2Bs100%2Btg%2Bsnow%2Bedition%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT H9 Flow RGB+",        "score": 90,        "category": "BEST HIGH-END",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bh9%2Bflow%2Brgb%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Fractal Design Terra",        "score": 80,        "category": "BEST MINI-ITX",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dfractal%2Bdesign%2Bterra%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT H3 Flow",        "score": 80,        "category": "BEST MICRO-ATX",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bh3%2Bflow%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "NZXT H7 Flow",        "score": 80,        "category": "BEST FULL-TOWER",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dnzxt%2Bh7%2Bflow%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Hyte Y70 Touch Infinite",        "score": 90,        "category": "BEST DUAL-CHAMBER",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dhyte%2By70%2Btouch%2Binfinite%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Lian Li O11 Vision Compact",        "score": 90,        "category": "BEST FISH TANK",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlian%2Bli%2Bo11%2Bvision%2Bcompact%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Phanteks Evolv X2",        "score": 80,        "category": "BEST LOOKING",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dphanteks%2Bevolv%2Bx2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Be Quiet! Shadow Base 800 FX",        "score": 80,        "category": "BEST FOR BEGINNERS",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dbe%2Bquiet%2Bshadow%2Bbase%2B800%2Bfx%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-pc-speaker-2025",    "name": "Best PC speaker 2025",    "guideUrl": "https://www.pcgamer.com/best-computer-speakers/",    "category": "Peripherals",    "products": [      {        "modelName": "Mackie CR3.5BT + CR8SBT",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmackie%2Bcr3.5bt%2Bcr8sbt%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Creative Pebble Plus",        "score": 80,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcreative%2Bpebble%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Logitech Z407",        "score": 80,        "category": "BEST MIDRANGE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dlogitech%2Bz407%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Creative Sound Blaster Katana V2",        "score": 90,        "category": "BEST GAMING SOUNDBAR",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcreative%2Bsound%2Bblaster%2Bkatana%2Bv2%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "BlueAnt Soundblade",        "score": 90,        "category": "BEST WIRELESS GAMING SOUNDBAR",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dblueant%2Bsoundblade%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "FiiO SP3 BT",        "score": 90,        "category": "BEST BOOKSHELF SPEAKERS",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dfiio%2Bsp3%2Bbt%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Kanto Ora",        "score": 80,        "category": "BEST REFERENCE SPEAKERS",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dkanto%2Bora%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-capture-cards-2025",    "name": "Best capture cards 2025",    "guideUrl": "https://www.pcgamer.com/best-capture-card-for-pc-gaming/",    "category": "Peripherals",    "products": [      {        "modelName": "AverMedia Live Gamer Ultra S GC553Pro",        "score": 90,        "category": "BEST OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Davermedia%2Blive%2Bgamer%2Bultra%2Bs%2Bgc553pro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Elgato Game Capture Neo",        "score": 90,        "category": "BEST BUDGET",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Delgato%2Bgame%2Bcapture%2Bneo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AVerMedia Live Gamer Duo",        "score": 90,        "category": "BEST TWO SOURCE",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Davermedia%2Blive%2Bgamer%2Bduo%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AVerMedia Live Gamer Ultra 2.1",        "score": 90,        "category": "BEST 4K",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Davermedia%2Blive%2Bgamer%2Bultra%2B2.1%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Elgato 4K60 S+",        "score": 90,        "category": "BEST STANDALONE",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Delgato%2B4k60%2Bs%2Bplus%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "AVerMedia Elite Go GC313Pro",        "score": 80,        "category": "BEST FOR HANDHELD GAMING PCS",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Davermedia%2Belite%2Bgo%2Bgc313pro%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-gaming-motherboard-2025",    "name": "Best gaming motherboard 2025",    "guideUrl": "https://www.pcgamer.com/best-gaming-motherboards/",    "category": "Core Components",    "products": [      {        "modelName": "MAG X870E Tomahawk Wifi",        "score": 90,        "category": "BEST AM5",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmag%2Bx870%2Btomahawk%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus TUF Gaming B650-Plus WiFi",        "score": 80,        "category": "BEST BUDGET AM5",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Btuf%2Bgaming%2Bb650-plus%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock B850 Steel Legend WiFi",        "score": 80,        "category": "BEST MIDRANGE AM5",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bb850%2Bsteel%2Blegend%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Strix B550-E Gaming",        "score": 80,        "category": "BEST AM4",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bb550-e%2Bgaming%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Maximus Z890 Hero",        "score": 80,        "category": "BEST LGA1851",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bmaximus%2Bz890%2Bhero%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "B860 Steel Legend Wi-Fi",        "score": 90,        "category": "BEST BUDGET LGA1851 - INTEL CORE ULTRA 200S",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bb860%2Bsteel%2Blegend%2Bwi-fi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "MSI MAG Z790 Tomahawk WiFi",        "score": 90,        "category": "BEST LGA1700",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dmsi%2Bmag%2Bz790%2Btomahawk%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "B760M PG Sonic WiFi",        "score": 80,        "category": "BEST BUDGET LGA1700",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bb760m%2Bpg%2Bsonic%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-mini-itx-motherboard",    "name": "Best Mini-ITX motherboard",    "guideUrl": "https://www.pcgamer.com/hardware/motherboards/best-mini-itx-motherboards/",    "category": "Core Components",    "products": [      {        "modelName": "Asus ROG Strix X870-I Gaming WiFi",        "score": 80,        "category": "BEST AMD AM5",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bx870-i%2Bgaming%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Gigabyte A620I AX",        "score": 90,        "category": "BEST BUDGET AMD AM5",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dgigabyte%2Ba620i%2Bax%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock Phantom B850I Lightning Wi-Fi",        "score": 80,        "category": "BEST MID-RANGE AMD AM5",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bphantom%2Bb850i%2Blightning%2Bwi-fi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock A520M-ITX/ac",        "score": 80,        "category": "BEST BUDGET AM4",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Ba520m-itx%2Fac%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock Phantom Gaming B860I Lightning Wi-Fi",        "score": 80,        "category": "BEST INTEL CORE ULTRA 200S",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bphantom%2Bgaming%2Bb860i%2Blightning%2Bwi-fi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Asus ROG Strix Z790-I Gaming WiFi",        "score": 90,        "category": "BEST INTEL 14TH/13TH GEN",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasus%2Brog%2Bstrix%2Bz790-i%2Bgaming%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "ASRock B760I Lightning WiFi",        "score": 80,        "category": "BEST BUDGET INTEL 14TH/13TH GEN",        "imageUrl": "https://m.media-amazon.com/images/I/81rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dasrock%2Bb760i%2Blightning%2Bwifi%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  },  {    "id": "best-ram-for-gaming-2025",    "name": "Best RAM for gaming 2025",    "guideUrl": "https://www.pcgamer.com/best-ram-for-gaming/",    "category": "Core Components",    "products": [      {        "modelName": "G.Skill Trident Z5 RGB 32 GB DDR5-7200",        "score": 80,        "category": "BEST DDR5 OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/81K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dg.skill%2Btrident%2Bz5%2Brgb%2B32gb%2Bddr5-7200%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "TeamGroup T-Force Vulcan DDR5 32GB (2x16GB) 5200MHz",        "score": 80,        "category": "BEST BUDGET DDR5",        "imageUrl": "https://m.media-amazon.com/images/I/71rL8YGBDOL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dteamgroup%2Bt-force%2Bvulcan%2Bddr5-5200%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "G.Skill Trident Z5 64GB 6400MT/s",        "score": 80,        "category": "BEST HIGH-CAPACITY DDR5",        "imageUrl": "https://m.media-amazon.com/images/I/81QvGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dg.skill%2Btrident%2Bz5%2B64gb%2Bddr5-6400%2Bcl32%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "TeamGroup T-Force Xtreem ARGB (2x 8GB)",        "score": 90,        "category": "BEST DDR4 OVERALL",        "imageUrl": "https://m.media-amazon.com/images/I/71K9oF7HPUL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dteam%2Bxtreem%2B16gb%2Bddr4-3600%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "G.Skill Ripjaws V Series 16GB DDR4-3600 PC4-28800 F4-3600C16D-16GVKC",        "score": 80,        "category": "BEST BUDGET DDR4",        "imageUrl": "https://m.media-amazon.com/images/I/81vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dg.skill%2Bripjaws%2Bv%2B16gb%2Bddr4-3600%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      },      {        "modelName": "Corsair Dominator Platinum RGB 32GB DDR4-3200MHz",        "score": 90,        "category": "BEST HIGH-CAPACITY DDR4",        "imageUrl": "https://m.media-amazon.com/images/I/71vQGzE8NFL._AC_SL1500_.jpg",        "productUrl": "https://target.georiot.com/Proxy.ashx?tsid=8428&GR_URL=https%3A%2F%2Fwww.amazon.co.uk%2Fs%3Fk%3Dcorsair%2Bdominator%2Bplatinum%2Brgb%2B32gb%2Bddr4-3200%26tag%3Dhawk-future-21%26linkCode%3Dogi%26ascsubtag%3Dhawk-custom-tracking-21"      }    ]  }];            // --- Inlined components/StarRating.tsx ---      const StarRating = ({ score }) => {        const rating = (score / 100) * 5;        const stars = [];        for (let i = 1; i <= 5; i++) {          const fillAmount = Math.min(1, Math.max(0, rating - (i - 1)));          const clipId = 'pcg-clip-partial-' + i + '-' + Math.random().toString(36).substr(2, 9);          if (fillAmount >= 0.99) {            stars.push(React.createElement('div', { key: i, className: "pcg-star pcg-star-full" }, React.createElement('svg', { className: "pcg-star-svg" }, React.createElement('use', { href: "#pcg-tr-star-full" }))));          } else if (fillAmount > 0.01) {            stars.push(React.createElement('div', { key: i, className: "pcg-star" }, React.createElement('svg', { className: "pcg-star-svg pcg-star-empty" }, React.createElement('use', { href: "#pcg-tr-star-empty" })), React.createElement('div', { className: "pcg-star-partial" }, React.createElement('svg', { className: "pcg-star-svg" }, React.createElement('defs', null, React.createElement('clipPath', { id: clipId }, React.createElement('rect', { x: "0", y: "0", width: (fillAmount * 100) + '%', height: "100%" }))), React.createElement('use', { href: "#pcg-tr-star-full", clipPath: 'url(#' + clipId + ')' })))));          } else {            stars.push(React.createElement('div', { key: i, className: "pcg-star pcg-star-empty" }, React.createElement('svg', { className: "pcg-star-svg" }, React.createElement('use', { href: "#pcg-tr-star-empty" }))));          }        }        return React.createElement('div', { className: "pcg-stars", "aria-label": rating.toFixed(1) + ' out of 5 stars' }, stars);      };      // --- Inlined components/ComparisonList.tsx ---      const ComparisonList = ({ offers, id, productImageUrl, originalModelName, onClose }) => {          const decodeHtmlEntities = (text) => {              if (typeof text !== 'string') return '';              const textArea = document.createElement('textarea');              textArea.innerHTML = text;              return textArea.value;          };                const offerElements = offers.map((offer, index) => {              const modelName = offer.name?.trim() || originalModelName || 'Product';              const isLowest = index === 0;              const rowClassName = 'pcg-comparison-row ' + (isLowest ? 'pcg-comparison-row-sticky' : '');              const linkProps = {                href: offer.productUrl,                target: "_blank",                rel: "noopener noreferrer sponsored",                "data-hawkify-clicked-area": "cta",                "data-hawkify-category": "PC Gamer comparison price button",                "data-hawkify-widget-type": "comparison-buy-now",              };                    const rowHeader = React.createElement('div', { className: 'pcg-comparison-row-header' },                  React.createElement('div', { className: 'pcg-comparison-model-name' }, modelName)              );              const rowContent = React.createElement('div', { className: 'pcg-comparison-row-content' },                  React.createElement('span', { className: "pcg-comparison-number" }, index + 1),                  React.createElement('img', { src: productImageUrl, alt: "", className: "pcg-comparison-product-image", onError: (e) => { e.target.src = 'https://placehold.co/60x60/E2E8F0/4A5568?text=Img'; } }),                  React.createElement('div', { className: "pcg-comparison-retailer-logo-container" },                      offer.logoUrl && React.createElement('img', { src: offer.logoUrl, alt: offer.retailer + ' logo', className: "pcg-retailer-logo", loading: "lazy" })                  ),                  React.createElement('div', { className: 'pcg-comparison-price-wrapper' },                      isLowest && React.createElement('div', { className: 'pcg-lowest-price-badge' }, 'Lowest Price'),                      React.createElement('span', { className: "pcg-comparison-price" }, offer.isPriceVague ? 'Check Price' : decodeHtmlEntities(offer.currencySymbol) + offer.price)                  ),                  React.createElement('a', {...linkProps, className: "pcg-comparison-button"}, 'View')              );                    return React.createElement('div', {                  key: index,                  className: rowClassName,              },                  rowHeader,                  rowContent              );          });                    const chevronUp = React.createElement('svg', { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "currentColor", className: "pcg-chevron", viewBox: "0 0 16 16", "aria-hidden": "true" },             React.createElement('path', { d: "M8 4l6 6H2l6-6z" })          );                const hideButton = React.createElement('div', { className: "pcg-show-more-container" },              React.createElement('button', { onClick: onClose, className: "pcg-show-more-button" }, 'Hide', chevronUp)          );                return React.createElement('div', { id: id, className: "pcg-comparison-container", "aria-label": "Price comparison list" },              React.createElement('div', { className: 'pcg-comparison-list-scrollable' }, offerElements),              hideButton          );      };      // --- Inlined components/ProductRow.tsx ---      const ProductRow = ({ product, index, isExpanded, onToggleCompare }) => {        const decodeHtmlEntities = (text) => {            if (typeof text !== 'string') return '';            const textArea = document.createElement('textarea');            textArea.innerHTML = text;            return textArea.value;        };        const getPriceDisplay = () => {            if (!product.price || product.price === 'Check Amazon') {                return 'Check Amazon';            }            if (product.priceValue !== undefined && product.currencySymbol && product.retailer) {                const formattedPrice = product.priceValue.toLocaleString();                const pricePart = decodeHtmlEntities(product.currencySymbol) + formattedPrice + ' at ';                const retailerPart = product.retailer;                const fullText = pricePart + retailerPart;                const MAX_LENGTH = 22;                if (fullText.length > MAX_LENGTH) {                    const availableLengthForRetailer = MAX_LENGTH - pricePart.length;                    if (availableLengthForRetailer > 3) {                        const truncatedRetailer = retailerPart.substring(0, availableLengthForRetailer - 3) + '...';                        return pricePart + truncatedRetailer;                    } else {                        return decodeHtmlEntities(product.currencySymbol) + formattedPrice;                    }                }                return fullText;            }            return decodeHtmlEntities(product.price);        };                const renderCompareControl = () => {          if (!product.priceCount || product.priceCount < 1) {            return null;          }          if (product.priceCount === 1) {            return React.createElement('span', { className: "pcg-compare-link pcg-compare-link-static" }, React.createElement('strong', null, '1'), ' price found');          }          const chevronDown = React.createElement('svg', { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "currentColor", className: "pcg-chevron", viewBox: "0 0 16 16", "aria-hidden": "true" }, React.createElement('path', { d: "M8 12L2 6h12L8 12z" }));          const chevronUp = React.createElement('svg', { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "currentColor", className: "pcg-chevron", viewBox: "0 0 16 16", "aria-hidden": "true" }, React.createElement('path', { d: "M8 4l6 6H2l6-6z" }));                    return React.createElement('button', {             onClick: () => onToggleCompare(product.modelName),             className: "pcg-compare-link",             "aria-expanded": isExpanded,             "aria-controls": 'comparison-list-' + index          },             React.createElement('span', null,                 React.createElement('strong', null, product.priceCount),                 " prices | ",                 React.createElement('strong', null, isExpanded ? 'Hide' : 'Compare')            ),            isExpanded ? chevronUp : chevronDown          );        };        const canCompare = product.priceCount && product.priceCount > 1;        const productRowContent = React.createElement('div', { className: "pcg-product-row" },             React.createElement('img', { src: product.imageUrl, alt: product.modelName, className: "pcg-product-image", onError: (e) => { e.target.src = 'https://placehold.co/64x64/E2E8F0/4A5568?text=Image'; } }),             React.createElement('div', { className: "pcg-product-content" },                 React.createElement('div', { className: "pcg-product-info" },                     React.createElement('div', { className: "pcg-product-meta" },                         React.createElement('span', { className: "pcg-category-badge" }, product.category),                         React.createElement(StarRating, { score: product.score })                    ),                     React.createElement('a', { href: product.productUrl, target: "_blank", rel: "noopener noreferrer sponsored", className: "pcg-product-link", "data-hawkify-clicked-area": "cta", "data-hawkify-category": "PC Gamer product link", "data-hawkify-widget-type": "product-name" }, (index + 1) + '. ' + product.modelName)                ),                 React.createElement('div', { className: "pcg-price-panel" },                     React.createElement('div', null, React.createElement('a', { href: product.productUrl, target: "_blank", rel: "noopener noreferrer sponsored", className: "pcg-view-button", "data-hawkify-clicked-area": "cta", "data-hawkify-category": "PC Gamer price button", "data-hawkify-widget-type": "buy-now" }, getPriceDisplay())),                     product.price !== 'Check Amazon' && renderCompareControl()                )            )        );        const comparisonContent = canCompare && (          product.allOffers && product.allOffers.length > 0 ?            React.createElement(ComparisonList, { offers: product.allOffers, id: 'comparison-list-' + index, productImageUrl: product.imageUrl, originalModelName: product.modelName, onClose: () => onToggleCompare(product.modelName) }) :            React.createElement('div', { className: "pcg-comparison-container", id: 'comparison-list-' + index },                React.createElement('div', { className: "pcg-no-offers" }, 'No other offers found.')            )        );        return React.createElement('div', { className: 'pcg-product-row-wrapper ' + (isExpanded ? 'pcg-expanded' : '') },          productRowContent,          comparisonContent        );      };      // --- Inlined App.tsx (core logic only) ---      const App = () => {        const [productLists] = useState(allProductLists);        const configuredDefaultListId = 'best-pc-gaming-gear-2025';        const defaultList = productLists.find(l => l.id === configuredDefaultListId) || productLists[0];        const [selectedListId, setSelectedListId] = useState(defaultList.id);        const [activeCategory, setActiveCategory] = useState(defaultList.category);        const [processedProducts, setProcessedProducts] = useState([]);        const [isLoading, setIsLoading] = useState(true);        const [productDataCache, setProductDataCache] = useState({});        const [expandedProduct, setExpandedProduct] = useState(null);        const widgetContainerRef = useRef(null);                const currentList = productLists.find(list => list.id === selectedListId) || defaultList;                const categories = [...new Set(productLists.map(p => p.category))];        const filteredLists = productLists.filter(list => list.category === activeCategory);        const showGuideLinkAtTop = false;        const showLivePill = false;        const handleToggleCompare = useCallback((modelName) => {            const isOpening = expandedProduct !== modelName;            setExpandedProduct(isOpening ? modelName : null);        }, [expandedProduct]);                const handleCategoryChange = (newCategory) => {            setActiveCategory(newCategory);            const firstListInNewCategory = productLists.find(list => list.category === newCategory);            setSelectedListId(firstListInNewCategory?.id || '');        };                const handleListChange = (newListId) => {            if (newListId) {              const list = productLists.find(l => l.id === newListId);              if (list) {                setSelectedListId(list.id);                if (list.category !== activeCategory) {                  setActiveCategory(list.category);                }              }            } else {              setSelectedListId(defaultList.id);              setActiveCategory(defaultList.category);            }        };        useEffect(() => {          if (!currentList) return;          const listId = currentList.id;          if (productDataCache[listId]) {            setProcessedProducts(productDataCache[listId]);            setIsLoading(false);          } else {            setIsLoading(true);            const fetchAndCachePrices = async () => {              const productsToFetch = currentList.products;              const currencySymbolMap = { '£': 'GBP', '$': 'USD', '€': 'EUR', '¥': 'JPY' };              const updatedProducts = await Promise.all(                productsToFetch.map(async (product) => {                  try {                    const encodedModelName = encodeURIComponent(product.modelName);                    const apiUrl = 'https://hawky.pcgamer.com/widget.php?model_name=' + encodedModelName + '&article_type=deals_compare&article_category=retail&language=en-US&site=PCG&all_filters=false&exclude_unlabelled=false&include_specs=false&offset=0&distinct_networks=0&multi=1&keep_duplicities=1&filter_product_types=deals%2Ccontracts%2Csubscriptions%2Cbroadband%2Csimilar&rows=50&device=mobile&origin=widgets-clientside&only_fallback_offers=false&progressive_filtering=1';                    const response = await fetch(apiUrl);                    if (!response.ok) throw new Error('HTTP error! status: ' + response.status);                    const data = await response.json();                    const offers = data?.widget?.data?.offers;                    const modelInfoData = data?.widget?.data?.model_info;                    let allOffers = [];                    if (offers && offers.length > 0) {                      const allOffersUnsorted = offers.map((offer) => {                          const offerPrice = parseFloat(offer.offer.price);                          const isOfferAmazonSearch = offer.offer.link && offer.offer.link.includes('amazon.com/s?');                          const isOfferZeroPrice = offer.offer.price === "0.00";                          let name = offer.offer.display_name || offer.offer.name || '';                          if (offer.bundle_models && offer.bundle_models.length > 0) {                              const bundledItems = offer.bundle_models.map(b => b.model_name).join(' + ');                              if (name && bundledItems && !name.toLowerCase().includes(bundledItems.toLowerCase())) { name = name + ' + ' + bundledItems; }                          }                          return { price: Math.round(offerPrice).toLocaleString(), currencySymbol: offer.offer.currency_symbol || '$', retailer: offer.merchant?.name || 'retailer', productUrl: offer.offer.link || '#', isPriceVague: isOfferAmazonSearch || isOfferZeroPrice, logoUrl: offer.merchant?.logo_url, model: offer.model, name: name, priceValue: (isOfferAmazonSearch || isOfferZeroPrice) ? Infinity : offerPrice };                      });                      const allOffersSorted = allOffersUnsorted.sort((a, b) => a.priceValue - b.priceValue);                      const seen = new Set();                      const finalOffers = [];                      for (const offer of allOffersSorted) {                          const key = offer.retailer + '-' + offer.price;                          if (!seen.has(key)) {                              const { priceValue, ...rest } = offer;                              finalOffers.push(rest);                              seen.add(key);                          }                      }                      allOffers = finalOffers;                                          const bestOffer = offers[0];                      const modelId = bestOffer.model_id;                      const allPossibleImages = [];                      if (modelInfoData?.[modelId]?.model_image_url) { allPossibleImages.push(modelInfoData[modelId].model_image_url); }                      offers.forEach(o => { if (o.image) allPossibleImages.push(o.image); if (o.model_image) allPossibleImages.push(o.model_image); });                      const uniqueImages = [...new Set(allPossibleImages.filter(img => typeof img === 'string'))];                      let bestImage = product.imageUrl;                      if (uniqueImages.length > 0) { const pngs = uniqueImages.filter(img => img.toLowerCase().includes('.png')); bestImage = pngs.length > 0 ? pngs[0] : uniqueImages[0]; }                      const price = Math.round(parseFloat(bestOffer.offer.price));                      const formattedPrice = price.toLocaleString();                      const currencySymbol = bestOffer.offer.currency_symbol || '$';                      const merchantName = bestOffer.merchant?.name || 'retailer';                      const productLink = bestOffer.offer.link;                      const isAmazonSearch = productLink && productLink.includes('amazon.com/s?');                      const isZeroPrice = bestOffer.offer.price === "0.00";                      const priceText = (isAmazonSearch || isZeroPrice) ? 'Check Amazon' : currencySymbol + formattedPrice + ' at ' + merchantName;                      const priceCount = (isZeroPrice || isAmazonSearch) ? 0 : (data?.widget?.data?.counts?.deals || 0);                      return { ...product, imageUrl: bestImage, price: priceText, productUrl: productLink || product.productUrl, compareUrl: 'https://www.pcgamer.com/deals/compare/?model_name=' + encodedModelName, priceCount: priceCount, priceValue: price, currencyCode: currencySymbolMap[currencySymbol] || 'USD', allOffers: allOffers, retailer: merchantName, currencySymbol: currencySymbol };                    }                  } catch (error) { console.error('Error fetching price for ' + product.modelName + ':', error); }                  return { ...product, price: 'Check Amazon', compareUrl: 'https://www.pcgamer.com/deals/compare/?model_name=' + encodeURIComponent(product.modelName), allOffers: [] };                })              );              setProductDataCache(prevCache => ({ ...prevCache, [listId]: updatedProducts }));              setProcessedProducts(updatedProducts);              setIsLoading(false);            };            fetchAndCachePrices();          }        }, [currentList, productDataCache]);        useEffect(() => {          if (isLoading || processedProducts.length === 0) return;          const schema = { '@context': 'https://schema.org', '@type': 'ItemList', 'name': currentList.name, 'url': currentList.guideUrl, 'itemListElement': processedProducts.map((product, index) => ({ '@type': 'ListItem', 'position': index + 1, 'item': { '@type': 'Product', 'name': product.modelName, 'image': product.imageUrl, 'url': product.productUrl, ...(product.priceValue && product.currencyCode && { 'offers': { '@type': 'Offer', 'price': product.priceValue, 'priceCurrency': product.currencyCode, 'availability': 'https://schema.org/InStock', 'url': product.productUrl } }), 'aggregateRating': { '@type': 'AggregateRating', 'ratingValue': (product.score / 100 * 5).toFixed(1), 'bestRating': '5', 'ratingCount': '1' } } })) };          let scriptTag = document.getElementById('pcg-widget-json-ld');          if (!scriptTag) { scriptTag = document.createElement('script'); scriptTag.id = 'pcg-widget-json-ld'; scriptTag.type = 'application/ld+json'; document.head.appendChild(scriptTag); }          scriptTag.textContent = JSON.stringify(schema);          const widgetContainer = widgetContainerRef.current;          if (widgetContainer) {             document.dispatchEvent(new CustomEvent("processArticle", { detail: { element: widgetContainer } }));           }        }, [processedProducts, isLoading, currentList]);        if (!currentList) return React.createElement('div', { className: "p-5 text-center text-red-500" }, "No product list found.");        const themeClassName = "standard" !== 'standard' ? 'theme-' + "standard" : '';        const outlineClassName = true ? 'pcg-widget-outline' : '';        const finalClassName = [themeClassName, outlineClassName].filter(Boolean).join(' ');        const guideLinkElement = React.createElement('div', { className: 'pcg-footer-link ' + (showGuideLinkAtTop ? 'pcg-footer-link-top' : '') }, "Read the full guide:", " ", React.createElement('a', { href: currentList.guideUrl, target: "_blank", rel: "noopener noreferrer", "data-hawkify-clicked-area": "cta", "data-hawkify-category": "PC Gamer buying guide", "data-hawkify-widget-type": "guide-link" }, currentList.name));        return React.createElement('div', { id: "pcg-cpu-widget-container", className: finalClassName, ref: widgetContainerRef },          React.createElement('svg', { style: { display: 'none' }, "aria-hidden": "true" }, React.createElement('defs', null, React.createElement('symbol', { id: "pcg-tr-star-full", viewBox: "0 0 20 20" }, React.createElement('path', { d: "M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z" })), React.createElement('symbol', { id: "pcg-tr-star-empty", viewBox: "0 0 20 20" }, React.createElement('path', { d: "M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z" })))),          React.createElement('div', { className: "pcg-widget-container" },            React.createElement('div', { className: "pcg-header-section" }, React.createElement('div', { className: "pcg-header-content" }, React.createElement('img', { src: "https://proof.vanilla.tools/media/images/brandLogos/pcgamer.png", alt: "PC Gamer Logo", className: "pcg-header-image" }), React.createElement('div', { className: "pcg-header-text" }, React.createElement('h2', { id: "pcg-current-list-title", className: "pcg-header-title" }, currentList.name), React.createElement('p', { className: "pcg-header-subtitle" }, "All our current recommendations"))), showLivePill && React.createElement('div', { className: "pcg-live-pill" }, React.createElement('span', { className: "pcg-live-dot" }), React.createElement('span', null, "Live"))),            showGuideLinkAtTop && guideLinkElement,            React.createElement('div', { className: "pcg-dropdown-controls" },               React.createElement('div', { className: 'pcg-select-wrapper' },                React.createElement('select', { className: "pcg-select-dropdown", value: activeCategory, onChange: (e) => handleCategoryChange(e.target.value), "aria-label": "Select product category", "data-hawkify-clicked-area": "filter", "data-hawkify-category": "PC Gamer category filter", "data-hawkify-widget-type": "dropdown" },                   React.createElement('option', { value: "" }, "Pick a category"),                  categories.map(category => React.createElement('option', { key: category, value: category }, category))                )              ),              React.createElement('div', { className: 'pcg-select-wrapper' },                React.createElement('select', { className: "pcg-select-dropdown", value: selectedListId, onChange: (e) => handleListChange(e.target.value), "aria-label": "Select buying guide", "data-hawkify-clicked-area": "filter", "data-hawkify-category": "PC Gamer guide selector", "data-hawkify-widget-type": "dropdown", disabled: filteredLists.length <= 1 },                    React.createElement('option', { value: "" }, "Choose a list"),                   filteredLists.map(list => React.createElement('option', { key: list.id, value: list.id }, list.name))                )              )            ),            React.createElement('hr', { className: "pcg-separator" }),            React.createElement('div', { id: "pcg-products-container" }, isLoading ? React.createElement('div', { className: "pcg-loading" }, "Loading recommendations...") : React.createElement('div', { className: "pcg-group" }, processedProducts.map((product, index) => React.createElement(ProductRow, { product: product, index: index, key: product.modelName + '-' + index, isExpanded: expandedProduct === product.modelName, onToggleCompare: handleToggleCompare })))),            React.createElement('hr', { className: "pcg-separator" }),            !showGuideLinkAtTop && guideLinkElement,            React.createElement('div', { className: "pcg-powered-by" }, React.createElement('span', { className: "pcg-powered-by-text" }, "POWERED BY"), React.createElement('img', { src: "https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb-200-100.png", alt: "PC Gamer Logo", className: "pcg-powered-by-logo" }))          )        );      };      // --- Inlined index.tsx ---      const rootElement = document.getElementById('root');      if (!rootElement) {        throw new Error("Could not find root element to mount to");      }      const root = ReactDOM.createRoot(rootElement);      root.render(React.createElement(React.StrictMode, null, React.createElement(App, null)));      // --- Iframe Resizing Script ---      const sendHeight = () => {        // We add a small buffer to prevent scrollbars from appearing due to sub-pixel rendering        const height = document.documentElement.scrollHeight + 5;        window.parent.postMessage({ type: 'pcg-widget-resize', height: height }, '*');      };            const observer = new ResizeObserver(() => {        // Defer the execution to the next frame to avoid ResizeObserver loop errors.        window.requestAnimationFrame(sendHeight);      });      observer.observe(document.body);            window.addEventListener('load', () => {          setTimeout(sendHeight, 200);      });            document.getElementById('root').addEventListener('click', () => {        setTimeout(sendHeight, 450);      });    </script>      </div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/AszbJKeMrYAQd96mWXE5-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:description>                                                            <media:text><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:text>
                                <media:title type="plain"><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/AszbJKeMrYAQd96mWXE5-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA.png ]]></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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/VHK6WWHuYbRyFX3dSXbr3G.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/w5YASeamdYp7YnYfoUvq-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Victrix Pro BFG Reloaded sitting in its carrying case on a wooden table]]></media:description>                                                            <media:text><![CDATA[The Victrix Pro BFG Reloaded sitting in its carrying case on a wooden table]]></media:text>
                                <media:title type="plain"><![CDATA[The Victrix Pro BFG Reloaded sitting in its carrying case on a wooden table]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/w5YASeamdYp7YnYfoUvq-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>In early 2024, Turtle Beach bought gamepad and peripherals company PDP for $118 million. Just before that happened, PDP released the Victrix Pro BFG. It was a pro gamepad with some neat customization features: The left stick and the D-Pad, and the right stick and the face buttons, both lived on modules which could be removed and reversed to toggle between symmetrical and asymmetrical analog stick layouts. A fightpad module was included too, so you could swap out either the left or right modules for some tactile six-button action.</p><p>I'm describing this older model in such detail because this newer <a href="https://www.turtlebeach.com/products/victrix-pro-bfg-reloaded-wireless-controller" target="_blank">Victrix Pro BFG Reloaded</a> (now labelled 'by Turtle Beach') is functionally identical to that older <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">PC controller</a>. There are some minor changes once you scratch the surface, but before I get to those, let's re-iterate what carries forward. </p><p>Like its predecessor, the Victrix Pro Reloaded has the nowadays essential "pro" features, including four programmable paddle buttons, trigger stops on the L2 / R2 switches, and Hall effect analog sticks. Three d-pad variations are included, which accommodate both Xbox and Switch Pro variations, as well as a hybrid of both, and these can be popped in and out on the fly. There's even swappable octagonal housing for the analog sticks, lest you want a more toothy eight-directional feel.</p><p>Removing the modules with the included precision screwdriver and swapping them around is dead easy, though you'll need to be careful not to lose the tiny screws. Like its predecessor, the Victrix Pro Reloaded also includes two analog stick replacements. One of these is a simple 5mm replacement for the standard stick height, but there's also a 12mm stick that could possibly simulate a fight pad joystick, or else gratify the niche who love higher sticks for more accurate first-person aiming. Swapping them is as simple as unscrewing the module housing and then popping the sticks off with a little bit of force.</p><div  class="fancy-box"><div class="fancy_box-title">Pro BFG Reloaded specs</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9jmt5W3tckB6YnZgabSV2g" name="Victrix Pro BFG Reloaded" caption="" alt="Victrix Pro BFG Reloaded on a wooden table" src="https://cdn.mos.cms.futurecdn.net/9jmt5W3tckB6YnZgabSV2g.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text"><strong>Compatibility: </strong>Windows 10 and 11, Xbox, Android<br><strong>Connectivity: </strong>2.4 GHz wireless, Bluetooth, wired<br><strong>Ports:</strong> USB-C, 3.5 mm stereo headset jack<br><strong>Thumbstick layout: </strong>Modular, both asymmetric and symmetric<br><strong>Weight:</strong> 265g<br><strong>Dimensions: </strong>120x165x50 mm<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://www.turtlebeach.com/products/victrix-pro-bfg-reloaded-wireless-controller" target="_blank">$210</a> | <a data-analytics-id="inline-link" href="https://uk.turtlebeach.com/products/victrix-pro-bfg-reloaded-wireless-controller" target="_blank"><em>£</em>180</a> | <a data-analytics-id="inline-link" href="https://au.turtlebeach.com/products/victrix-pro-bfg-reloaded-wireless-controller" target="_blank">AU$309</a></p></div></div><p>So what's different? The first is specific to the model I'm using: the Xbox Pro BFG Reloaded lacks the PlayStation trackpad, though if you want one there's a new Sony-centric model <em>and</em> a PC Edition with a trackpad also included (the latter was announced shortly after I received the present sample). These might be ideal if the Steam Deck has alerted you to the conveniences of a gamepad trackpad. The biggest difference shared across both models is that the Victrix Pro Reloaded has rumble support, whereas the older models did not, but unfortunately there's no gyro support. </p><p>The same imperfections are here, too. The trigger stop toggles lie exactly where most users will rest their middle fingers, which is probably by design, but it's far too easy to accidentally adjust the trigger depth during Heated Gaming Moments. Likewise, the paddle buttons cannot be toggled off or frozen, which can lead to erroneous inputs, and I found the left trigger a little over-sensitive. I also really wish the face buttons were more tactile and clicky. Your attitude may vary, but I think a pro controller needs better face buttons if they're to truly feel better than Sony and Xbox's stock offerings.</p><div  class="fancy-box"><div class="fancy_box-title">BFG Reloaded PC Edition</div><div class="fancy_box_body"><p class="fancy-box__body-text">Announced last week, the Victrix Pro BFG Reloaded - PC Edition is cheaper than the model under review at $189.99 / £159.99. While its polling rate is significantly higher at 1 kHz, it also lacks the fight pad module. That said, it's still a modular controller, only the fight pad needs to be purchased separately for $24.99 / £16.99.</p></div></div><p>The other issue worth noting is that the polling rate here is the standard 125 Hz, which is the same as the Xbox controller, but far beneath what modern "pro" gamepads are capable of offering. Even the new Victrix Pro Reloaded PC edition has a polling rate of 1000 Hz, not to mention the much cheaper <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro</a>. For most players this decrease in latency won't make any noticeable difference, but for people who are or consider themselves to be "pro", it could be a deal breaker. And honestly, only people who consider themselves pro are likely to get much out of this controller.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/9jmt5W3tckB6YnZgabSV2g.jpg" alt="Victrix Pro BFG Reloaded on a wooden table" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/yoZjUJfQSzVv6FeXb5LXZK.jpg" alt="Victrix Pro BFG Reloaded on a wooden table" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/jRVhEebuxMYcQyCVpB3XkX.jpg" alt="Victrix Pro BFG Reloaded on a wooden table" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/coFsLzZ7t3JdqiogkcJG6d.jpg" alt="Victrix Pro BFG Reloaded close-up showing a 12mm analog stick" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FKH84bn5oZHJvrfv36oMMj.jpg" alt="The rear of the Victrix Pro BFG Reloaded, showing its paddle buttons and trigger stop switches" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rZdQzXVZ8o8gptn5xHJ783.jpg" alt="A close up of the right trigger and bumper on the Victrix Pro BFG Reloaded" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YcmHqbeKJX5EYqMiq6gvs7.jpg" alt="A close up of the fightpad module on the Victrix Pro BFG Reloaded" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/X6Q5nKJ5PzXZTtNNsvcQ2D.jpg" alt="Victrix Pro BFG Reloaded in its included carrying case" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Connectivity is what you'd expect nowadays: there's a 2.4 GHz wireless dongle, Bluetooth connectivity, and an impressively long (3 metres) and robust USB-A to USB-C cord included. All the modular parts, as well as the screwdriver, the cord and the gamepad itself, come in a solid carrying case. Battery life is advertised at 20 hours, which checks out with what I experienced.</p><div  class="fancy-box"><div class="fancy_box-title">Buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text">✅ <strong>You want a pro gamepad that's also a fight pad:</strong> This gamepad has modules that can be interchanged, transforming a regular 'ol controller into a portable fight pad.<br><br>✅ <strong>You want to be able to swap between asymmetric and symmetric stick layout: </strong>It's one of the few controllers that make this easy.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text">❌<strong> You don't want the fight pad functionality: </strong>Without its hero feature, the Victrix Pro BFG Reloaded lacks the lustre of the competition.</p></div></div><p>If you need a gamepad that will morph into a serviceable fight pad, I think the Victrix Pro BFG pulls that function off more serviceably than some of the competition, chiefly the <a href="https://www.pcgamer.com/hardware/controllers/turtle-beach-stealth-pivot-review/" target="_blank">Turtle Beach Stealth Pivot</a>. Whereas the Stealth Pivot swaps between two configurations, there's quite a lot more flexibility with the Pro BFG, though you'll be paying more for that privilege. </p><p>And it's really the price where the Victrix Pro BFG kinda falls behind. During a time when great TMR-equipped pro gamepads can be had for less than $100, splashy and expensive devices need to work very hard for their bread money. Whereas two years ago it might have been easy to recommend the Victrix Pro BFG Reloaded to just about anyone after a pro controller, nowadays you really need to want, nay need, that modular design to make it worth the outlay. Though if you're a PS5 gamer you don't have a heap of alternatives; in that context this model might shine.</p><p>But PC gamers have a mind-boggling array of options. If you need fight pad functionality on your pro controller, this is better than the competition. For anyone outside that niche, there are better and cheaper gamepads on the market.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 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:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/SEb5dKTVfZ5EZF4fEcqdGR.png ]]></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>
                                <item>
                                                            <title><![CDATA[ 8BitDo Pro 3 review ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/8bitdo-pro-3-review/</link>
                                                                            <description>
                            <![CDATA[ My new everyday controller, despite its flaws. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ifyAnNg9BLtnbkM7627JrR</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/2ViNbtNwhhNsspHfd3k2A5-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 24 Oct 2025 16:21:45 +0000</pubDate>                                                                                                                                <updated>Thu, 26 Mar 2026 11:45:46 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/SEb5dKTVfZ5EZF4fEcqdGR.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/2ViNbtNwhhNsspHfd3k2A5-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[8BitDo Pro 3 controller]]></media:description>                                                            <media:text><![CDATA[8BitDo Pro 3 controller]]></media:text>
                                <media:title type="plain"><![CDATA[8BitDo Pro 3 controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/2ViNbtNwhhNsspHfd3k2A5-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>8BitDo has a knack for gear I'd broadly describe as 'neat'. From pleasant aesthetics, to solid ease of use, to the recent addition of tidy charging docks, my desk is currently covered in tech from the company. And that's for good reason. </p><p>My <a href="https://www.pcgamer.com/hardware/gaming-mice/8bitdo-retro-r8-gaming-mouse-review/" target="_blank">8BitDo Retro R8</a> isn't as competitively viable as the Logitech I swapped it out for, but it is more convenient. The <a href="https://www.pcgamer.com/hardware/gaming-keyboards/8bitdo-retro-mechanical-keyboard-review-c64-edition/" target="_blank">Retro mechanical keyboard</a> doesn't have rapid trigger, but it does have a few programmable keys and a solid feel. The 8BitDo Pro 3 carries on this tradition, but makes a few more compromises than its desk buddies. </p><p>The controller I've been testing comes in a purple variant, with red and green face buttons, and is very clearly inspired by the Nintendo GameCube. Looking like tech from a few decades ago is sort of 8BitDo's shtick, and 8BitDo does it better than pretty much anyone else. </p><p>The Pro 3 looks delightful, both on and off its charging stand, and that charging stand adds more than just an ornament to a room. It comes with a compartment underneath to plug in a 2.4 GHz dongle, which means, if you plug the dock into your PC, it will both charge your controller and work as your connector. Should you not want to use the dock for any reason, you can simply unplug the dongle from the bottom and pop it into your PC instead. </p><div  class="fancy-box"><div class="fancy_box-title">8BitDo Pro 3 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="vb3rnRQSPsbJRCHLbUN4c5" name="IMG_6428" caption="" alt="8BitDo Pro 3 controller next to its box, on a black desk." src="https://cdn.mos.cms.futurecdn.net/vb3rnRQSPsbJRCHLbUN4c5.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>Triggers: </strong>Linear Hall effect and non–linear micro-switch<br><strong>Thumbstick layout: </strong>Symmetrical <br><strong>Extra features: </strong>Four reprogrammable buttons, swappable face buttons, included charging dock<br><strong>Weight: </strong>242.4 g (442 g with dock)<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://www.amazon.com/Bluetooth-Controller-Switch-Programmable-Nintendo-2/dp/B0FJFVZHWF" target="_blank">$70</a> | <a data-analytics-id="inline-link" href="https://www.amazon.co.uk/8Bitdo-Pro-Bluetooth-Controller-Switch/dp/B0FFGQ6J35" target="_blank">£60</a></p></div></div><p>It's all easy to set up, with the (aesthetically matching) USB Type-C cable being the only cable you need to plug into your PC. The controller also slots into the stand with ease, thanks to curves on the base and a satisfying click to let you know it's in place. To top that all off, a light pops up at the bottom when the controller starts charging. It's all, well, <em>neat</em>. </p><p>Once off the stand, the controller is both comfortable and firm in the hands. It sits around the middle of the controller pile with its 242 g weight, and that weight is balanced well. I've played for long sessions without any discomfort, and it connects to my PC in around a second or so most of the time I take it off charge. </p><p><a href="https://www.pcgamer.com/games/fps/doom-the-dark-ages-review/" target="_blank">Doom: The Dark Ages</a>, a shooter that feels designed with controllers in mind, is easy to play, with buttons feeling smooth and the Pro 3 feeling comfortable in the hand. As a person who uses '<a href="https://www.wikihow.com/Claw-Grip-Controller" target="_blank">the claw</a>' more than I probably should, I've grown accustomed to the extra buttons next to the bumpers and on the back of the controller to move away from this habit. </p><p><a href="https://www.pcgamer.com/games/action/hades-2-review/" target="_blank">Hades 2</a> is a game that would feel wrong on a keyboard, which is lucky because it feels right on the Pro 3. The game mostly consists of well-timed dodges and spells, and the face buttons are not only satisfyingly clicky, but quick and easy to hit, too. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/a8g9UDudaabdFoGSVGQSJk.jpg" alt="8BitDo Pro 3 gaming controller on charging dock" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/KCW6r6bJNcrYtWCjxmdEG9.jpg" alt="8BitDo Pro 3 controller with charging stand" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WAuZLGbUwC9KXDhnz3JFV5.jpg" alt="8BitDo Pro 3 controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9TSfapXAm6s6JAie8SvJ74.jpg" alt="8BitDo Pro 3 controller with stand and wire" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Where the <a href="https://www.pcgamer.com/hardware/controllers/8bitdo-ultimate-2c-wireless-controller-review/" target="_blank">8BitDo Ultimate 2C</a> learns from the likes of the Switch Pro controller or Xbox Core controller in design and feel, the Pro 3 feels much closer to what Sony offers. The weight, feel, and look align it most closely with the PS3's DualShock controller. This means it can feel a little narrow if you've gotten used to a chunkier controller. I tend to go for an Xbox-style controller where possible, but the grips are rounded and textured underneath, which means I never fear it slipping out of my hand in the middle of the game. </p><p>In fact, the only real place the Pro 3 doesn't <em>feel</em> high quality in the heat of digital battle is a light rattle at the top of the controller. You really need to shake it to hear the rattle, but it's there nonetheless, and I've heard it in more animated moments.</p><p>I like that the programmable buttons next to the triggers have a distinctly different click to triggers, bumpers, and even face buttons. The bumpers provide a deep thock sound while the programmable buttons have more of a 'tink' sound. This is not only satisfying, but that distinctive difference has helped correct misclicks.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/FNFiPBLrfCkZ3EZ6s7qa8E.jpg" alt="8BitDo Pro 3 controller from the top" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xS7c5cmn4rvSRLS9P5sS95.jpg" alt="8BitDo Pro 3 controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2dFfvf8tJDM2r89ukdtsU5.jpg" alt="8BitDo Pro 3 controller" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>As well as having four reprogrammable buttons, the Pro 3 comes with a switch next to each trigger, which changes actuation. This means that, should you need to hit the trigger a lot, you can change it into a linear switch, or you can move it back to a traditional trigger for driving games. </p><p>I find the adjustable actuation of the triggers to be particularly useful in the likes of <a href="https://www.pcgamer.com/metal-hellsinger-review/" target="_blank">Metal: Hellsinger</a>, a rhythmic shooter, as spending less time pressing the triggers gives me more room to prepare for my next attack. </p><p>Unfortunately, though, the 250 Hz polling rate feels like a bit of a miss for a controller calling itself the Pro. Even the Ultimate 2C has a 1,000 Hz polling rate at half the price of the Pro 3. In return for that extra cash, you are getting a stronger build quality, a tidy stand and TMR sticks, though. However, the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">Gamesir G7 Pro</a> has a 1,000 Hz polling rate, TMR sticks, a charging stand, and comes with swappable face plates for just $10 more. </p><p>The 250 Hz polling rate is absolutely fine in single-player games, and even okay in multiplayer titles, though you are losing some competitive edge in the Pro 3. Another element that's noticeably missing is a 3.5 mm jack. You can't plug your headset into the controller, which limits headset use a tad and limits wired headset range. </p><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="Kd3J4JYVAPoZ7Z5vNd3HQJ" name="IMG_6429" alt="8BitDo Pro 3 controller with yellow ball thumbsticks" src="https://cdn.mos.cms.futurecdn.net/Kd3J4JYVAPoZ7Z5vNd3HQJ.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">Just look at those goofy spare thumbsticks </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>In the software, you can individually adjust vibration intensity in both the left and right grips. You can also adjust max actuations on the triggers. Given that the short press mode only has a single toggle button, you can't adjust actuation there.</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 controller and a display piece:</strong> Thanks to a great look and a charging dock with a light at the bottom, the Pro 3 looks lovely on a shelf or in a pair of hands. <br><br><strong>✅ You want a no-fuss controller: </strong>The Pro 3 is remarkably easy to use day to day and even easier to set up. I've gone from mouse and keyboard to controller in seconds without having to hunt down a USB cable.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if…</div><div class="fancy_box_body"><p class="fancy-box__body-text">❌ <strong>You want a competitive controller: </strong>Despite the Pro moniker, the 250 Hz polling rate means the Pro 3 will just be a little slower than its competition.<br><br>❌ <strong>You like a big controller:</strong> The Pro 3 has a rather narrow and small build. It's not unergonomic, per se, but smaller than Microsoft and Sony's current offerings.</p></div></div><p>The 20 or so hours of charge you will get out of the Pro 3 is strong, especially when you consider the stand is so pretty you will want to throw your controller on it every night anyway. I could see the argument for replaceable batteries, especially when you consider choices like TMR sticks and Hall effect triggers are intended to extend the shelf life of a controller, but even 15 hours of battery life would be perfectly fine for the Pro 3.</p><p>The box itself comes with ball-top joystick replacements in the box, which, as the name suggests, replace the traditional thumbstick with a ball. You can even take off the face buttons of the controller and replace them with more (though my box didn't have any spare). The <a href="https://www.8bitdo.com/pro3/" target="_blank">8BitDo website</a> says these ball thumbstick tops are "purely for fun", and I believe that. It's a bit of a goofy add-on, and certainly one that adds a bit of charm. </p><p>This 'fun' approach feels indicative of the 8BitDo Pro 3's ethos in general. It's got a gorgeous aesthetic and has plenty of solid choices from a hardware perspective, but it's not quite as 'Pro' as the name may lead you to believe. There are similarly priced (and some even cheaper) controllers offering more competitive specs, though pure usability is great nonetheless. </p><p>The Pro 3 will become my everyday controller thanks to how easy it is to use and how pretty it looks, but I can't help but feel I'm taking a hit to my already pretty middling competitive skills in the process. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Razer Raiju V3 Pro review ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/razer-raiju-v3-pro-review/</link>
                                                                            <description>
                            <![CDATA[ PlayStation stylings coming at a premium. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">rQ8uhNQYFLwVZWwhaozRY4</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/GwrxAaZxjxZ2HCifPmyEXP-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Thu, 23 Oct 2025 16:42:18 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/Md68GDXhupcXtwAacuPKrd.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/GwrxAaZxjxZ2HCifPmyEXP-1280-80.png">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Razer Raiju V3 Pro wireless controller seen from various angles.]]></media:description>                                                            <media:text><![CDATA[The Razer Raiju V3 Pro wireless controller seen from various angles.]]></media:text>
                                <media:title type="plain"><![CDATA[The Razer Raiju V3 Pro wireless controller seen from various angles.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/GwrxAaZxjxZ2HCifPmyEXP-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Razer has been on a tear. Not satisfied with being our top pick for <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-high-end-controller" target="_blank">the best high-end controller</a> once, they've only gone and done it again with the <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro 8K</a>. But if you're not a fan of this pad's Xbox-style asymmetric sticks and button glyphs, Razer has another 'don't worry, I've got you' offering.</p><p>Enter the <a href="https://www.pcgamer.com/hardware/controllers/razer-is-finally-giving-a-playstation-style-controller-the-full-competitive-treatment-and-its-called-the-raiju-v3-pro/" target="_blank">Raiju V3 Pro</a>, another wireless controller pitched towards the Esports scene but instead featuring symmetrical TMR sticks and PlayStation stylings. All for $220, which is $20 more than the latest iteration of the Wolverine. Sorry, <em>what</em>?</p><p>The TMR sticks contribute in part to that steep premium. For those unaware, the Hall effect is one magnetic tech that effectively banishes stick drift, and TMR (or tunnelling magnetoresistance) is another.</p><p>The difference is that the way TMR leverages its electromagnetic sensors allows the controller's sticks to pick up really minute movements, making for a level of precision above even what the Hall effect can offer. Oh, and on the Raiju V3 Pro, you can swap in a long, long thumbstick topper for even more precise movement if that's your jam (though I'm not sure it's mine).</p><div  class="fancy-box"><div class="fancy_box-title">Razer Raiju V3 Pro tech specs</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Lgw43mAi97THwt3A48PetN" name="Razer Raiju V3 Pro" caption="" alt="The Razer Raiju V3 Pro wireless controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/Lgw43mAi97THwt3A48PetN.png" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text"><strong>Compatibility:</strong> Windows, PS5<br><strong>Connectivity:</strong> USB-C, 2.4 GHz<br><strong>Ports:</strong> USB-C, 3.5 mm audio jack<br><strong>Thumbsticks:</strong> TMR<br><strong>Thumbstick layout:</strong> Symmetrical (PlayStation-style)<br><strong>Polling rate:</strong> Up to 2,000 Hz (PC), 250 Hz (PS5)<br><strong>Weight:</strong> 260 g<br><strong>Price:</strong> $220/£200</p></div></div><p>The pad's triggers and bumpers are also tuned in the name of Pro-level precision. The shoulder bumpers already serve mouse-click quickness, but the triggers can be toggled between a similarly responsive clicky mode or a more typical, fuller range of movement via corresponding flicky switches on the gamepad's underside. On top of that, you can dive into Razer's Synapse software and fine-tune the triggers' actuation point to suit you.</p><p>Alongside the typical PlayStation R1/L1 shoulder buttons and R2/L2 triggers, you also get the bonus M1/M2 clickers a little further in. These are the most pronounced of the Raiju V3 Pro's six remappable buttons.</p><p>As my first exposure to remappable back buttons was the <a href="https://www.playstation.com/en-gb/accessories/dualsense-edge-wireless-controller/" target="_blank">DualSense Edge</a>, I couldn't help but wrinkle my nose at the raised paddle shape of M buttons 3 through to 6 on first brush; on the Edge, I'm always misclicking the floating back paddles, and the alternate back button toppers that jut out even more aren't really much better in my uncoordinated grip. </p><p>However, the angle of the Raiju V3 Pro's buttons and their placement make way more sense for my grabby little hands. The shape of the M3 to M6 buttons reminds me a bit of helicopter seeds, flicking up at the outer edge end to better cradle your fingertips. It's possible to register a click at the inner part of these remappable buttons, but it's far more comfortable to click at the more raised end.</p><p>It's a small bit of smart design that felt like it genuinely reduced the number of times I misclicked one of the back buttons. Still, when clumsiness does inevitably get the better of me, it's good to know I can also disable the Raiju V3 Pro's back buttons not just via the Synapse software but also on a hardware level, too.</p><p>Yes, it's finally time to talk about what that itty bitty bespoke screwdriver in the box is all about. As a hardware writer, I already have more tiny tools than I know what to do with, but at least here you can slot Razer's screwdriver into a designated cubby within the included carry case. As to why you might want to take this tiny tool on the road with you, let me explain.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/d7EemxFsftSnTzuPtdKB4P.png" alt="The Razer Raiju V3 Pro wireless controller seen from various angles." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2PYxE6jtegUrKjQoUUb4KN.png" alt="The Razer Raiju V3 Pro wireless controller seen from various angles." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>On top of the M3, M4, M5 and M6 back buttons is a wee silicone shield. Pry this up (which is easier said than done with short nails), and a teeny tiny screw will be exposed. Unscrew this with the included screwdriver, and you can replace the raised back buttons with one of the included 'blanking slates' to smooth out the underside of your controller, should you so wish. If you'd rather not remove the back buttons, you can alternatively just press 'disable' in the Synapse software—troublesome misclicks begone!</p><p>As you might expect, there's actually a lot more besides the back buttons you can noodle with in Synapse. Let's talk about the TMR thumbsticks again: via Synapse, you can really finely tune your sticks' dead zones, as well as toggle on a setting that prevents doubling up on dead zones introduced at a software level in-game.</p><p>You can also toggle a setting that either keeps your directional movements pronounced or smoothes them out. Last but certainly not least, you can also set up a DPI-reducing sensitivity clutch for more precise aiming, say, down the sights of a sniper rifle. All of this can then be calibrated across four different on-board profiles.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YvqUZVm6gNH6tB4UwCE8TN" name="Razer Raiju V3 Pro" alt="The Razer Raiju V3 Pro wireless controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/YvqUZVm6gNH6tB4UwCE8TN.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Make no mistake, the Razer Raiju V3 Pro is an impressively customisable controller. But I'm still fairly certain that even with this snazzy bit of kit in hand, any opposing Azucena player in <a href="https://www.pcgamer.com/tekken-8-review/" target="_blank">Tekken 8</a> is still going to kick my arse.</p><p>My own skill issues aside, it's worth also mentioning that the Raiju V3 Pro offers an up to 2,000 Hz polling rate (which is only available on PC because the PS5's standard polling rate caps out at 250 Hz). I say 'up to' because, yes, you can fiddle with this in Synapse too; under 'wired polling rate,' you can choose between 250 Hz, 500 Hz, 1,000 Hz, and 2,000 Hz options.</p><p>Now, lest owners of the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-deathadder-v3-hyperspeed-review/" target="_blank">Razer Deathadder V3 Hyperspeed mouse</a> with its 8,000 Hz polling rate think they'd be getting shortchanged by this controller, let me be clear: an 8,000 Hz polling rate is frankly ridiculous—and I say this as someone who uses the Razer Deathadder V3 Hyperspeed every day.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/aMpJwgSYxJRkRjTcMB3pdN.png" alt="The Razer Raiju V3 Pro wireless controller seen from various angles." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WKWLdULbhbfk35kuvHC3AN.png" alt="The Razer Raiju V3 Pro wireless controller seen from various angles." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>A 2,000 Hz polling rate on a controller, combined with everything else you can minutely customise in the name of precision on the Raiju V3 Pro, is more than enough. Those playing at a competitive level are unlikely to find a 2,000 Hz polling rate wanting, and those who just want to, say, mash devils in <a href="https://www.pcgamer.com/games/rpg/raidou-remastered-the-mystery-of-the-soulless-army-review/" target="_blank">Raidou Remastered: The Mystery of the Soulless Army</a>, will be similarly satisfied.</p><p>But enough about what you can fiddle with—let's unplug this bad boy and actually talk about how it feels in the hands. Just for a start, I definitely like this more than <a href="https://direct.playstation.com/en-us/buy-accessories/dualsense-edge-wireless-controller?smcid=pdc:gb-en:web-pdc-accessories-dualsense-edge-wireless-controller:buttonblock-buy-now&clickref=1110lwFfnCC&emcid=ot-ps-456950" target="_blank">the similarly priced DualSense Edge</a>—though that's arguably a low bar to clear</p><p>The Razer Raiju V3 Pro is a surprisingly lightweight bit of kit, while also offering fairly robust build quality. I appreciate the included carry case, but I'm also not fretting that this controller will get chewed up in a bag without it.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="R5NkwnNnEpzugmNpXe5H5N" name="Razer Raiju V3 Pro" alt="The Razer Raiju V3 Pro wireless controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/R5NkwnNnEpzugmNpXe5H5N.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I also appreciate the symmetrical TMR sticks and the PlayStation button glyphs. The floating D-Pad and face buttons are fairly clicky on the Raiju V3 Pro, though there's some tactile resistance to each of my button presses I'm not really loving. As with the shoulder bumpers and M buttons, it's more of a mouse click.</p><p>That's great for demanding play that requires lightning-fast reactions, but I don't think it's really my cup of tea. After all, I'm not lining up play of the game headshots on the regular, I'm just over here trying to fill out my devil chart in Raidou Remastered.</p><p>Personally, I prefer how the face buttons feel on the similarly priced wireless version of the <a href="https://www.pcgamer.com/hardware/game-pads/scuf-valor-pro-review/" target="_blank">Scuf Valor Pro</a> and even the far, <em>far </em>cheaper <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">GameSir Nova Lite</a>. What can I say? I just like my face buttons to offer a little more THOK. Sure, there's no accounting for taste, but if you're also not a fan of mouse-style clicks on a controller, then the Raiju V3 Pro may not be for you.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZaRmvsrGpRVwqekW6tYE6P" name="Razer Raiju V3 Pro" alt="The Razer Raiju V3 Pro wireless controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/ZaRmvsrGpRVwqekW6tYE6P.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>On the subject of controller comparisons, the Valor Pro is a heavier bit of kit than the Razer Raiju V3 Pro, but I prefer the heftier, more ergonomic handles on the Scuf. Both controllers feature textured non-slip grips too, but in two different flavours: If you're after a subtle, totally unobtrusive texture under your palms and forefingers, the Raiju V3 Pro has got you covered; If you like a rugged, almost tractor tyre track vibe mostly localised to your palms, then you'll love the Valor Pro.</p><div  class="fancy-box"><div class="fancy_box-title">buy if…</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>✅ You want a deeply customisable pro controller:</strong> Though this works great out of the box, there are lots of settings to noodle with in the Razer Synapse software. You can also entirely remove four of the six remappable back buttons—neat!<br><br><strong>✅ You want a pro controller you can use on both your PC plus your PS5:</strong> The Razer Raiju V3 Pro can be used on either your rig or Sony console—just don't forget to flick the switch on the controller's underside before you connect.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">don't buy if…</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>❌ You have a strict budget:</strong> Even our favourite high-end controller, the Razer Wolverine V3 Pro 8K PC, is cheaper than this.</p></div></div><p>Scuf's Pro controller also comes with removable back buttons and blanking slates too, though the process of removing them requires more scrabbling around with just your nails—unfortunately, there's no bespoke screwdriver to be found there. Otherwise, the wireless Scuf Pro Valor is another sturdy controller pitched towards competitive play <a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-wireless-steel-gray?utm_source=Skimbit%20Ltd._10078&utm_medium=affiliates&utm_campaign=1897353_Online%20Tracking%20Link_&utm_content=scuf&clickid=QaKx3bWfjxycTh7zFWyZ4WU4UkpU0cUcC18%3Axw0&utm_coupon=&irgwc=1" target="_blank">for $30 less</a> than the Razer Raiju V3 Pro. Scuf also offers interchangeable faceplates and more colourways besides just black and white.</p><p>Mind you, if you're already in the market for a pricey pro controller and you're not fussed about the Raiju's specifically PlayStation layout, there's always the previously mentioned Razer Wolverine V3 Pro 8K PC. Featuring Xbox-style asymmetric sticks and face button glyphs, you're also getting a ridiculous 8,000Hz polling rate—but<a href="https://www.razer.com/gaming-controllers/razer-wolverine-v3-pro-8k-pc/RZ06-05540100-R3U1?irclickid=2sf2atRLDxycUPNUl8VA22RPUkpU0ZzUC18:xw0&irgwc=1&utm_source=Future%20PLC.&utm_medium=affiliate&utm_content=221109&utm_term=Future%20PLC.&utm_sharedid=pcg-gb&cid=Future%20PLC.-affiliate" target="_blank"> for $20 less</a> than the Raiju V3 Pro.</p><p>As a filthy console convert myself, I do think it's a bit of a shame that a pro controller with PlayStation-stylings doesn't feature in our <a href="https://www.pcgamer.com/best-controller-for-pc-gaming" target="_blank">best PC controller</a> guide—but the Razer Raiju V3 Pro isn't going to change that. I just keep coming back to that $220 price tag. As nice as it is that I can use this controller on both my PC and my PS5, most of my Steam games default to Xbox-style button glyphs within the UI.</p><p>Again, this probably speaks more to my far-from-toned muscle memory, but this disconnect between what I'm seeing in-game and what's on my controller adds more of a delay to punishing my opponents than I'd like. Alas, trounced by an Azucena player <em>again</em>.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Razer is finally giving a PlayStation-style controller the full competitive treatment and it's called the Raiju V3 Pro ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/razer-is-finally-giving-a-playstation-style-controller-the-full-competitive-treatment-and-its-called-the-raiju-v3-pro/</link>
                                                                            <description>
                            <![CDATA[ Pricey, but premium quality. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">QgNBYMgRqCBLkeCUUT5UUk</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/sitoBypKs7zvV4Z8YJaNK3-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 23 Oct 2025 15:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/kwSjjnBRtitBmscifdHJ7R.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/sitoBypKs7zvV4Z8YJaNK3-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Holding a Razer Raiju V3 Pro controller]]></media:description>                                                            <media:text><![CDATA[Holding a Razer Raiju V3 Pro controller]]></media:text>
                                <media:title type="plain"><![CDATA[Holding a Razer Raiju V3 Pro controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/sitoBypKs7zvV4Z8YJaNK3-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Razer has been knocking it out the park with its controller designs of late. We had the <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-review/" target="_blank">Wolverine V3 Pro</a> as our pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-high-end-controller" target="_blank">best high-end controller</a> for a short while, and now that's <a href="https://www.pcgamer.com/hardware/controllers/the-wolverine-v3-pro-is-no-longer-the-best-high-end-pc-gamepad-because-razers-been-indulging-in-some-seriously-rabid-regicide/" target="_blank">been replaced</a> by, er, another one, the <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Wolverine V3 Pro 8K PC</a>. And now Razer has launched the Raiju V3 Pro, available for purchase immediately, which looks to be a PlayStation-shaped answer to the Wolverine V3 Pro.</p><p>It's a little strange calling it the V3 Pro, because as far as I can tell there was no Raiju V2 or V2 Pro, just the original Raiju, plus an Ultimate and <a href="https://www.pcgamer.com/razer-raiju-tournament-edition-review/" target="_blank">Tournament edition</a>. </p><p>Still, I suppose it makes sense to name it V3 Pro to keep it in-line with the Wolverine V3 Pro, given it looks like it's essentially the same controller but in symmetrical PlayStation layout. It works with and is at least in part designed for use with the PS5, of course, but also for PC.</p><p>In fact, on PC it reaches up to 2,000 Hz polling, which is twice what you get with the Wolverine V3 Pro, but obviously less than what you get on the 8,000 Hz Wolverine V3 Pro 8K PC. You really don't need 8,000 Hz polling on a controller, though—heck, you don't even need it on a mouse. </p><p>1,000 Hz is usually fine, and 2,000 Hz is ideal. Moving up to 8K gives an unnoticeable performance boost but drains battery a <em>lot</em>. The Raiju V3 Pro's 2K is a nice sweet spot for a high-end 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:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="GaufBnYwLqGtz6EMKu47K3" name="IMG_0979" alt="Holding a Razer Raiju V3 Pro controller" src="https://cdn.mos.cms.futurecdn.net/GaufBnYwLqGtz6EMKu47K3.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" 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>And make no mistake, this <em>is </em>a high-end controller, with a $220/£200 price tag to suit. I had my hands on it earlier in the year at Gamescom, and can confirm it feels incredibly premium, just like the Wolverine V3 Pro. </p><p>Our Jess has had her mitts on the Raiju V3 Pro now for far longer than I did back then, and she is fairly happy with its lightness and robustness, as well as its TMR sticks, although she's not sure about the resistance felt in the button presses.</p><p>The TMR sticks are certainly a highlight here, as these should prevent stick drift, which is kind of a requirement these days on such an expensive controller. You're also getting 'HyperTriggers' that can switch between click and trigger modes and also have adjustable actuation points. Plus there are removable rear buttons (in paddle position) and claw grip bumpers, and you can even swap out the thumbstick caps.</p><p>The long and short, though, is that Razer's finally offering its high-end, premium controller design in a symmetrical PlayStation layout. I personally enjoy the asymmetrical Xbox-style layout, but I know there are plenty of people—lots of Rocket Leaguers, for instance—who prefer the opposite. So this one's for them.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Scuf Valor Pro review ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/game-pads/scuf-valor-pro-review/</link>
                                                                            <description>
                            <![CDATA[ When Scuf design meets Razer pricing. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">4L7J8j3bhNHfuaSsQ4C9WX</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/baY5oTU8rfV2RJ4hbe8H88-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Wed, 22 Oct 2025 10:01:38 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/Md68GDXhupcXtwAacuPKrd.jpg ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/baY5oTU8rfV2RJ4hbe8H88-1280-80.png">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Scuf Valor Pro wireless controller seen from various angles.]]></media:description>                                                            <media:text><![CDATA[The Scuf Valor Pro wireless controller seen from various angles.]]></media:text>
                                <media:title type="plain"><![CDATA[The Scuf Valor Pro wireless controller seen from various angles.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/baY5oTU8rfV2RJ4hbe8H88-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The wireless version of the Scuf Valor Pro is finally here, offering everything we loved about the wired version, just minus the wire and all of its tangle potential. That means I'm gonna award this a high score, and we can all go home early, right? Unfortunately, even without a wire, the Scuf Valor Pro controller still gets in its own way.</p><p>Don't misunderstand, everything our Jacob loved in his <a href="https://www.pcgamer.com/hardware/controllers/scuf-valor-pro-review/" target="_blank">wired Scuf Valor Pro review</a> is here too—just at a much higher price point. Whereas the wired version of this controller will <a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-smoke?utm_source=Skimbit%20Ltd._10078&utm_medium=affiliates&utm_campaign=1897353_Online%20Tracking%20Link_&utm_content=scuf&clickid=QaKx3bWfjxycTh7zFWyZ4WU4UkpyZ3XcC18%3Axw0&utm_coupon=&irgwc=1" target="_blank">set you back $100</a>, this wireless update is <a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-wireless-steel-gray" target="_blank">asking just shy of $190</a>. Offering 'Tri-mode connectivity' for your PC, Xbox, and Bluetooth devices, it's not just the wireless functionality pushing the price uncomfortably close to 200 big ones, but new asymmetric TMR thumbsticks too.</p><p>Utilising magnetism like the Hall effect, TMR (tunnelling magnetoresistance) also offers the same longevity and effective banishment of stick drift. However, TMR is far more sensitive than the Hall effect, with the electromagnetic sensors able to pick up far slighter stick movements for an even greater level of precision—so, <em>that's </em>what you're paying a premium for.</p><p>However, unless you're a picky pro player, I'd argue Hall effect sticks will still suit most. Even so, as Jacob notes in his <a href="https://www.pcgamer.com/hardware/controllers/scuf-valor-pro-review/" target="_blank">wired Scuf Valor Pro review</a>, outside of some very specific genre examples like fighting games, the tippy top of esports still has a demonstrable preference for keyboard and mouse controls. So, who is the Scuf Valor Pro wireless controller <em>for</em>? Arguably, a filthy console convert like me.</p><div  class="fancy-box"><div class="fancy_box-title">Scuf Valor Pro wireless specs</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="E2vossDMETWg3UJGUt5K78" name="Scuf Valor Pro wireless controller" caption="" alt="The Scuf Valor Pro wireless controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/E2vossDMETWg3UJGUt5K78.png" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text"><strong>Compatibility:</strong> Xbox, Windows, Android<br><strong>Connectivity: </strong>USB-C, 2.4 GHz, Bluetooth<br><strong>Ports: </strong>USB-C, 3.5 mm audio jack<br><strong>Thumbsticks:</strong> TMR<br><strong>Thumbstick layout: </strong>Asymmetric (Xbox-style)<br><strong>Weight: </strong>260 g<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-wireless-steel-gray" target="_blank">$190</a>/ <a data-analytics-id="inline-link" href="https://www.scufgaming.com/uk/en/p/scuf-valor-pro-wireless-steel-gray-eu" target="_blank">£180</a></p></div></div><p>In fact, I may like this even more than the <a href="https://www.playstation.com/en-gb/accessories/dualsense-edge-wireless-controller/" target="_blank">DualSense Edge</a>. Sony's similarly customisable pro effort also doesn't justify its shocking asking price, not even offering Hall effect sticks in this here year of our gourd, 2025. It also gave me a perhaps unearned dislike of remappable back buttons. On the Edge, I feel all thumbs with the default floating paddle shape of its back buttons. You can swap these out for a design that juts out, only serving to make me feel even more uncoordinated.</p><p>Oh, and the rubberised palm grips on my Edge have gone all bubbly too. Maybe my sweaty mitts harbour a uniquely corrosive quality, but the palm grips are already coming unstuck from the controller body after only a couple of years of heavy use. Add to that how I seem to always be needing to charge the blooming thing, and <a href="https://direct.playstation.com/en-us/buy-accessories/dualsense-edge-wireless-controller?smcid=pdc:gb-en:web-pdc-accessories-dualsense-edge-wireless-controller:buttonblock-buy-now" target="_blank">how's that for nearly $200</a>? For that kind of money, you can get slightly less detailed haptics plus Hall effect sticks <em>and </em>triggers in the <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-review/" target="_blank">Razer Wolverine V3 Pro</a>.</p><p>So, how does Scuf's effort stack up against that point of comparison? Feeling a bit heavier than the Edge, the Valor Pro doesn't just deftly trick my brain into going 'Oo, premium,' it also has the good sense to back it up with quality construction and ergonomic design.</p><p>Just for starters, the rubber palm grips are ruggedly textured to ensure this controller won't slip out of even the sweatiest of mitts. The contour of this controller leading from these grips and into the main controller body feels flush too, making me fairly confident these textured palm wrests aren't going to make a break for it any time soon.</p><p>And for another, the wireless Valor Pro's battery life alone puts it head and shoulders above the DualSense Edge. The 2.5 GHz mode served me well through a weekend of devil summoning and playing detective in <a href="https://www.pcgamer.com/games/rpg/raidou-remastered-the-mystery-of-the-soulless-army-review/" target="_blank">Raidou Remastered: The Mystery of the Soulless Army</a> straight out of the box.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/o8bhky3ZjwG96rdZaCB3B8.png" alt="The Scuf Valor Pro wireless controller seen from various angles." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/idaudyNvSXmoJSfwLExaA8.png" alt="The Scuf Valor Pro wireless controller seen from various angles." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The Scuf Valor Pro also enjoys the same ergonomic silhouette that saw its predecessor slot in so neatly as our top pick for <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">the best wired controller</a>. Besides hefty hand grips making this an exceptionally comfortable controller to hold through hours of play, the angle of approach into the Valor Pro's back buttons makes way more sense for my grabby little raccoon hands.</p><p>Not only do you have two elegant little flippers to hook your middle fingers around, but you also have two additional clicky buttons nearby. My review unit came with lightly textured button covers featuring an angular, raised profile. I enjoyed the tactility of these slightly pointy buttons, especially as they're pronounced enough to easily find without also resulting in constant misclicks. But, as I fidget through long play sessions, the same cannot be said for the nearby side-paddles.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="DnUeJY5FfhmNfCBQqkPR98" name="Scuf Valor Pro wireless controller" alt="The Scuf Valor Pro wireless controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/DnUeJY5FfhmNfCBQqkPR98.png" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/DnUeJY5FfhmNfCBQqkPR98.png' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Thankfully, it's easy enough to remap these—I may be constantly misclicking, but I might as well map it to something useful. You can't create bespoke button layouts, but rather 'mirror' existing inputs across three different button layout profiles. So, rather than accidentally skipping through important dialogue in Raidou Remastered: The Mystery of the Soulless Army, I can set that right underside paddle to bring up the log to ensure there's nothing I've missed instead (devil summoning is serious business, after all).</p><p>It's really easy to either plug your controller in and do this via the very basic <a href="https://apps.microsoft.com/detail/9n6xj7k1k9jn?hl=en-US&gl=GB" target="_blank">companion app</a>, or adjust it via the controller alone (it's also super simple to <a href="https://www.youtube.com/watch?v=oTUHCvEZ6EU&t=29s" target="_blank">disable the bonus backside paddles</a> and <a href="https://www.youtube.com/watch?v=tj66OdSW2To&t=20s" target="_blank">replace the pointy underside buttons with the inert blanking plates</a> included in the box). Unlike with the <a href="https://www.pcgamer.com/hardware/controllers/scuf-envision-pro-review/" target="_blank">Scuf Envision Pro</a> at launch, there's no annoying iCue software integration here, and the Valor Pro works great right out of the box. That said, though not required for setup, its respective companion app is mercifully streamlined and straightforward to use.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cnJncWnkSUJTifGKfL6y78" name="Scuf Valor Pro wireless controller" alt="The Scuf Valor Pro wireless controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/cnJncWnkSUJTifGKfL6y78.png" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/cnJncWnkSUJTifGKfL6y78.png' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Both the standard buttons and the back paddles are pleasingly clicky, though I'm particularly taken with the shoulder bumpers and triggers. For one thing, the triggers offer two levels of resistance you can flick between via a couple of corresponding switches on the controller's underside. For another, the bumpers have an elongated design that drapes over the controller's outermost corners, ensuring they're always in reach for smaller hands—stubby digit squad, represent!</p><p>Speaking of features that feel kind to your hands, my <a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-wireless-steel-gray" target="_blank">Steel Gray Valor Pro</a> review unit features an almost velvet-y finish, rather than the chilly plastic veneer of the Edge. This does show up finger smears like nobody's business, though thankfully, your palms will cover the worst of your greasy sins.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hQSDma7GS7erXjUT2PZPVE" name="Scuf Valor Pro wireless on blue 8 - face off (1)" alt="The Scuf Valor Pro wireless controller seen with the magnetic faceplate removed and laid beside it." src="https://cdn.mos.cms.futurecdn.net/hQSDma7GS7erXjUT2PZPVE.png" mos="" align="middle" fullscreen="1" width="1920" height="1080" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/hQSDma7GS7erXjUT2PZPVE.png' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>But on the subject of faceplates, the Valor Pro's can be swapped out for something a little more colourful, as with Scuf's other controllers (but the sold separately Valor Pro specific faceplates weren't yet live on Scuf's website at the time of writing). As it's held in place magnetically, popping off the faceplate is a doddle, and also allows you to noodle around with the long, long, analogue stick that Jacob was so taken with in his review (though I'm less convinced it has much application in devil summoning <em>or </em>slaying).</p><p>Customisability is a major selling point for Scuf's controllers, and I'm impressed by how sturdy this bit of kit feels while also offering a number of composite parts that are easy to switch out.</p><p><a href="https://www.scufgaming.com/us/en/configurator/p/505-178-05-015-000/valor-pro-builder?options=505-718-01-001-000,505-178-05-001-000,505-247-01-050-000,505-104-01-001-000,505-104-01-001-000,505-560-01-001-000,505-560-01-001-000,505-716-01-001-000,505-786-01-001-000,505-403-01-001-000,505-178-05-015-999&step=Faceplate" target="_blank">Scuf also offers lots of options for styling your own Valor Pro</a> from the ground up. You can pick from some intense single colourway faceplates in black, orange, red, blue, and green, or you can go for a number of obnoxious patterns. Even more egregious, those patterned designs cost $10 more, with creator collaboration faceplates adding $20 on top of what is already a pretty pricey wireless controller. Sometimes a garish bit of kit is fun, and sometimes I enjoy the option of a slightly more tasteful pastel—is that so wrong?</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/5tzZtBguFbvGt53nQmaJ78.png" alt="The Scuf Valor Pro wireless controller seen from various angles." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TcUHuZXxN6rXAzi8szh598.png" alt="The Scuf Valor Pro wireless controller seen from various angles." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FHnJGkggE7s7CsjgkVjT78.png" alt="The Scuf Valor Pro wireless controller seen from various angles." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Anyway, matters of taste aside, let's return to the subject of pricing. Without snazzy styling, you're still paying almost $200 for this wireless controller. For as much as I like the Scuf Valor Pro wireless controller, that seems ludicrous to me—especially as that touted Tri-mode connectivity isn't as far ranging as I'd like.</p><p>While my PC can detect the Valor Pro over Bluetooth and even connect, I found my inputs wouldn't register—even after I double checked the controller's firmware was up to date via the companion app. I didn't have this issue if I connected the controller to my ageing Samsung Galaxy A52s, though. It turns out the controller's Bluetooth mode isn't technically intended for desktop use. <a href="https://customercare.scufgaming.com/hc/en-us/articles/32817286660753-How-to-Connect-to-Xbox-and-PC-with-Valor-Pro" target="_blank">To quote the company's own help pages</a>, "SCUF recommends users to use a wired or low-latency wireless connection when playing on PC. Additionally, SCUF recommends using a Bluetooth connection when using your controller with mobile devices."</p><div  class="fancy-box"><div class="fancy_box-title">Buy if…</div><div class="fancy_box_body"><p class="fancy-box__body-text">✅ <strong>Comfort matters to you: </strong>The handles here are hefty but feel great in your palm. Add to that ruggedly textured non-slip grips, and the Valor Pro will comfortably see you through many hours of gaming.<br><br>✅ <strong>You're big on customisation:</strong> It's easy peasy to set up mirrored button inputs and swap out the magnetic faceplates. It takes a bit more welly to pop off the thumbstick toppers and back buttons, but it's no less neat.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if…</div><div class="fancy_box_body"><p class="fancy-box__body-text">❌ <strong>You really want a Bluetooth PC controller (for some reason):</strong> Though great on your phone, your PC may not even register the Valor Pro inputs over Bluetooth. Plugging in the 2.4 GHz dongle is the way to go for wireless gaming here.<br><br>❌ <strong>You're on a tight budget: </strong>This wireless controller costs almost $200 even before you get lost in the weeds of snazzy faceplates or Scuf's smorgasbord of customisation options.</p></div></div><p>While I like the Valor Pro's 2.4 GHz mode, I would've also enjoyed the opportunity to reclaim one of my PC's USB ports from yet another dongle. To be fair to Scuf, Bluetooth is hardly the most ideal connection for a wireless controller anyway, as this tends to come with the baggage of much higher latency compared to 2.4 GHz mode—neither the previously mentioned Razer Wolverine V3 Pro nor our latest top pick for the best high-end controller, the <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro 8K PC</a>, even offers a Bluetooth mode.</p><p>With all of that in mind, it makes sense for Scuf to deprioritise the Valor Pro's Bluetooth connection on PC. However, as I'm personally not deep into any kind of competitive scene, I am disappointed that there isn't a better Bluetooth mode for a bit of empty-headed devil mashing.</p><p>Before this funky, chunky pad waltzed across my desk, my go-to PC controller was the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">GameSir Nova Lite</a>. Costing only $25 on a bad day, it still offers Hall effect sticks and remains our budget champion for more good reasons besides. That said, there's no ignoring its cheap and cheerful construction. Besides how cheap it feels in the hand, it also doesn't even feature a 3.5 mm jack, and, for one other cost-cutting thing, its nine-hour battery life also leaves much to be desired.</p><p>The Valor Pro is a treat to have and to hold. Indeed, Scuf may yet put out a faceplate I just <em>have </em>to have, but if it were my money on the table, I'd still be happy enough with GameSir's budget Hall effect controller…now, if only <em>that </em>came in other colours besides white and a 'dark purple' that's giving 'navy' rather than 'grape'.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The Wolverine V3 Pro is no longer the best high-end PC gamepad, because Razer's been indulging in some seriously rabid regicide ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/the-wolverine-v3-pro-is-no-longer-the-best-high-end-pc-gamepad-because-razers-been-indulging-in-some-seriously-rabid-regicide/</link>
                                                                            <description>
                            <![CDATA[ All hail the new king. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LqdZk2nfSN7wc5GDsztDjS</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/43mYXCSSN6cu8RnYj3ZXe-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 21 Oct 2025 16:10:34 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/SEb5dKTVfZ5EZF4fEcqdGR.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/43mYXCSSN6cu8RnYj3ZXe-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Razer Wolverine V3 Pro 8K Pro controller on a light blue background]]></media:description>                                                            <media:text><![CDATA[Razer Wolverine V3 Pro 8K Pro controller on a light blue background]]></media:text>
                                <media:title type="plain"><![CDATA[Razer Wolverine V3 Pro 8K Pro controller on a light blue background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/43mYXCSSN6cu8RnYj3ZXe-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>After less than a month on top, the <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-review/" target="_blank">Razer Wolverine V3 Pro</a> has been dethroned as the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-high-end-controller" target="_blank">best high end controller for PC</a> gaming. That's because the <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro <strong>8K PC</strong></a> came out and won the tussle of the controllers. </p><p>The Wolverine V3 Pro 8K PC takes what we like about the standard V3 Pro, adds an 8,000 Hz polling rate, as well as TMR thumbsticks, and comes in at the exact same price. If you play on PC, and have the $200 spare to afford it, the V3 Pro 8K PC is a no-brainer. </p><p>At 220 g, it's a bit lighter than you might expect (being around 60 g less than the Xbox wireless controller) but that doesn't mean it's not sturdy. Our Alex says this controller is "solid all over" and praises the texture grips and great build quality. </p><p>That's not all Razer's latest has going for it though. It comes with programmable buttons, plus a sequence of back paddles, and the triggers can be adjusted to swap travel distance. If you like a long press from your triggers, flip it one way. If you want to click as quick as possible, flip it the other way. </p><p>All of these little customization options, paired with Razer Synapse 4, makes this controller super adjustable and the super high polling rate can give you a real competitive advantage. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/NMvRW26STV4JNKbZMUCHc.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QBL7vmKU3KthS3BpCcA4b.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/edueCsE9Y5aUq9rAWL4ec.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/7vRdHtZVSKG3ote8QmNZb.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LpnJhFnNExiSb9fbCdvic.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Unfortunately, this model is missing Bluetooth (which the V2 Pro has) so you need to plug in the 2.4 GHz dongle for wireless play, but it does come with a long braided USB and a carry case in the box. And the PC-specific focus means the lack of the higher latency Bluetooth connection really isn't a thing.</p><p>There are some instances where the V3 Pro is a better shout, however. For instance, the 8K PC version of the controller doesn't come with Xbox wireless compatibility. If you want something for both your PC and Xbox, the slightly older model would be the best choice. For pure PC gamers though, the Wolverine V3 Pro 8K PC variant blows the standard V3 Pro out of the water. </p><p>If you want something a little less expensive, our top pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming" target="_blank">best controller for PC gaming</a> is the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">Gamesir G7 Pro</a> and we reckon the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">Gamesir Nova Lite</a> is the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-budget-controller" target="_blank">best budget controller for PC.</a> There's plenty to choose from at different price points. </p><h2 class="article-body__section" id="section-the-quick-list"><span>The quick list</span></h2><h2 class="article-body__section" id="section-the-best-controller-for-pc-gaming"><span>The best controller for PC gaming</span></h2>        <div class="featured_product_block featured_block_hero" data-id="36adc1d4-ddb4-497c-a5f7-c90d65cbd0f6">            <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-overall-controller" data-model-name="GameSir G7 Pro" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/nXGsz96GjK5oXnLhtZ9Qxj.png" alt="The Gamesir G7 Pro Tri-Mode on a red background"><span class='featured__label hero__label'>Best overall</span></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                                                                <div class="featured__title">1. GameSir G7 Pro</div>                                <div class="stars__reviews"><span itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating" class="chunk rating"><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star half"></span><meta itemprop="bestRating" content="100.0" /><meta itemprop="worstRating" content="0.0" /><meta itemprop="ratingValue" content="85" /></span></div>                </div>                <div class="subtitle__description">                                                            <p><p><em><strong>The best overall</strong></em></p><p>This little feature-packed beast dethroned the Xbox controller, and for good reason. It offers a great feel, strong connectivity, won't get stick drift, and it's only slightly more expensive than the Microsoft-made controller it beats.</p><p><a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-overall-controller" target="_blank"><strong>Read more</strong></a></p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="daf6c589-a2a3-44c4-a8b9-a3c5d21d67a7">            <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-budget-controller" data-model-name="GameSir Nova Lite" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/duqNVtmVU37AoqF5Jt4NrZ.jpg" alt="GameSir Nova Lite game controller against a coloured background"><span class='featured__label hero__label'>Best budget</span></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                                                                <div class="featured__title">2. GameSir Nova Lite</div>                                <div class="stars__reviews"><span itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating" class="chunk rating"><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star"> </span><meta itemprop="bestRating" content="100.0" /><meta itemprop="worstRating" content="0.0" /><meta itemprop="ratingValue" content="80" /></span></div>                </div>                <div class="subtitle__description">                                                            <p><p><em><strong>The best budget</strong></em></p><p>You don't need to spend a fortune to get your hands on a great controller. The Nova Lite is as affordable as they come, wireless, and even sports Hall effect thumbsticks as part of the bargain. </p><p><a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-budget-controller" target="_blank"><strong>Read more</strong></a></p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="9b7c23ac-909b-4fdb-a655-3191a869e60a">            <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-high-end-controller" data-model-name="Razer Wolverine V3 Pro 8K PC" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/URLwASCmGFx825jHGDaPkd.png" alt="An image of a Razer Wolverine V3 Pro 8K gaming controller against a blue background"><span class='featured__label hero__label'>Best high end</span></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                                                                <div class="featured__title">3. Razer Wolverine V3 Pro 8K PC</div>                                <div class="stars__reviews"><span itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating" class="chunk rating"><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star half"></span><meta itemprop="bestRating" content="100.0" /><meta itemprop="worstRating" content="0.0" /><meta itemprop="ratingValue" content="93" /></span></div>                </div>                <div class="subtitle__description">                                                            <p><p><em><strong>The best high end</strong></em></p><p>Razer's latest Wolverine is the best version yet, thanks to the Hall effect thumbsticks and triggers, plus some super-clicky face buttons. It's very expensive, but it feels every bit as premium as you'd expect.</p><p><a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-high-end-controller" target="_blank"><strong>Read more</strong></a></p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="d26478e5-07e1-4c90-8105-71e35d250fa7">            <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" data-model-name="Scuf Valor Pro" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/wdF4RVET93PBDEechagE5B.jpg" alt="The Scuf Valor Pro wired controller on a yellow background"><span class='featured__label hero__label'>Best wired</span></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                                                                <div class="featured__title">4. Scuf Valor Pro</div>                                <div class="stars__reviews"><span itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating" class="chunk rating"><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star half"></span><meta itemprop="bestRating" content="100.0" /><meta itemprop="worstRating" content="0.0" /><meta itemprop="ratingValue" content="87" /></span></div>                </div>                <div class="subtitle__description">                                                            <p><p><em><strong>The best wired</strong></em></p><p>Superb build quality, excellent ergonomics, Hall effect thumbsticks, and a whole host of performance-enhancing features make the Scuf Valor Pro a shoo-in for this spot. Hope you don't mind the cable, though.</p><p><a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank"><strong>Read more</strong></a></p></p>                </div>                            </div>        </div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Razer Wolverine V3 Pro 8K PC review ]]></title>
                                                                                                                                                                                                <link>https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/</link>
                                                                            <description>
                            <![CDATA[ The best PC games controller (a lot of) money can buy. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">BaFrxHSB5qRGpjb9Atp5CG</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/NMvRW26STV4JNKbZMUCHc-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 13 Oct 2025 10:46:10 +0000</pubDate>                                                                                                                                <updated>Mon, 13 Oct 2025 11:40:24 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Alex Blake ]]></dc:creator>                                                                <dc:description><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7jcW9wutWh3zLjfXJDE3T.png ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/NMvRW26STV4JNKbZMUCHc-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Razer Wolverine V3 Pro 8K Pro controller on a light blue background]]></media:description>                                                            <media:text><![CDATA[Razer Wolverine V3 Pro 8K Pro controller on a light blue background]]></media:text>
                                <media:title type="plain"><![CDATA[Razer Wolverine V3 Pro 8K Pro controller on a light blue background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/NMvRW26STV4JNKbZMUCHc-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>With each iteration, Razer seems to take its Wolverine gaming controller to new heights. The V2 Pro was a step up over the original, while the V3 Pro repeated the trick, ending up as one of the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best PC controllers</a> money can buy. Now Razer has found a way to improve on near-perfection with the wordily named <a href="https://www.razer.com/gaming-controllers/razer-wolverine-v3-pro-8k-pc?srsltid=AfmBOopto2NhIBTUCZNBDDIHtfLvV9XGBrHT066dN_-XKWJPnNtg3s7b" target="_blank">Wolverine V3 Pro 8K PC</a>. If you've got the cash for it as a PC gamer, it should be top of your list.</p><p>Let's start with the build, which is sturdy and solid all over. The edge of each hand grip is coated in a dimpled, textured surface that helps it stay firmly lodged in the palm of even the sweatiest neckbeard. The durable construction should last you years of gaming, but Razer has included a robust carrying case in the box, just in case.</p><p>To top it off, the controller's weight has been significantly reduced compared to the previous Wolverine V3 Pro, and it now sits at 220g, down from 304g—a 28% reduction. If you enjoy your fair share of marathon gaming sessions, you're not going to feel weighed down here.</p><p>Almost every element of the Wolverine V3 Pro 8K PC is decked out in a matte black finish, with a few gloss highlights thrown in for good measure. It feels classy in an understated way, like it means business and it knows it. There's absolutely no RGB anywhere to be found—while it's definitely not the most exciting visual spectacle, it should at least help battery life.</p><div  class="fancy-box"><div class="fancy_box-title">Wolverine V3 Pro 8K PC 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="CwjEYNLXx7nYyEjUF2wjc" name="Razer Wolverine V3 Pro 8K PC 9" caption="" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" src="https://cdn.mos.cms.futurecdn.net/CwjEYNLXx7nYyEjUF2wjc.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, Windows 11<br><strong>Connectivity:</strong> Razer Hyperspeed Wireless via included dongle, wired<br><strong>Ports:</strong> USB-C<br><strong>Thumbsticks:</strong> TMR (Tunnel Magnetoresistance)<br><strong>Thumbstick layout:</strong> Asymmetric<br><strong>Polling rate:</strong> Up to 8,000 Hz<br><strong>RGB lighting?</strong> No<br><strong>Battery life:</strong> 20 hours (1,000 Hz polling)<br><strong>Carrying case?</strong> Yes<br><strong>Weight:</strong> 220 g <br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://www.razer.com/gaming-controllers/razer-wolverine-v3-pro-8k-pc/RZ06-05540100-R3U1" target="_blank">$200</a> | <a data-analytics-id="inline-link" href="https://www.razer.com/gb-en/gaming-controllers/razer-wolverine-v3-pro-8k-pc/RZ06-05540100-R3M1" target="_blank">£180</a> | $330AUD</p></div></div><p>Speaking of which, Razer says you should get about 20 hours of juice out of this controller. I tested it for a couple of hours each night over the course of a week, and after 10 hours of gameplay, its battery level had dropped from 68% to 37%. Based on that, I'd expect you to get plenty more than the advertised 20 hours, which is encouraging. Note that I was mostly using the 1,000 Hz polling rate—ramping it up to 8,000 Hz will drain the battery faster.</p><p>One upgrade over the V3 Pro is that 8,000 Hz HyperPolling rate, which is eight times higher than the 1,000 Hz rate on the regular Wolverine V3 Pro. You'll need to enable it in Razer's Synapse app, but this feature will be a godsend for pro gamers (and decidedly more amateurish ones like me). Importantly, it works in both 2.4 GHz and wired modes, so you can take advantage whether you prefer to play cable-free or not.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/LThLVdCUAKtfWZPShC7Ud.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qNk9j8DawGx3mK24pzDea.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9cCmF2MeRTRoqGEfeVgVa.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QBL7vmKU3KthS3BpCcA4b.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/7vRdHtZVSKG3ote8QmNZb.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/37u73wiqVwyeN5W7TyxQa.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Another new feature is the addition of Tunnel Magnetoresistance (TMR) in the thumbsticks. This is essentially like an enhanced version of the Hall effect tech that's been making its way into controllers and keyboards in recent years, and that Razer used in the previous <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-review/" target="_blank">Wolverine V3 Pro</a>. It uses electromagnetic waves to actuate each thumbstick so there's no physical contact going on. What that means in layman's terms is that stick drift should be all but eliminated. Combined with the top-end build quality, you shouldn't need to worry about having to replace this controller any time soon.</p><p>Razer has included a pair of dual-mode triggers (dubbed HyperTriggers), which can either operate in standard analog or clicky rapid-fire modes. The travel distance is set using a switch on the back of the controller; handily, each trigger can be tweaked individually. This is an excellent feature, and when used well, feels like it gives you an edge in split-second moments.</p><p>That said, the triggers use Hall effect tech rather than TMR. It's not much of a ding against Razer considering how good Hall effect triggers can be, but it's worth noting.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/NMvRW26STV4JNKbZMUCHc.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4eSvuwTwM449vVcJ3Mnyd.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/43mYXCSSN6cu8RnYj3ZXe.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/edueCsE9Y5aUq9rAWL4ec.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4iGZ3qrfveDtRetYucWee.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LpnJhFnNExiSb9fbCdvic.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Around the back are four customizable buttons that can be remapped to either a controller function (such as a sensitivity clutch or a thumbstick button) or to pretty much any keyboard key or combination you desire. There are two more remappable buttons lodged beside the triggers for extra options. In practice, I found the lower set of rear bumpers the easiest to reach, but I can't complain about having so many choices.</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 a pro gamer: </strong>With an 8,000Hz polling rate, an extensive range of adjustable buttons, and the latest TMR tech in the thumbsticks, this controller is for serious gamers.<br><br>✅ <strong>You want something that will last years: </strong>The solid build quality and protective carrying case should keep the Wolverine V3 Pro 8K PC safe and sound for the foreseeable future.<br><br>✅ <strong>You need a ton of customization options:</strong> Between Razer Synapse 4, the onboard trigger locks, and the remappable buttons, there's a lot of room to tweak this controller to your liking.</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 need all that tech:</strong> There are plenty of superb controllers available for way less cash that will do just as good a job for casual gamers.<br><br><strong>❌ </strong> <strong>You're on a budget</strong> Sure, this controller has seen a $20 price cut versus its predecessor, but Razer's still asking for a lot of cash.<br><br><strong>❌ </strong> <strong>You want a controller for console or mobile: </strong>With no console support or Bluetooth connectivity, this is a PC-only affair.</p></div></div><p>Adjusting those remappable buttons is straightforward in Razer's Synapse 4 app. This also allows you to change the polling rate, switch the D-pad from eight-way to four-way directional control, adjust thumbstick sensitivity in granular detail, and more. As far as gaming companion apps go, it's a fairly seamless experience.</p><p>That's not the end of the adaptability. The carrying case includes two extra thumbsticks: one taller concave stick and one shorter domed stick. Swapping these out is as easy as lifting off the old stick and popping the new one in its place. We would have preferred two of each kind in case you want to revamp the controller's thumbsticks in a more extensive way. As it is, you have to settle for one of each.</p><p>The Wolverine V3 Pro 8K PC isn't without its flaws. As the name implies, it only works with PCs – gone is the Xbox compatibility from the V3 Pro (and you can forget about connecting it to a PlayStation 5, tablet or smartphone). It also lacks the haptic feedback of the V3 Pro, perhaps in a quest to cut down the weight. And although its ABXY buttons are now made from PBT, they feel a touch heavy to press for my liking.</p><p>Razer has also cut the price of the controller in the UK from £200 to £180 compared to the V3 Pro, though it's still seemingly the same price in the US whether you go for the 8K PC or standard V3 Pro. While that is a very welcome development, this is still a very pricey accessory, and you'll need to think hard about whether you actually need it before pulling the proverbial trigger. Its price may bring a bead of sweat to your brow, but at least you know you're getting one of the best PC games controllers that money can buy.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
            </channel>
</rss>